iot_os.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. #ifndef __IOT_OS_H__
  2. #define __IOT_OS_H__
  3. #include "am_openat.h"
  4. #include "am_openat_fs.h"
  5. #include "am_openat_system.h"
  6. #include "am_openat_drv.h"
  7. /**
  8. * @defgroup iot_sdk_os 操作系统接口
  9. * @{
  10. */
  11. /**
  12. * @defgroup 线程接口函数类型 线程接口函数
  13. * @{
  14. */
  15. /**@example os/demo_os.c
  16. * os接口示例
  17. */
  18. /**创建线程
  19. *@note nPriority值的返回在0-20, 值越大优先级越低
  20. *@param pTaskEntry: 线程主函数
  21. *@param pParameter: 作为参数传递给线程主函数
  22. *@param nStackSize: 线程栈大小
  23. *@param nPriority: 线程优先级,该参数越大,线程优先级越低
  24. *@param nCreationFlags: 线程启动标记, 请参考E_AMOPENAT_OS_CREATION_FLAG
  25. *@param pTaskName: 线程名称
  26. *@return HANDLE: 创建成功返回线程句柄
  27. **/
  28. HANDLE iot_os_create_task(
  29. PTASK_MAIN pTaskEntry,
  30. PVOID pParameter,
  31. UINT16 nStackSize,
  32. UINT8 nPriority,
  33. UINT16 nCreationFlags,
  34. PCHAR pTaskName
  35. );
  36. /**删除线程
  37. *@param hTask: 线程句柄
  38. *@return TURE: 删除线程成功
  39. * FALSE: 删除线程失败
  40. **/
  41. BOOL iot_os_delete_task(
  42. HANDLE hTask
  43. );
  44. /**挂起线程
  45. *@param hTask: 线程句柄
  46. *@return TURE: 挂起线程成功
  47. * FALSE : 挂起线程失败
  48. **/
  49. BOOL iot_os_suspend_task(
  50. HANDLE hTask
  51. );
  52. /**恢复线程
  53. *@param hTask: 线程句柄
  54. *@return TURE: 恢复线程成功
  55. * FALSE : 恢复线程失败
  56. **/
  57. BOOL iot_os_resume_task(
  58. HANDLE hTask
  59. );
  60. /**获取当前线程
  61. *@return HANDLE: 返回当前线程句柄
  62. *
  63. **/
  64. HANDLE iot_os_current_task(
  65. VOID
  66. );
  67. /**获取当前线程创建信息
  68. *@param hTask: 线程句柄
  69. *@param pTaskInfo: 线程信息存储接口
  70. *@return TURE: 成功
  71. * FALSE : 失败
  72. **/
  73. BOOL iot_os_get_task_info(
  74. HANDLE hTask,
  75. T_AMOPENAT_TASK_INFO *pTaskInfo
  76. );
  77. /** @}*/
  78. /**
  79. * @defgroup 消息接口函数类型 消息接口函数
  80. * @{
  81. */
  82. /**获取线程消息
  83. *@note 会阻塞
  84. *@param hTask: 线程句柄
  85. *@param ppMessage: 存储消息指针
  86. *@return TURE: 成功
  87. * FALSE : 失败
  88. **/
  89. BOOL iot_os_wait_message(
  90. HANDLE hTask,
  91. PVOID* ppMessage
  92. );
  93. /**发送线程消息
  94. *@note 添加到消息队列尾部
  95. *@param hTask: 线程句柄
  96. *@param pMessage: 存储消息指针
  97. *@return TURE: 成功
  98. * FALSE : 失败
  99. **/
  100. BOOL iot_os_send_message(
  101. HANDLE hTask,
  102. PVOID pMessage
  103. );
  104. /**检测消息队列中是否有消息
  105. *@param hTask: 线程句柄
  106. *@return TURE: 成功
  107. * FALSE : 失败
  108. **/
  109. BOOL iot_os_available_message(
  110. HANDLE hTask
  111. );
  112. /**发送高优先级线程消息
  113. *@note 添加到消息队列头部
  114. *@param hTask: 线程句柄
  115. *@param pMessage: 存储消息指针
  116. *@return TURE: 成功
  117. * FALSE : 失败
  118. **/
  119. BOOL iot_os_send_high_priority_message(
  120. HANDLE hTask,
  121. PVOID pMessage
  122. );
  123. /**检测消息队列中是否有消息
  124. *@param hTask: 线程句柄
  125. *@return TURE: 成功
  126. * FALSE : 失败
  127. **/
  128. BOOL iot_os_available_message(
  129. HANDLE hTask
  130. );
  131. /** @}*/
  132. /**
  133. * @defgroup 时间定时器接口函数类型 时间定时器接口函数
  134. * @{
  135. */
  136. /**@example timer/demo_timer.c
  137. * timer接口示例
  138. */
  139. /**创建定时器
  140. *@param pFunc: 定时器到时处理函数
  141. *@param pParameter: 作为参数传递给定时器到时处理函数
  142. *@return HANDLE: 返回定时器句柄
  143. *
  144. **/
  145. HANDLE iot_os_create_timer(
  146. PTIMER_EXPFUNC pFunc,
  147. PVOID pParameter
  148. );
  149. /**启动定时器
  150. *@param hTimer: 定时器句柄,create_timer接口返回值
  151. *@param nMillisecondes: 定时器时间
  152. *@return TURE: 成功
  153. * FALSE : 失败
  154. **/
  155. BOOL iot_os_start_timer( /* 启动定时器接口 */
  156. HANDLE hTimer, /* 定时器句柄,create_timer接口返回值 */
  157. UINT32 nMillisecondes /* */
  158. );
  159. /**停止定时器
  160. *@param hTimer: 定时器句柄,create_timer接口返回值
  161. *@return TURE: 成功
  162. * FALSE : 失败
  163. **/
  164. BOOL iot_os_stop_timer(
  165. HANDLE hTimer
  166. );
  167. /**删除定时器
  168. *@param hTimer: 定时器句柄,create_timer接口返回值
  169. *@return TURE: 成功
  170. * FALSE : 失败
  171. **/
  172. BOOL iot_os_delete_timer(
  173. HANDLE hTimer
  174. );
  175. /**检查定时器是否已经启动
  176. *@param hTimer: 定时器句柄,create_timer接口返回值
  177. *@return TURE: 成功
  178. * FALSE : 失败
  179. **/
  180. BOOL iot_os_available_timer(
  181. HANDLE hTimer
  182. );
  183. /**获取系统时间
  184. *@param pDatetime: 存储时间指针
  185. *@return TURE: 成功
  186. * FALSE : 失败
  187. **/
  188. BOOL iot_os_get_system_datetime(
  189. T_AMOPENAT_SYSTEM_DATETIME* pDatetime
  190. );
  191. /**设置系统时间
  192. *@param pDatetime: 存储时间指针
  193. *@return TURE: 成功
  194. * FALSE : 失败
  195. **/
  196. BOOL iot_os_set_system_datetime(
  197. T_AMOPENAT_SYSTEM_DATETIME* pDatetime
  198. );
  199. /** @}*/
  200. /**
  201. * @defgroup 闹钟接口函数类型 闹钟接口函数
  202. * @{
  203. */
  204. /**@example demo_alarm/src/demo_alarm.c
  205. * alarm接口示例
  206. */
  207. /**闹钟初始化接口
  208. *@param pConfig: 闹钟配置参数
  209. *@return TURE: 成功
  210. * FALSE: 失败
  211. **/
  212. BOOL iot_os_init_alarm(
  213. T_AMOPENAT_ALARM_CONFIG *pConfig
  214. );
  215. /**闹钟设置/删除接口
  216. *@param pAlarmSet: 闹钟设置参数
  217. *@return TURE: 成功
  218. * FALSE: 失败
  219. **/
  220. BOOL iot_os_set_alarm(
  221. T_AMOPENAT_ALARM_PARAM *pAlarmSet
  222. );
  223. /** @}*/
  224. /**
  225. * @defgroup 临界资源接口函数类型 临界资源接口函数
  226. * @{
  227. */
  228. /**进入临界资源区接口,关闭所有中断
  229. *@return HANDLE: 返回临界资源区句柄,
  230. **/
  231. HANDLE iot_os_enter_critical_section(
  232. VOID
  233. );
  234. /**退出临界资源区接口,开启中断
  235. *@param hSection: 临界资源区句柄
  236. **/
  237. VOID iot_os_exit_critical_section(
  238. HANDLE hSection
  239. );
  240. /**创建信号量接口
  241. *@param nInitCount: 信号量数量
  242. *@return HANDLE: 返回信号量句柄
  243. **/
  244. HANDLE iot_os_create_semaphore(
  245. UINT32 nInitCount
  246. );
  247. /**删除信号量接口
  248. *@param hSem: 信号量句柄
  249. *@return TURE: 成功
  250. * FALSE: 失败
  251. **/
  252. BOOL iot_os_delete_semaphore(
  253. HANDLE hSem
  254. );
  255. /**等待信号量接口
  256. *@param hSem: 信号量句柄
  257. *@param nTimeOut: 等待信号量超时时间,if nTimeOut < 5ms, means forever
  258. *@return TURE: 成功
  259. * FALSE: 失败
  260. **/
  261. BOOL iot_os_wait_semaphore(
  262. HANDLE hSem,
  263. UINT32 nTimeOut
  264. );
  265. /**释放信号量接口
  266. *@param hSem: 信号量句柄
  267. *@return TURE: 成功
  268. * FALSE: 失败
  269. **/
  270. BOOL iot_os_release_semaphore(
  271. HANDLE hSem
  272. );
  273. /**获取消耗量值
  274. *@param hSem: 信号量句柄
  275. *@return nInitCount: 信号量的个数
  276. **/
  277. UINT32 iot_os_get_semaphore_value
  278. (
  279. HANDLE hSem
  280. );
  281. /** @}*/
  282. /**
  283. * @defgroup 内存接口函数类型 内存接口函数
  284. * @{
  285. */
  286. /**内存申请接口malloc
  287. *@param nSize: 申请的内存大小
  288. *@return PVOID: 内存指针
  289. **/
  290. PVOID iot_os_malloc(
  291. UINT32 nSize
  292. );
  293. /**内存申请接口realloc
  294. *@param pMemory: 内存指针,malloc接口返回值
  295. *@param nSize: 申请的内存大小
  296. *@return PVOID: 内存指针
  297. **/
  298. PVOID iot_os_realloc(
  299. PVOID pMemory,
  300. UINT32 nSize
  301. );
  302. /**内存释放接口
  303. *@param pMemory: 内存指针,malloc接口返回值
  304. **/
  305. VOID iot_os_free(
  306. PVOID pMemory
  307. );
  308. /**获取堆空间大小
  309. *@param total: 总共大小
  310. *@param used: 已经使用
  311. **/
  312. VOID iot_os_mem_used(
  313. UINT32* total,
  314. UINT32* used
  315. );
  316. /** @}*/
  317. /**
  318. * @defgroup 其他接口函数类型 其他接口函数
  319. * @{
  320. */
  321. /**系统睡眠接口
  322. *@param nMillisecondes: 睡眠时间
  323. *@return TURE: 成功
  324. * FALSE: 失败
  325. **/
  326. BOOL iot_os_sleep(
  327. UINT32 nMillisecondes
  328. );
  329. /**获取系统tick接口
  330. *@return tick_num: 返回系统时间tick值
  331. **/
  332. UINT32 iot_os_get_system_tick(
  333. VOID
  334. );
  335. /**获取随机数接口
  336. *@return rand_num: 返回随机数
  337. **/
  338. UINT32 iot_os_rand(
  339. VOID
  340. );
  341. /**设置随机数种子接口
  342. *@param seed: 随机数种子
  343. **/
  344. VOID iot_os_srand(
  345. UINT32 seed
  346. );
  347. /**关机接口
  348. **/
  349. VOID iot_os_shut_down(
  350. VOID
  351. );
  352. /**重启接口
  353. **/
  354. VOID iot_os_restart(
  355. VOID
  356. );
  357. /**设置trace打印口
  358. *@param port: 0: uart1
  359. 1: uart2
  360. 2: uart3
  361. 3: usb modem
  362. 4: usb AP & UART Host口抓log(默认)
  363. *@return TURE: 成功
  364. * FALSE : 失败
  365. **/
  366. BOOL iot_os_set_trace_port(UINT8 port);
  367. /**获取wifiscan参数接口
  368. *@param wifi_info: wifiscan参数
  369. **/
  370. VOID iot_wifi_scan(OPENAT_wifiScanRequest* wifi_info);
  371. /** @}*/
  372. /** @}*/ //模块结尾
  373. #endif