Add documentation
This commit is contained in:
+39
-3
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user