diff --git a/CMakeLists.txt b/CMakeLists.txt index e793c97..60fc4a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ set(DMOSI_DONT_IMPLEMENT_DMOD_API OFF CACHE BOOL "Do not implement DMOD API in d set(DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX OFF CACHE BOOL "Do not implement DMOD Mutex API in dmosi library") set(DMOSI_DONT_IMPLEMENT_DMOD_API_ENV OFF CACHE BOOL "Do not implement DMOD Environment API in dmosi library") set(DMOSI_DONT_IMPLEMENT_DMOD_API_PROC OFF CACHE BOOL "Do not implement DMOD Process API in dmosi library") +set(DMOSI_DONT_IMPLEMENT_DMOD_API_TIME OFF CACHE BOOL "Do not implement DMOD Time API in dmosi library") # ====================================================================== @@ -64,6 +65,7 @@ target_compile_definitions(${MODULE_NAME} $<$:DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX> $<$:DMOSI_DONT_IMPLEMENT_DMOD_API_ENV> $<$:DMOSI_DONT_IMPLEMENT_DMOD_API_PROC> + $<$:DMOSI_DONT_IMPLEMENT_DMOD_API_TIME> DMOSI_VERSION="${PROJECT_VERSION}" ) diff --git a/src/dmosi.c b/src/dmosi.c index c147577..8d65cf1 100644 --- a/src/dmosi.c +++ b/src/dmosi.c @@ -673,4 +673,25 @@ Dmod_Pid_t Dmod_RunDetached(Dmod_Context_t* Context, int argc, char* argv[]) #endif // !DMOSI_DONT_IMPLEMENT_DMOD_API && !DMOSI_DONT_IMPLEMENT_DMOD_API_PROC +//============================================================================== +// DMOD Time API Implementation +//============================================================================== +#if !defined(DMOSI_DONT_IMPLEMENT_DMOD_API) && !defined(DMOSI_DONT_IMPLEMENT_DMOD_API_TIME) + +/** + * @brief DMOD uptime implementation using DMOSI + * + * This implementation provides the DMOD GetUptime API using the underlying + * DMOSI tick-count operation. It is only compiled when DMOSI_DONT_IMPLEMENT_DMOD_API + * and DMOSI_DONT_IMPLEMENT_DMOD_API_TIME are not defined. + * + * @note The tick count is assumed to represent milliseconds, which is the + * typical RTOS configuration (1 ms per tick). + */ + +Dmod_Timestamp_t Dmod_GetUptime(void) +{ + return (Dmod_Timestamp_t)dmosi_get_tick_count(); +} +#endif // !DMOSI_DONT_IMPLEMENT_DMOD_API && !DMOSI_DONT_IMPLEMENT_DMOD_API_TIME