ql_api_rtc.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. /** @file
  2. ql_api_rtc.h
  3. @brief
  4. This file is used to define rtc interface for different Quectel Project.
  5. */
  6. /*================================================================
  7. Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
  8. Quectel Wireless Solution Proprietary and Confidential.
  9. =================================================================*/
  10. /*=================================================================
  11. EDIT HISTORY FOR MODULE
  12. This section contains comments describing changes made to the module.
  13. Notice that changes are listed in reverse chronological order.
  14. WHEN WHO WHAT, WHERE, WHY
  15. ------------ ------- -------------------------------------------------------------------------------
  16. 16/12/2020 Neo Init version
  17. =================================================================*/
  18. #ifndef _QL_API_RTC_H_
  19. #define _QL_API_RTC_H_
  20. #include "quec_common.h"
  21. #include "ql_api_common.h"
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /*===========================================================================
  26. * Macro Definition
  27. *===========================================================================*/
  28. #define QL_RTC_ERRCODE_BASE (QL_COMPONENT_BSP_RTC<<16)
  29. /*========================================================================
  30. * Enumeration Definition
  31. *========================================================================*/
  32. /**
  33. * rtc errcode
  34. */
  35. typedef enum
  36. {
  37. QL_RTC_SUCCESS = QL_SUCCESS,
  38. QL_RTC_INVALID_PARAM_ERR = 1|QL_RTC_ERRCODE_BASE,
  39. QL_RTC_SET_TIME_ERROR,
  40. QL_RTC_SET_CB_ERR,
  41. QL_RTC_ENABLE_ALARM_ERR,
  42. QL_RTC_REMOVE_ALARM_ERR,
  43. QL_RTC_SET_CFG_ERR
  44. }ql_errcode_rtc_e;
  45. /*========================================================================
  46. * Type Definition
  47. *========================================================================*/
  48. //time[2000-01-01 00:00:00-----2100-01-01 00:00:00]
  49. typedef struct ql_rtc_time_struct {
  50. int tm_sec; // seconds [0,59]
  51. int tm_min; // minutes [0,59]
  52. int tm_hour; // hour [0,23]
  53. int tm_mday; // day of month [1,31]
  54. int tm_mon; // month of year [1,12]
  55. int tm_year; // year [2000-2100]
  56. int tm_wday; // wday [0-6],sunday = 0,this value has no effect when setting the time
  57. }ql_rtc_time_t;
  58. typedef struct ql_rtc_cfg_struct {
  59. quec_enable_e nv_cfg; //开机是否读取nv保存的时间,作为初始rtc值(ENABLE:读取,DISABLE不读取,默认不读取)
  60. quec_enable_e rtc_cfg; //开机是否读取rtc寄存器的时间,作为初始rtc值,若VBAT电源断开,时间将重置成2000-1-1(ENABLE:读取,DISABLE不读取,默认不读取)
  61. quec_enable_e nwt_cfg; //连接基站后,是否同步基站时间到rtc时间(ENABLE:同步,DISABLE不同步,默认同步)
  62. uint8_t tz_cfg; //注网后时区配置(0:保持原配置,注网后更新为网络时区, 1:注网后,保持原有时区, 2:注网后,重置时区为0, 默认0)
  63. }ql_rtc_cfg_t;
  64. /*===========================================================================
  65. * Functions declaration
  66. ===========================================================================*/
  67. /*****************************************************************
  68. * Description: RTC 回调函数,用于接收alarm通知
  69. *
  70. * Parameters:
  71. * 无
  72. *
  73. *****************************************************************/
  74. typedef void (*ql_rtc_cb)(void);
  75. /*****************************************************************
  76. * Function: ql_rtc_set_time
  77. *
  78. * Description: 设置rtc时间
  79. *
  80. * Parameters:
  81. * tm [in] 时间结构体
  82. *
  83. * Return:
  84. * 0 设置时间成功。
  85. * other 错误码。
  86. *
  87. *****************************************************************/
  88. ql_errcode_rtc_e ql_rtc_set_time(ql_rtc_time_t *tm);
  89. /*****************************************************************
  90. * Function: ql_rtc_get_time
  91. *
  92. * Description: 获取rtc时间
  93. *
  94. * Parameters:
  95. * tm [out] 时间结构体
  96. *
  97. * Return:
  98. * 0 获取时间成功。
  99. * other 错误码。
  100. *
  101. *****************************************************************/
  102. ql_errcode_rtc_e ql_rtc_get_time(ql_rtc_time_t *tm);
  103. /*****************************************************************
  104. * Function: ql_rtc_get_localtime
  105. *
  106. * Description: 获取本地rtc时间
  107. *
  108. * Parameters:
  109. * tm [out] 时间结构体
  110. *
  111. * Return:
  112. * 0 获取本地时间成功。
  113. * other 错误码。
  114. *
  115. *****************************************************************/
  116. ql_errcode_rtc_e ql_rtc_get_localtime(ql_rtc_time_t *tm);
  117. /*****************************************************************
  118. * Function: ql_rtc_set_timezone
  119. *
  120. * Description: 设置时区,以15分钟为单位
  121. *
  122. * Parameters:
  123. * timezone [in] 设置时区,时区参数范围:[-48,+56]
  124. * Return:
  125. * 0 设置时区成功。
  126. * other 错误码。
  127. *
  128. *****************************************************************/
  129. ql_errcode_rtc_e ql_rtc_set_timezone(int timezone);
  130. /*****************************************************************
  131. * Function: ql_rtc_get_timezone
  132. *
  133. * Description: 获取时区,以15分钟为单位
  134. *
  135. * Parameters:
  136. * timezone [out] 时区值,范围:[-48,+56]
  137. * Return:
  138. * 0 获取时区成功。
  139. * other 错误码。
  140. *
  141. *****************************************************************/
  142. ql_errcode_rtc_e ql_rtc_get_timezone(int * timezone);
  143. /*****************************************************************
  144. * Function: ql_rtc_print_time
  145. *
  146. * Description: 打印rtc时间
  147. *
  148. * Parameters:
  149. * tm [in] 时间结构体
  150. *
  151. * Return:
  152. * 0 打印时间成功。
  153. * other 错误码。
  154. *
  155. *****************************************************************/
  156. ql_errcode_rtc_e ql_rtc_print_time(ql_rtc_time_t tm);
  157. /*****************************************************************
  158. * Function: ql_rtc_set_alarm
  159. *
  160. * Description: 设置rtc alarm时间
  161. *
  162. * Parameters:
  163. * tm [in] 时间结构体
  164. *
  165. * Return:
  166. * 0 设置alarm时间成功。
  167. * other 错误码。
  168. *
  169. *****************************************************************/
  170. ql_errcode_rtc_e ql_rtc_set_alarm(ql_rtc_time_t *tm);
  171. /*****************************************************************
  172. * Function: ql_rtc_get_alarm
  173. *
  174. * Description: 获取rtc alarm时间
  175. *
  176. * Parameters:
  177. * tm [out] 时间结构体
  178. *
  179. * Return:
  180. * 0 获取alarm时间成功。
  181. * other 错误码。
  182. *
  183. *****************************************************************/
  184. ql_errcode_rtc_e ql_rtc_get_alarm(ql_rtc_time_t *tm);
  185. /*****************************************************************
  186. * Function: ql_rtc_enable_alarm
  187. *
  188. * Description: 打开和关闭rtc alarm
  189. *
  190. * Parameters:
  191. * on_off [in] 开关, 取值1和0, 1表示打开, 0表示关闭
  192. *
  193. * Return:
  194. * 0 设置alarm时间成功。
  195. * other 错误码。
  196. *
  197. *****************************************************************/
  198. ql_errcode_rtc_e ql_rtc_enable_alarm(unsigned char on_off);
  199. /*****************************************************************
  200. * Function: ql_rtc_get_cfg
  201. *
  202. * Description: 获取rtc启动配置
  203. *
  204. * Parameters:
  205. * ql_rtc_cfg [out] rtc配置结构体
  206. *
  207. * Return:
  208. * 0 读取rtc cfg成功。
  209. * other 错误码。
  210. *
  211. *****************************************************************/
  212. ql_errcode_rtc_e ql_rtc_get_cfg(ql_rtc_cfg_t *ql_rtc_cfg);
  213. /*****************************************************************
  214. * Function: ql_rtc_set_cfg
  215. *
  216. * Description: 设置rtc启动配置
  217. *
  218. * Parameters:
  219. * ql_rtc_cfg [in] rtc配置结构体
  220. *
  221. * Return:
  222. * 0 设置rtc cfg成功。
  223. * other 错误码。
  224. *
  225. *****************************************************************/
  226. ql_errcode_rtc_e ql_rtc_set_cfg(ql_rtc_cfg_t *ql_rtc_cfg);
  227. /*****************************************************************
  228. * Function: ql_rtc_register_cb
  229. * Attention:
  230. 1. it is forbidden to block the interrupt;
  231. 2. it is forbidden to call Audio start/stop/close, file write/read,CFW(releated to RPC)in interrupt;
  232. 3. it is forbidden to enter critical in interrupt
  233. 4. it is suggested for users to perform simple operations , or send event(no timeout) to inform your task in interrupt
  234. *
  235. * Description: 注册rtc alarm 回调函数
  236. *
  237. * Parameters:
  238. * cb [in] alarm回调函数
  239. *
  240. * Return:
  241. * 0 注册成功。
  242. * other 错误码。
  243. *
  244. *****************************************************************/
  245. ql_errcode_rtc_e ql_rtc_register_cb(ql_rtc_cb cb);
  246. #ifdef __cplusplus
  247. } /*"C" */
  248. #endif
  249. #endif /* _QL_API_RTC_H_ */