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




static T_JZsdkOsalHandler *g_osalHandler = NULL;
static T_JZsdkFSHandler *g_FsHandler = 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 处理器
}


static T_JZsdkReturnCode JZsdk_RegFsHandler(const T_JZsdkFSHandler *FsHandler)
{
    g_FsHandler = malloc(sizeof(T_JZsdkFSHandler));
    if (g_FsHandler == NULL) {
        return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
    }
    
    memcpy(g_FsHandler, FsHandler, sizeof(T_JZsdkFSHandler));

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

T_JZsdkFSHandler *JZsdk_GetFsHandler(void)
{
    return g_FsHandler;  // 返回已注册的 FS 处理器
}


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,
    };

    T_JZsdkFSHandler fileSystemHandler = {
        .FileOpen = JZsdk_Osal_FileOpen,
        .FileClose = JZsdk_Osal_FileClose,
        .FileWrite_U8 = JZsdk_Osal_FileWrite_U8,
        .FileRead_U8 = JZsdk_Osal_FileRead_U8,
        .FileSync = JZsdk_Osal_FileSync,
        .FileSeek = JZsdk_Osal_FileSeek,
        .DirOpen = JZsdk_Osal_DirOpen,
        .DirClose = JZsdk_Osal_DirClose,
        .DirRead = JZsdk_Osal_DirRead,
        .Mkdir = JZsdk_Osal_Mkdir,
        .Unlink = JZsdk_Osal_Unlink,
        .Rename = JZsdk_Osal_Rename,
        .Stat = JZsdk_Osal_Stat,
    };

    JZsdk_Platform_RegOsalHandler(&osalHandler);
    printf("JZsdk Osal handler registered\n");

    JZsdk_RegFsHandler(&fileSystemHandler);
    printf("JZsdk File system handler registered\n");

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}