JZsdk_Osal.c 1.6 KB
#include "../JZsdk_Code/JZsdk_Code.h"
#include "./JZsdk_Osal.h"




static T_JZsdkOsalHandler* g_osalHandler = NULL;

static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler)
{
    g_osalHandler = malloc(sizeof(T_JZsdkOsalHandler));
    if (osalHandler == NULL) {
        return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
    }
    
    memcpy(g_osalHandler, osalHandler, sizeof(T_JZsdkOsalHandler));

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void)
{
    return g_osalHandler;  // 返回已注册的 OSAL 处理器
}

T_JZsdkReturnCode JZsdk_OsalInit()
{
    T_JZsdkOsalHandler osalHandler = {
        .TaskCreate = JZsdk_Osal_TaskCreate,
        .TaskDestroy = JZsdk_Osal_TaskDestroy,
        .TaskSleepMs = delayMs,
        .MutexCreate= JZsdk_Osal_MutexCreate,
        .MutexDestroy = JZsdk_Osal_MutexDestroy,
        .MutexLock = JZsdk_Osal_MutexLock,
        .MutexUnlock = JZsdk_Osal_MutexUnlock,
        .SemaphoreCreate = JZsdk_Osal_SemaphoreCreate,
        .SemaphoreDestroy = JZsdk_Osal_SemaphoreDestroy,
        .SemaphoreWait = JZsdk_Osal_SemaphoreWait,
        .SemaphoreTimedWait = JZsdk_Osal_SemaphoreTimedWait,
        .SemaphorePost = JZsdk_Osal_SemaphorePost,
        .Malloc = JZsdk_Osal_Malloc,
        .Free = JZsdk_Osal_Free,
        .GetTimeMs = JZsdk_Osal_GetTimeMs,
        .GetTimeUs = JZsdk_Osal_GetTimeUs,
        .GetRandomNum  = JZsdk_Osal_GetRandomNum,
    };

    JZsdk_Platform_RegOsalHandler(&osalHandler);

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}