aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/ext
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/ext')
-rw-r--r--lib/pbdrv/ext/freertos/include.cmake4
-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.c9
-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
7 files changed, 47 insertions, 12 deletions
diff --git a/lib/pbdrv/ext/freertos/include.cmake b/lib/pbdrv/ext/freertos/include.cmake
index e7ab7fd..e205c8f 100644
--- a/lib/pbdrv/ext/freertos/include.cmake
+++ b/lib/pbdrv/ext/freertos/include.cmake
@@ -1,9 +1,7 @@
target_sources(pbdrv PRIVATE "${CMAKE_CURRENT_LIST_DIR}/pb-mem.c")
-target_link_libraries(pbdrv
+target_link_libraries(pbdrv PUBLIC
freertos_kernel
freertos_kernel_include
freertos_config
)
-target_sources(pbdrv-mod PRIVATE "${CMAKE_CURRENT_LIST_DIR}/pb-mod.c")
-
diff --git a/lib/pbdrv/ext/freertos/index.dox b/lib/pbdrv/ext/freertos/index.dox
new file mode 100644
index 0000000..7d72918
--- /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
+*/
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
deleted file mode 100644
index 75495be..0000000
--- a/lib/pbdrv/ext/freertos/pb-mod.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <FreeRTOS.h>
-#include <task.h>
-
-#include "../../pb-types.h"
-
-__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);
}