hilink_open_sys_adapter.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*
  2. * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
  3. * Description: 系统适配层基础能力抽象层接口(需设备厂商实现)
  4. */
  5. #ifndef HILINK_OPEN_SYS_ADAPTER_H
  6. #define HILINK_OPEN_SYS_ADAPTER_H
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. typedef void *HiLinkMutex;
  11. typedef void *HiLinkSemaphore;
  12. typedef void *(*TaskEntryFunc)(unsigned int arg);
  13. typedef struct {
  14. TaskEntryFunc funTaskEntry;
  15. unsigned short taskPrio;
  16. void *arg;
  17. unsigned int stackSize;
  18. const char *name;
  19. unsigned short resved;
  20. } TaskInitParam;
  21. /*
  22. * IoT OS 创建线程接口
  23. * 返回值: 返回0 成功, 其他 失败
  24. */
  25. int HILINK_CreateTask(const void *handle, TaskInitParam *initParam);
  26. /*
  27. * IoT OS 删除线程接口
  28. * 输入参数handle 删除线程句柄
  29. * 返回0 成功, 其他 失败
  30. */
  31. int HILINK_DeleteTask(const void *handle);
  32. /*
  33. * IoT OS 创建锁
  34. * 输入参数 HiLinkMutex *mutex 返回创建的锁
  35. * 返回0 成功, 其他 失败
  36. */
  37. int HILINK_MutexCreate(HiLinkMutex *mutex);
  38. /*
  39. * IoT OS 锁定
  40. * 输入参数HiLinkMutex *mutex 锁定的资源
  41. * 返回0 成功, 其他 失败
  42. */
  43. int HILINK_MutexLock(HiLinkMutex *mutex);
  44. /*
  45. * IoT OS 解锁接口函数
  46. * 输入参数HiLinkMutex *mutex
  47. * 返回0 成功, 其他 失败
  48. */
  49. int HILINK_MutexUnlock(HiLinkMutex *mutex);
  50. /*
  51. * IoT OS 删除锁
  52. * 输入参数HiLinkMutex *mexut 删除锁
  53. * 返回0 成功, 其他 失败
  54. */
  55. int HILINK_MutexDestroy(HiLinkMutex *mutex);
  56. /*
  57. * 创建信号量
  58. * handle是指向信号量的对象,count指定信号量值的大小
  59. * 返回0表示成功, 其他值表示失败
  60. */
  61. int HILINK_SemaphoreCreate(HiLinkSemaphore *handle, int count);
  62. /*
  63. * 给信号量的值减1
  64. * ms指定在信号量为0无法减1的情况下阻塞的时间限制
  65. * 返回0表示成功, 其他值表示失败
  66. */
  67. int HILINK_SemaphoreTimedWait(HiLinkSemaphore handle, int ms);
  68. /*
  69. * 给信号量的值加1
  70. * 返回0表示成功, 其他值表示失败
  71. */
  72. int HILINK_SemaphorePost(HiLinkSemaphore handle);
  73. /* 销毁信号量 */
  74. void HILINK_SemaphoreDestroy(HiLinkSemaphore handle);
  75. /*
  76. * IoT OS 获取当前时间
  77. * 输出参数表示当前设备启动后运行时间 单位毫秒
  78. * 返回0 成功,其他失败
  79. */
  80. int HILINK_GetCurrTime(unsigned long *ms);
  81. /*
  82. * 获取当前运行线程的线程号
  83. * 注意:freeRTOS和mico2.0返回的是当前线程的Handle,Contiki不支持该接口.
  84. */
  85. unsigned long HILINK_GetCurrentTaskId(void);
  86. /*
  87. * 获取随机数,厂家实现该接口
  88. * 如果模组有硬件熵源,需要调用HILINK_RegisterRandomEntropy注册硬件随机源,然后调用HILINK_SecRandom返回安全随机数
  89. * 如果模组没有硬件熵源,则厂家自行生成随机数,同时需要向华为报备
  90. */
  91. int HILINK_Rand(void);
  92. #ifdef __cplusplus
  93. }
  94. #endif
  95. #endif