hilink_open_ota_adapter.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * Copyright (c) Huawei Technologies Co., Ltd. 2018-2021. All rights reserved.
  3. * Description: OTA适配层接口(需设备厂商实现)
  4. */
  5. #ifndef HILINK_OPEN_OTA_ADAPTER_H
  6. #define HILINK_OPEN_OTA_ADAPTER_H
  7. #include "hilink_typedef.h"
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /* OTA升级分区1 */
  12. #ifndef UPGRADE_FW_BIN1
  13. #define UPGRADE_FW_BIN1 0x00
  14. #endif
  15. /* OTA升级分区2 */
  16. #ifndef UPGRADE_FW_BIN2
  17. #define UPGRADE_FW_BIN2 0x01
  18. #endif
  19. /* 只有MCU升级时立即重启 */
  20. #ifndef RESTART_FLAG_NOW
  21. #define RESTART_FLAG_NOW 0x01
  22. #endif
  23. /* 有模组时切换分区后再重启 */
  24. #ifndef RESTART_FLAG_LATER
  25. #define RESTART_FLAG_LATER 0x02
  26. #endif
  27. /*
  28. * Flash初始化
  29. * 返回值是true时,表示初始化正常
  30. * 返回值是false时,表示初始化异常
  31. */
  32. bool HILINK_OtaAdapterFlashInit(void);
  33. /*
  34. * 判断需要升级的分区
  35. * 返回值是UPGRADE_FW_BIN1时,表示升级固件到分区1
  36. * 返回值是UPGRADE_FW_BIN2时,表示升级固件到分区2
  37. */
  38. unsigned int HILINK_OtaAdapterGetUpdateIndex(void);
  39. /*
  40. * 擦除需要升级的分区
  41. * size表示需要擦除的分区大小
  42. * 返回值是0时,表示擦除成功
  43. * 返回值是-1时,表示擦除失败
  44. */
  45. int HILINK_OtaAdapterFlashErase(unsigned int size);
  46. /*
  47. * 升级数据写入升级的分区
  48. * buf表示待写入数据
  49. * bufLen表示待写入数据的长度
  50. * 返回值是0时,表示写入成功
  51. * 返回值是-1时,表示写入失败
  52. */
  53. int HILINK_OtaAdapterFlashWrite(const unsigned char *buf, unsigned int bufLen);
  54. /*
  55. * 读取升级分区数据
  56. * offset表示读写偏移
  57. * buf表示输出数据的内存地址
  58. * bufLen表示输出数据的内存长度
  59. * 返回值是0时,表示读取成功
  60. * 返回值是-1时,表示读取失败
  61. */
  62. int HILINK_OtaAdapterFlashRead(unsigned int offset, unsigned char *buf, unsigned int bufLen);
  63. /*
  64. * 分区升级结束
  65. * 返回值是true时,表示结束正常
  66. * 返回值是false时,表示结束异常
  67. */
  68. bool HILINK_OtaAdapterFlashFinish(void);
  69. /* 获取升级区间最大长度 */
  70. unsigned int HILINK_OtaAdapterFlashMaxSize(void);
  71. /*
  72. * 根据标志重启模组
  73. * flag表示重启标志
  74. * 当flag是RESTART_FLAG_NOW时,表示只有MCU升级时立即重启
  75. * 当flag是RESTART_FLAG_LATER时,表示有模组时切换分区后再重启
  76. */
  77. void HILINK_OtaAdapterRestart(int flag);
  78. #ifdef __cplusplus
  79. }
  80. #endif
  81. #endif