JZsdk_Osal.h 3.8 KB
/**
 ********************************************************************
 * @file   JZsdk_Osal.h
 *          JZsdk_Osal.c 的头文件
 *
 *********************************************************************
 */

/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_OSAL_H
#define JZSDK_OSAL_H

/* Includes ------------------------------------------------------------------*/
#include "../JZsdk_Code/JZsdk_Code.h"

#include "./JZsdk_CheckSum/JZsdk_CheckSum.h"
#include "./JZsdk_FileSystm/JZsdk_FileSystm.h"
#include "./JZsdk_MemoryAdapter/JZsdk_MemoryAdapter.h"
#include "./JZsdk_Mutex/JZsdk_Mutex.h"
#include "./JZsdk_Semaphore/JZsdk_Semaphore.h"
#include "./JZsdk_Task/JZsdk_Task.h"
#include "./JZsdk_Timer/JZsdk_Timer.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/

/****************
 * 
 *  osal权柄
 * 
 * 
 * ******************/
typedef struct {
    //任务名 任务函数 任务栈大小 任务参数 任务句柄
    T_JZsdkReturnCode (*TaskCreate)(const char *name, void *(*taskFunc)(void *),
                                  unsigned int stackSize, void *arg, T_JZTaskHandle *task);

    T_JZsdkReturnCode (*TaskDestroy)(T_JZTaskHandle task);

    T_JZsdkReturnCode (*TaskSleepMs)(U32_t timeMs);

    T_JZsdkReturnCode (*MutexCreate)(T_JZsdkMutexHandle *mutex);

    T_JZsdkReturnCode (*MutexDestroy)(T_JZsdkMutexHandle mutex);

    T_JZsdkReturnCode (*MutexLock)(T_JZsdkMutexHandle mutex);

    T_JZsdkReturnCode (*MutexUnlock)(T_JZsdkMutexHandle mutex);

    T_JZsdkReturnCode (*SemaphoreCreate)(U32_t initValue, T_JZsdkSemaHandle *semaphore);

    T_JZsdkReturnCode (*SemaphoreDestroy)(T_JZsdkSemaHandle semaphore);

    T_JZsdkReturnCode (*SemaphoreWait)(T_JZsdkSemaHandle semaphore);

    T_JZsdkReturnCode (*SemaphoreTimedWait)(T_JZsdkSemaHandle semaphore, U32_t waitTimeMs);

    T_JZsdkReturnCode (*SemaphorePost)(T_JZsdkSemaHandle semaphore);

    T_JZsdkReturnCode (*GetTimeMs)(U32_t *ms);

    T_JZsdkReturnCode (*GetTimeUs)(U64_t *us);

    T_JZsdkReturnCode (*GetRandomNum)(U16_t *randomNum);

    void *(*Malloc)(U32_t size);

    void (*Free)(void *ptr);
} T_JZsdkOsalHandler;


/****************
 * 
 *  filesysterm 文件系统权柄
 * 
 * 
 * ******************/
typedef struct {
    T_JZsdkReturnCode (*FileOpen)(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);

    T_JZsdkReturnCode (*FileClose)(T_JZsdkFileHandle fileObj);

    T_JZsdkReturnCode (*FileWrite_U8)(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);

    T_JZsdkReturnCode (*FileRead_U8)(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);

    T_JZsdkReturnCode (*FileSeek)(T_JZsdkFileHandle fileObj, U32_t offset);

    T_JZsdkReturnCode (*FileSync)(T_JZsdkFileHandle fileObj);

    T_JZsdkReturnCode (*DirOpen)(const char *filePath, T_JZsdkDirHandle *dirObj);

    T_JZsdkReturnCode (*DirClose)(T_JZsdkDirHandle dirObj);

    T_JZsdkReturnCode (*DirRead)(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo);

    T_JZsdkReturnCode (*Mkdir)(const char *filePath);

    T_JZsdkReturnCode (*Unlink)(const char *filePath);

    T_JZsdkReturnCode (*Rename)(const char *oldFilePath, const char *newFilePath);

    T_JZsdkReturnCode (*Stat)(const char *filePath, T_JZsdkFileInfo *fileInfo);
} T_JZsdkFSHandler;


/* Exported macro ------------------------------------------------------------*/


/* Exported types ------------------------------------------------------------*/


/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode JZsdk_OsalInit();
T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void);
T_JZsdkFSHandler *JZsdk_GetFsHandler(void);


#ifdef __cplusplus
}
#endif

#endif 
/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/