aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/ext
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/ext')
-rw-r--r--lib/pbdrv/ext/freertos/index.dox6
-rw-r--r--lib/pbdrv/ext/freertos/pb-mem.c5
-rw-r--r--lib/pbdrv/ext/freertos/pb-mod.c1
-rw-r--r--lib/pbdrv/ext/index.dox24
-rw-r--r--lib/pbdrv/ext/stdlib/index.dox6
-rw-r--r--lib/pbdrv/ext/stdlib/pb-mem.c5
6 files changed, 47 insertions, 0 deletions
diff --git a/lib/pbdrv/ext/freertos/index.dox b/lib/pbdrv/ext/freertos/index.dox
new file mode 100644
index 0000000..dfa45ff
--- /dev/null
+++ b/lib/pbdrv/ext/freertos/index.dox
@@ -0,0 +1,6 @@
+// vim:ft=doxygen
+/**
+\ingroup pb_ext
+\defgroup pb_ext_freertos FreeRTOS
+\brief FreeRTOS memory management and scheduler-based delay
+*/
diff --git a/lib/pbdrv/ext/freertos/pb-mem.c b/lib/pbdrv/ext/freertos/pb-mem.c
index b18d79f..6647f05 100644
--- a/lib/pbdrv/ext/freertos/pb-mem.c
+++ b/lib/pbdrv/ext/freertos/pb-mem.c
@@ -3,24 +3,29 @@
#include "../../pb-mem.h"
#include "../../pb-types.h"
+/// \ingroup pb_ext_freertos
inline void * pb_malloc(size_t sz) {
return pvPortMalloc(sz);
}
+/// \ingroup pb_ext_freertos
inline void pb_free(void * ptr) {
vPortFree(ptr);
}
+/// \ingroup pb_ext_freertos
__weak inline void * pb_realloc(void * ptr, size_t sz) {
return NULL; // shit out of luck (don't use mpack_writer_init_growable)
}
+/// \ingroup pb_ext_freertos
__weak void * pb_memcpy(void * dest, const void * src, size_t sz) {
for (size_t offset = 0; offset < sz; offset++)
*((char*) dest + offset) = *((char*) src + offset);
return dest;
}
+/// \ingroup pb_ext_freertos
__weak int pb_memcmp(const void * a, const void * b, size_t sz) {
for (size_t offset = 0; offset < sz; offset++) {
int diff = *((char*) a + offset) - *((char*) b + offset);
diff --git a/lib/pbdrv/ext/freertos/pb-mod.c b/lib/pbdrv/ext/freertos/pb-mod.c
index 75495be..5c0aa36 100644
--- a/lib/pbdrv/ext/freertos/pb-mod.c
+++ b/lib/pbdrv/ext/freertos/pb-mod.c
@@ -3,6 +3,7 @@
#include "../../pb-types.h"
+/// \ingroup pb_ext_freertos
__weak void pb_mod_blocking_delay_ms(unsigned long ms) {
vTaskDelay(ms / portTICK_PERIOD_MS);
}
diff --git a/lib/pbdrv/ext/index.dox b/lib/pbdrv/ext/index.dox
new file mode 100644
index 0000000..f7d2bc6
--- /dev/null
+++ b/lib/pbdrv/ext/index.dox
@@ -0,0 +1,24 @@
+// vim:ft=doxygen
+/**
+\ingroup pbdrv
+\ingroup pbdrv-mod
+\defgroup pb_ext Extensions
+\brief Platform-specific \ref pbdrv implementations
+
+Extensions provide platform-specific implementations for various functions used
+in \ref pbdrv, and allows \ref pbdrv to remain completely portable. Extensions
+are used in both \ref pbdrv and \ref pbdrv-mod.
+
+In order to use an extension, include the appropriate CMake lists file for your
+target platform after the \ref pbdrv include:
+
+```cmake
+# include pbdrv
+add_subdirectory(lib/pbdrv)
+
+# use stdlib extension (for use with C standard library)
+include(lib/pbdrv/ext/stdlib/include.cmake)
+
+```
+
+*/
diff --git a/lib/pbdrv/ext/stdlib/index.dox b/lib/pbdrv/ext/stdlib/index.dox
new file mode 100644
index 0000000..756af1e
--- /dev/null
+++ b/lib/pbdrv/ext/stdlib/index.dox
@@ -0,0 +1,6 @@
+// vim:ft=doxygen
+/**
+\ingroup pb_ext
+\defgroup pb_ext_stdlib stdlib
+\brief C stdlib memory management
+*/
diff --git a/lib/pbdrv/ext/stdlib/pb-mem.c b/lib/pbdrv/ext/stdlib/pb-mem.c
index b260c2c..328efbb 100644
--- a/lib/pbdrv/ext/stdlib/pb-mem.c
+++ b/lib/pbdrv/ext/stdlib/pb-mem.c
@@ -3,22 +3,27 @@
#include "../../pb-mem.h"
+/// \ingroup pb_ext_stdlib
inline void * pb_malloc(size_t sz) {
return malloc(sz);
}
+/// \ingroup pb_ext_stdlib
inline void pb_free(void * ptr) {
free(ptr);
}
+/// \ingroup pb_ext_stdlib
inline void * pb_realloc(void * ptr, size_t sz) {
return realloc(ptr, sz);
}
+/// \ingroup pb_ext_stdlib
void * pb_memcpy(void * dest, const void * src, size_t sz) {
return memcpy(dest, src, sz);
}
+/// \ingroup pb_ext_stdlib
int pb_memcmp(const void * a, const void * b, size_t sz) {
return memcmp(a, b, sz);
}