Add asserts in existing code

This commit is contained in:
Steins7 2024-04-20 15:43:17 +02:00
parent a20acf4031
commit e47ec840b8
4 changed files with 52 additions and 3 deletions

27
srv/assert.h Normal file
View File

@ -0,0 +1,27 @@
/** @file assert.h
* Module providing assert macro
*
* The module implements the assert macro intended to allow catching critical
* issues during debug while having no influence in the release code
*/
#ifndef _ASSERT_H_
#define _ASSERT_H_
//--includes--------------------------------------------------------------------
#include "debug.h"
//--type definitions------------------------------------------------------------
//--functions-------------------------------------------------------------------
#if ASSERT
#define assert(condition) _assert
#else
#define assert(condition) do {} while (0)
#endif
#endif //_ASSERT_H_

View File

@ -8,6 +8,7 @@
//--includes-------------------------------------------------------------------- //--includes--------------------------------------------------------------------
#include "dma_cbuf.h" #include "dma_cbuf.h"
#include "error.h"
//--local definitions----------------------------------------------------------- //--local definitions-----------------------------------------------------------
@ -31,7 +32,9 @@ void dma_cbuf_configure(volatile struct DmaCircBuffer* buffer,
const struct DmaParam* param, enum DmaConfig priority, const struct DmaParam* param, enum DmaConfig priority,
volatile void* raw_buffer, uint16_t buffer_size) volatile void* raw_buffer, uint16_t buffer_size)
{ {
#warning "check for null ptr" error_assert(buffer != nullptr);
error_assert(param != nullptr);
error_assert(raw_buffer != nullptr);
buffer->buffer = raw_buffer; buffer->buffer = raw_buffer;
@ -52,6 +55,9 @@ void dma_cbuf_configure(volatile struct DmaCircBuffer* buffer,
uint32_t dma_cbuf_read_byte(volatile struct DmaCircBuffer* buffer, uint32_t dma_cbuf_read_byte(volatile struct DmaCircBuffer* buffer,
uint8_t* byte) uint8_t* byte)
{ {
error_assert(buffer != nullptr);
error_assert(byte != nullptr);
//retreive the current end of the buffer based on the DMA's progress //retreive the current end of the buffer based on the DMA's progress
uint16_t end = buffer->size uint16_t end = buffer->size
- dma_get_remaining(buffer->dma, buffer->channel); - dma_get_remaining(buffer->dma, buffer->channel);
@ -86,6 +92,8 @@ uint32_t dma_cbuf_read_byte(volatile struct DmaCircBuffer* buffer,
static void cbuf_callback(enum DmaIRQSource src, volatile void* param) static void cbuf_callback(enum DmaIRQSource src, volatile void* param)
{ {
(void)src; //only transfer complete expected (void)src; //only transfer complete expected
error_assert(param != nullptr);
volatile struct DmaCircBuffer* buffer = param; volatile struct DmaCircBuffer* buffer = param;
buffer->dma_looped = true; buffer->dma_looped = true;
} }

View File

@ -8,6 +8,7 @@
//--includes-------------------------------------------------------------------- //--includes--------------------------------------------------------------------
#include "dma_mbuf.h" #include "dma_mbuf.h"
#include "error.h"
//--local definitions----------------------------------------------------------- //--local definitions-----------------------------------------------------------
@ -30,7 +31,9 @@ void dma_mbuf_configure(volatile struct DmaMultiBuffer* buffer,
const struct DmaParam* param, enum DmaConfig priority, const struct DmaParam* param, enum DmaConfig priority,
void* raw_buffer, uint16_t buffer_size) void* raw_buffer, uint16_t buffer_size)
{ {
#warning "check for null ptr" error_assert(buffer != nullptr);
error_assert(param != nullptr);
error_assert(raw_buffer != nullptr);
buffer->raw_buffer = raw_buffer; buffer->raw_buffer = raw_buffer;
@ -51,6 +54,8 @@ void dma_mbuf_configure(volatile struct DmaMultiBuffer* buffer,
uint32_t dma_mbuf_write_byte(volatile struct DmaMultiBuffer* buffer, uint32_t dma_mbuf_write_byte(volatile struct DmaMultiBuffer* buffer,
uint8_t byte) uint8_t byte)
{ {
error_assert(buffer != nullptr);
//if the current buffer is full, give up //if the current buffer is full, give up
if (buffer->byte_index >= buffer->buffer_size) { if (buffer->byte_index >= buffer->buffer_size) {
return 1; return 1;
@ -65,6 +70,8 @@ uint32_t dma_mbuf_write_byte(volatile struct DmaMultiBuffer* buffer,
uint32_t dma_mbuf_switch(volatile struct DmaMultiBuffer* buffer) uint32_t dma_mbuf_switch(volatile struct DmaMultiBuffer* buffer)
{ {
error_assert(buffer != nullptr);
//no data to send, stop here //no data to send, stop here
if (buffer->byte_index == 0) { if (buffer->byte_index == 0) {
return 0; return 0;
@ -100,6 +107,8 @@ uint32_t dma_mbuf_switch(volatile struct DmaMultiBuffer* buffer)
static void mbuf_callback(enum DmaIRQSource src, volatile void* param) static void mbuf_callback(enum DmaIRQSource src, volatile void* param)
{ {
(void)src; //only transfer complete expected (void)src; //only transfer complete expected
error_assert(param != nullptr);
volatile struct DmaMultiBuffer* buffer = param; volatile struct DmaMultiBuffer* buffer = param;
dma_stop(buffer->dma, buffer->channel); dma_stop(buffer->dma, buffer->channel);
buffer->dma_running = false; buffer->dma_running = false;

View File

@ -7,6 +7,7 @@
//--includes-------------------------------------------------------------------- //--includes--------------------------------------------------------------------
#include "format.h" #include "format.h"
#include "error.h"
//--local definitions----------------------------------------------------------- //--local definitions-----------------------------------------------------------
@ -68,6 +69,8 @@ uint32_t format_vfctprintf(FormatCallback callback, void* arg,
*/ */
static uint32_t buffer_write(uint8_t byte, void* arg) static uint32_t buffer_write(uint8_t byte, void* arg)
{ {
error_assert(arg != nullptr);
struct BufferArg* buffer_arg = (struct BufferArg*)arg; struct BufferArg* buffer_arg = (struct BufferArg*)arg;
if (buffer_arg->byte_index >= buffer_arg->buffer_size) { if (buffer_arg->byte_index >= buffer_arg->buffer_size) {
return 1; return 1;
@ -87,6 +90,8 @@ static uint32_t buffer_write(uint8_t byte, void* arg)
static uint32_t render_format(FormatCallback callback, void* arg, static uint32_t render_format(FormatCallback callback, void* arg,
const char* restrict format, va_list va) const char* restrict format, va_list va)
{ {
error_assert(format != nullptr);
uint8_t width = 0; uint8_t width = 0;
bool in_format = false; bool in_format = false;
bool zero_padding = false; bool zero_padding = false;
@ -148,7 +153,7 @@ static uint32_t render_format(FormatCallback callback, void* arg,
width += (*c - '0'); width += (*c - '0');
continue; continue;
default: default:
//TODO manage error error_trigger("unsupported option: %c in %s", c, format);
break; break;
} }
} else { } else {