123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*
- * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
- * Description: 系统适配层基础能力抽象层接口(需设备厂商实现)
- */
- #ifndef HILINK_OPEN_SYS_ADAPTER_H
- #define HILINK_OPEN_SYS_ADAPTER_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef void *HiLinkMutex;
- typedef void *HiLinkSemaphore;
- typedef void *(*TaskEntryFunc)(unsigned int arg);
- typedef struct {
- TaskEntryFunc funTaskEntry;
- unsigned short taskPrio;
- void *arg;
- unsigned int stackSize;
- const char *name;
- unsigned short resved;
- } TaskInitParam;
- /*
- * IoT OS 创建线程接口
- * 返回值: 返回0 成功, 其他 失败
- */
- int HILINK_CreateTask(const void *handle, TaskInitParam *initParam);
- /*
- * IoT OS 删除线程接口
- * 输入参数handle 删除线程句柄
- * 返回0 成功, 其他 失败
- */
- int HILINK_DeleteTask(const void *handle);
- /*
- * IoT OS 创建锁
- * 输入参数 HiLinkMutex *mutex 返回创建的锁
- * 返回0 成功, 其他 失败
- */
- int HILINK_MutexCreate(HiLinkMutex *mutex);
- /*
- * IoT OS 锁定
- * 输入参数HiLinkMutex *mutex 锁定的资源
- * 返回0 成功, 其他 失败
- */
- int HILINK_MutexLock(HiLinkMutex *mutex);
- /*
- * IoT OS 解锁接口函数
- * 输入参数HiLinkMutex *mutex
- * 返回0 成功, 其他 失败
- */
- int HILINK_MutexUnlock(HiLinkMutex *mutex);
- /*
- * IoT OS 删除锁
- * 输入参数HiLinkMutex *mexut 删除锁
- * 返回0 成功, 其他 失败
- */
- int HILINK_MutexDestroy(HiLinkMutex *mutex);
- /*
- * 创建信号量
- * handle是指向信号量的对象,count指定信号量值的大小
- * 返回0表示成功, 其他值表示失败
- */
- int HILINK_SemaphoreCreate(HiLinkSemaphore *handle, int count);
- /*
- * 给信号量的值减1
- * ms指定在信号量为0无法减1的情况下阻塞的时间限制
- * 返回0表示成功, 其他值表示失败
- */
- int HILINK_SemaphoreTimedWait(HiLinkSemaphore handle, int ms);
- /*
- * 给信号量的值加1
- * 返回0表示成功, 其他值表示失败
- */
- int HILINK_SemaphorePost(HiLinkSemaphore handle);
- /* 销毁信号量 */
- void HILINK_SemaphoreDestroy(HiLinkSemaphore handle);
- /*
- * IoT OS 获取当前时间
- * 输出参数表示当前设备启动后运行时间 单位毫秒
- * 返回0 成功,其他失败
- */
- int HILINK_GetCurrTime(unsigned long *ms);
- /*
- * 获取当前运行线程的线程号
- * 注意:freeRTOS和mico2.0返回的是当前线程的Handle,Contiki不支持该接口.
- */
- unsigned long HILINK_GetCurrentTaskId(void);
- /*
- * 获取随机数,厂家实现该接口
- * 如果模组有硬件熵源,需要调用HILINK_RegisterRandomEntropy注册硬件随机源,然后调用HILINK_SecRandom返回安全随机数
- * 如果模组没有硬件熵源,则厂家自行生成随机数,同时需要向华为报备
- */
- int HILINK_Rand(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|