ql_api_fota.h 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**
  2. @file
  3. ql_api_fota.h
  4. @brief
  5. quectel fota interface header definition.
  6. */
  7. /*================================================================
  8. Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
  9. Quectel Wireless Solution Proprietary and Confidential.
  10. =================================================================*/
  11. /*=================================================================
  12. EDIT HISTORY FOR MODULE
  13. This section contains comments describing changes made to the module.
  14. Notice that changes are listed in reverse chronological order.
  15. WHEN WHO WHAT, WHERE, WHY
  16. ------------ ------- -------------------------------------------------------------------------------
  17. =================================================================*/
  18. #ifndef QL_API_FOTA_H
  19. #define QL_API_FOTA_H
  20. #include "ql_api_common.h"
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /*========================================================================
  25. * Macro Definition
  26. *========================================================================*/
  27. #define QL_FOTA_ERRCODE_BASE (QL_COMPONENT_FOTA<<16)
  28. #define QL_FOTA_PACK_NAME_MAX_LEN (172)
  29. /*========================================================================
  30. * Enumeration Definition
  31. *========================================================================*/
  32. //fota component detail errcode, 4 bytes
  33. typedef enum
  34. {
  35. QL_FOTA_SUCCESS = 0,
  36. QL_FOTA_EXECUTE_ERR = 502|QL_FOTA_ERRCODE_BASE,//异常操作
  37. #ifdef __QUEC_OEM_VER_LT__
  38. QL_FOTA_IMAGE_VERIFY_READY_ERR = 507|QL_FOTA_ERRCODE_BASE,//fota更新包校验设置准备状态失败
  39. QL_FOTA_IMAGE_VERIFY_ERR = 507|QL_FOTA_ERRCODE_BASE,//fota更新包校验不设置准备状态失败
  40. #else
  41. QL_FOTA_IMAGE_VERIFY_READY_ERR = 510|QL_FOTA_ERRCODE_BASE,//fota更新包校验设置准备状态失败
  42. QL_FOTA_IMAGE_VERIFY_ERR = 547|QL_FOTA_ERRCODE_BASE,//fota更新包校验不设置准备状态失败
  43. #endif
  44. QL_FOTA_FLAG_SET_ERR = 548|QL_FOTA_ERRCODE_BASE,//设置FOTA标志失败
  45. QL_FOTA_BUSY_ERR = 549|QL_FOTA_ERRCODE_BASE,//设置FOTA总线繁忙
  46. QL_FOTA_POINT_NULL_ERR = 550|QL_FOTA_ERRCODE_BASE,//操作空指针错误。
  47. QL_FOTA_PARAM_INVALID = 551|QL_FOTA_ERRCODE_BASE,//输入参数无效
  48. QL_FOTA_PACKPATH_INVALID = 552|QL_FOTA_ERRCODE_BASE,//输入的文件路径是无效的错误。
  49. QL_FOTA_ADAPTION_RESET_ERR = 553|QL_FOTA_ERRCODE_BASE,//重置fota 更新包的路径信息,使其恢复为默认值失败。
  50. QL_FOTA_ADAPTION_SAVE_ERR = 554|QL_FOTA_ERRCODE_BASE,//保存fota 更新包的路径信息到配置文件失败
  51. QL_FOTA_ADAPTION_DELETE_ERR = 555|QL_FOTA_ERRCODE_BASE,//删除fota更新包的路径信息的配置文件失败。
  52. QL_FOTA_ADAPTION_LOAD_ERR = 556|QL_FOTA_ERRCODE_BASE,//读取fota更新包的路径信息的配置文件失败。
  53. QL_FOTA_ADAPTION_LENGTH_ERR = 557|QL_FOTA_ERRCODE_BASE,//保存 fota pack name 空间出错。
  54. QL_FOTA_SIGNATURE_CHECK_ERR = 558|QL_FOTA_ERRCODE_BASE,//fota更新包验签失败
  55. } ql_errcode_fota_e;
  56. typedef enum
  57. {
  58. QL_FOTA_FINISHED = 0, // FOTA 升级操作完成
  59. QL_FOTA_NOT_EXIST, // 没有fota更新包,这不是一个错误状态,需要下载fota更新包
  60. QL_FOTA_READY, // fota更新包已经被设置准备状态,等待更新
  61. QL_FOTA_STATUS_INVALID, // FOTA状态是无效的
  62. QL_FOTA_PACK_CHECK_ERR, // FOTA包校验失败
  63. } ql_fota_result_e;
  64. /*========================================================================
  65. * Variable Definition
  66. *========================================================================*/
  67. /*========================================================================
  68. * function Definition
  69. *========================================================================*/
  70. /*****************************************************************
  71. * Function: ql_fota_get_pack_name
  72. *
  73. * Description:
  74. * 获得获得当前fota更新包的路径信息。
  75. * Parameters:
  76. * p_pac_file_name [in] 存放当前fota更新包路径空间的首地址
  77. * length [in] 空间的大小
  78. * Return:
  79. * QL_FOTA_POINT_NULL_ERR, 操作空指针错误。
  80. * QL_FOTA_ADAPTION_LENGTH_ERR, 保存 fota pack name 空间出错。
  81. * QL_FOTA_PACKPATH_INVALID, 输入的文件路径是无效的错误。
  82. * QL_FOTA_SUCCESS,操作成功。
  83. *
  84. *****************************************************************/
  85. ql_errcode_fota_e ql_fota_get_pack_name(char *p_pac_file_name,int* length);
  86. /*****************************************************************
  87. * Function: ql_fota_image_verify
  88. *
  89. * Description:
  90. * 验证fota文件,如果有效,将fota标志设置为ready。如果无效,函数应该返回QL_FOTA_IMAGE_VERIFY_READY_ERR。检查文件要花些时间。
  91. * Parameters:
  92. * PackFileName [in] 设置fota更新包路径字符串的首地址
  93. * Attention:
  94. * 校验完后,不要在往文件系统写入文件,否则可能会导致校验成功后,实际fota升级空间不足导致失败
  95. * Return:
  96. * QL_FOTA_PACKPATH_INVALID, 输入的文件路径是无效的错误。
  97. * QL_FOTA_ADAPTION_LENGTH_ERR, 保存 fota pack name 空间出错
  98. * QL_FOTA_IMAGE_VERIFY_READY_ERR, fota更新包校验并设置准备状态失败。
  99. * QL_FOTA_ADAPTION_SAVE_ERR,保存fota 更新包的路径信息到配置文件失败
  100. * QL_FOTA_SUCCESS,操作成功。
  101. *
  102. *****************************************************************/
  103. ql_errcode_fota_e ql_fota_image_verify(char* PackFileName);
  104. /*****************************************************************
  105. * Function: ql_fota_image_verify_without_setflag
  106. *
  107. * Description:
  108. * 彻底更新fota文件内容,如果无效,函数应该返回QL_FOTA_IMAGE_VERIFY_ERR。更新文件要花些时间。建议直接调用ql_fota_image_verify函数
  109. * Parameters:
  110. * PackFileName [in] 设置fota更新包路径字符串的首地址
  111. * Return:
  112. * QL_FOTA_PACKPATH_INVALID, 输入的文件路径是无效的错误。
  113. * QL_FOTA_ADAPTION_LENGTH_ERR, 保存 fota pack name 空间出错
  114. * QL_FOTA_IMAGE_VERIFY_ERR, fota更新包校验不设置准备状态失败
  115. * QL_FOTA_ADAPTION_SAVE_ERR,保存fota 更新包的路径信息到配置文件失败
  116. * QL_FOTA_SUCCESS,操作成功。
  117. *
  118. *****************************************************************/
  119. ql_errcode_fota_e ql_fota_image_verify_without_setflag(char* PackFileName);
  120. /*****************************************************************
  121. * Function: ql_fota_file_reset
  122. *
  123. * Description:
  124. * 清除fota文件。当你将del_image设置为true时,你将删除fota图像文件,无论如何函数应该返回成功。
  125. * Parameters:
  126. * del_image [in] del_image设置为true时,将删除fota图像文件,否则不删除
  127. * Return:
  128. * QL_FOTA_ADAPTION_DELETE_ERR, 删除fota更新包的路径信息的配置文件失败。
  129. * QL_FOTA_SUCCESS,操作成功。
  130. *
  131. *****************************************************************/
  132. ql_errcode_fota_e ql_fota_file_reset(bool del_image);
  133. /*****************************************************************
  134. * Function: ql_fota_get_result
  135. *
  136. * Description:
  137. * 通过param p_fota_result得到fota结果输出。如果fota结果为“QL_FOTA_FINISHED”,则该功能将自动删除所有关于fota的文件。如果p_fota_result不为NULL,函数应该返回成功
  138. * Parameters:
  139. * p_fota_result [in] 获取fota升级之后的完成状态。
  140. * Return:
  141. * QL_FOTA_POINT_NULL_ERR, 操作空指针错误。
  142. * QL_FOTA_SUCCESS,操作成功。
  143. *
  144. *****************************************************************/
  145. ql_errcode_fota_e ql_fota_get_result(ql_fota_result_e *p_fota_result);
  146. /*****************************************************************
  147. * Function: ql_fota_pac_name_convert_fs
  148. *
  149. * Description:
  150. * 将FOTA模块的使用的文件路径信息转化为模块文件系统使用的文件路径信息。
  151. * Parameters:
  152. * fs_path [in] 文件系统使用的文件路径信息。
  153. * fota_path [in] FOTA模块的使用的文件路径信息。
  154. * fs_path_length [in] fs_path的空间大小,当返回QL_FOTA_SUCCESS时,表示转化后的fota更新包路径信息的长度。
  155. * Return:
  156. * QL_FOTA_POINT_NULL_ERR, 操作空指针错误。
  157. * QL_FOTA_PACKPATH_INVALID,输入的文件路径是无效的错误。
  158. * QL_FOTA_PACK_NAME_LENGTH_FAILED,保存 fota pack name 空间出错。
  159. * QL_FOTA_SUCCESS, 操作成功。
  160. *
  161. *****************************************************************/
  162. ql_errcode_fota_e ql_fota_pack_name_convert_fs(const char *fota_path,char* fs_path,int *fs_path_length);
  163. /*****************************************************************
  164. * Function: ql_fs_convert_fota_pac_name
  165. *
  166. * Description:
  167. * 将模块文件系统使用的文件路径信息转化为FOTA模块的使用的文件路径信息。
  168. * Parameters:
  169. * fs_path [in] 文件系统使用的文件路径信息。
  170. * fota_path [in] FOTA模块的使用的文件路径信息。
  171. * fs_path_length [in] fota_path的空间大小,当返回QL_FOTA_SUCCESS时,表示转化后的fota更新包路径信息的长度。
  172. * Return:
  173. * QL_FOTA_POINT_NULL_ERR, 操作空指针错误。
  174. * QL_FOTA_PACKPATH_INVALID,输入的文件路径是无效的错误。
  175. * QL_FOTA_PACK_NAME_LENGTH_FAILED,保存 fota pack name 空间出错。
  176. * QL_FOTA_SUCCESS, 操作成功。
  177. *
  178. *****************************************************************/
  179. ql_errcode_fota_e ql_fs_convert_fota_pack_name(char *fs_path,char *fota_path,int *fota_path_length);
  180. #ifdef __cplusplus
  181. } /*"C" */
  182. #endif
  183. #endif /* QL_API_FOTA_H */