Add documentation

This commit is contained in:
Stefano Calabretti
2022-02-15 19:33:22 +01:00
parent 2469d96127
commit 4ac0afc010
7 changed files with 164 additions and 12 deletions
+39 -3
View File
@@ -4,16 +4,52 @@
#include <stdint.h>
#include <string.h>
/**
* @brief
* Returns the size of the given array.
*
* This only works on static arrays declared
* within the current scope, that is:
* int main() {
* int arr[] = {1, 2, 3};
* int len = sizeofarray(arr);
* }
*/
#define sizeofarray(array) \
(sizeof(array) / sizeof(*(array)))
/**
* @brief
* Returns the length of a statically, non const ptr, declared
* string.
* That is:
* int main() {
* char str[] = "abc";
* int len = stringArrayLength(str);
* }
*/
#define stringArrayLength(array) \
stringBufferLength((array), sizeofarray(array))
/**
* @brief
* Returns the length of a string buffer.
* Its format must be in bytes, so it could be:
* const char*
* char*
* uint8_t*
* etc...
*/
#define stringBufferLength(pbuffer, maxLen) \
strnlen((const char*)(pbuffer), maxLen)
#define min(a, b) ((a) < (b) ? a : b);
/**
* @brief
* Returns the minimum between the
* two given values.
* E.g. min(1, 2) == 1 // true
*/
#define min(a, b) ((a) < (b) ? a : b)
#define mask(value, bits) (value & bits)
#define convertTo(resultType, lvalue) (*interpretAs(resultType*, &(lvalue)))
#define interpretAs(resultType, lvalue) ((resultType)(lvalue))
@@ -26,10 +62,10 @@
* Either
* - Error: the computation resulted in error
* - Pending: the computation is still undergoing
* - Completed: the computation has completed succesfully
* - Completed: the computation has completed successfully
* and its results can be read
*
* Asynchronous logig can be easily implemented using State Machines
* Asynchronous logic can be easily implemented using State Machines
*/
typedef enum {
MMR_ASYNC_RESULT_ERROR,