mid_ota.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. /******************************************************************************/
  2. /**
  3. @file mid_ota.h
  4. @brief ability about ota
  5. @author Unknow
  6. *******************************************************************************/
  7. #ifndef _MID_OTA_H_
  8. #define _MID_OTA_H_
  9. #include "mid_common.h"
  10. #include "dvb_dr_dvb.h"
  11. #include "mid_siutil_13818.h"
  12. //#define DEBUG_SECTION
  13. #define DEBUG_OTA_POINT(fmt, arg...) UMFDBG(0,"\n OTA:"fmt, ##arg)
  14. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  15. #define MAX_OTA_A_FREQ (50)
  16. #define MAX_COMPONENT_A_PMT (20) /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT */
  17. #define RECEIVE_DATA_TIME_OUT (5000) //fanzhang add 2011/02/28 for mantis bug 126151
  18. #define OTA_READ_WEIGHT (5)
  19. #define OTA_ERASE_WEIGHT (40)
  20. typedef struct tagOtaThreadData
  21. {
  22. pthread_t pThreadId; // thread id
  23. GL_Queue_t hQHdl; // siquery queue handler
  24. GL_Semaphore_t pSemaphore; // semaphor for notification
  25. }OTA_THREAD_DATA;
  26. /**
  27. * \brief dvb_s_tp_t
  28. */
  29. typedef struct dvb_s_tp_s
  30. {
  31. UINT32 u32LNBFreq;
  32. UINT16 u16TpFreq;
  33. UINT16 u16TpSymb;
  34. UINT8 u8H_V;
  35. UINT8 u8DiseqcSw;
  36. UINT8 u8DiseqcValue;
  37. UINT8 u822K;
  38. UINT8 u8LNBPower;
  39. UINT8 u8_12VSw;
  40. }dvb_s_tp_t;
  41. /**
  42. * \brief dvb_t_tp_t
  43. */
  44. typedef struct dvb_t_tp_s
  45. {
  46. UINT32 u32TpFreq;
  47. UINT8 u8BW;
  48. }dvb_t_tp_t;
  49. //#endif
  50. /**
  51. * \brief dvbota_data_t
  52. */
  53. typedef struct dvbota_data_s
  54. {
  55. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  56. UINT8 u8SsuType; /*simple or enhance*/
  57. UINT8 u8SsuAvailable;/*available or not*/
  58. #endif
  59. UINT8 u8OtaDvbType;
  60. UINT8 u8DvbType;
  61. UINT16 u16TSID;
  62. UINT16 u16ONID;
  63. UINT16 i_service_id;
  64. UINT16 u16Pid;
  65. UINT8 u8OuiData[3];
  66. UINT16 u16HwModel;
  67. UINT16 u16HwVersion;
  68. UINT16 u16Model;
  69. UINT16 u16SwVersion;
  70. UINT32 u32Filesize;
  71. UINT32 Downloadid;
  72. union
  73. {
  74. dvb_t_tp_t stDvbtTp;
  75. dvb_s_tp_t stDvbsTp;
  76. }unTpInfo;
  77. } dvbota_data_t;
  78. typedef enum _OTA_DATA_Status_t {
  79. OTA_DATA_PMT_0 = 0x00,
  80. OTA_DATA_PMT_1,
  81. OTA_DATA_F_OUI,
  82. OTA_DATA_F_HW_MODEL,
  83. OTA_DATA_F_HW_VERSION,
  84. OTA_DATA_F_CODESIZE,/* CONFIG_CODE_FLASH_SIZE in makefile*/
  85. OTA_DATA_F_MODEL,
  86. OTA_DATA_F_SW,
  87. OTA_DATA_F_LOGO_SW,
  88. OTA_DATA_F_SERIAL_NUM,
  89. OTA_DATA_F_SERIAL_NO,
  90. OTA_DATA_TS = 0xF00,
  91. OTA_DATA_TS_OTA_TYPE,
  92. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  93. OTA_DATA_TS_SSU_AVAIL, /* availed nor not*/
  94. OTA_DATA_TS_SSU_TYPE, /* simple or enhance*/
  95. #endif
  96. OTA_DATA_TS_PMT_COMPONENT_TAG, /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT */
  97. OTA_DATA_TS_DVB_TYPE,
  98. OTA_DATA_TS_TSID, /*transport_stream_id*/
  99. OTA_DATA_TS_ONID,/*Original_network_id*/
  100. OTA_DATA_TS_SERVICE_ID,
  101. OTA_DATA_TS_PID,
  102. OTA_DATA_TS_OUI,
  103. OTA_DATA_TS_HW_MODEL,
  104. OTA_DATA_TS_HW_VERSION,
  105. OTA_DATA_TS_SW,
  106. OTA_DATA_TS_MODEL,
  107. OTA_DATA_TS_FILESIZE,
  108. OTA_DATA_TS_DOWNLOADID,
  109. OTA_DATA_TS_DVB_T,
  110. OTA_DATA_TS_DVB_S,
  111. OTA_DATA_TS_UPGRADE_INFO,
  112. OTA_DATA_MAX,
  113. } OTA_DATA_Status_t;
  114. typedef enum
  115. {
  116. BOOTLOADER_EXSIT_IN_DRAM = 1 << 0,
  117. BOOTLOADER_EXSIT_IN_FLASH = 1 << 1,
  118. BOOTLOADER_NOT_EXSIT_IN_DRAM = 1 << 2,
  119. BOOTLOADER_NOT_EXSIT_IN_FLASH = 1 << 3,
  120. BOOTLOADER_EQUAL_DRAM_TO_FLASH = 1 << 4,
  121. BOOTLOADER_NEW_IN_DRAM = 1 << 5,
  122. BOOTLOADER_OLD_IN_DRAM = 1 << 6,
  123. BOOTLOADER_COMPARE_ERROR = 1 << 7,
  124. } bootloader_comparasion_t;
  125. typedef enum
  126. {
  127. BIN_INVALID = 1,
  128. BIN_MAINCODE = 2,
  129. BIN_BOOTLOADER = 4,
  130. }upgrade_bin_validation_t;
  131. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  132. typedef enum _ota_ssu_avail
  133. {
  134. OTA_SSU_AVAILABLE_NOW = 1, /*start time < current time < end time (in second)*/
  135. OTA_SSU_AVAILABLE_Next,
  136. OTA_SSU_AVAILABLE_MAX,
  137. }OTA_SSU_AVAILABLE_E;
  138. #define SSU_SIMPLE_PROFILE 0x00
  139. #define SSU_ENHANCE_PROFILE 0x03
  140. #endif
  141. // ota monitored data
  142. /**
  143. * \brief OtaMonitoredData_t
  144. */
  145. typedef struct _ota_monitored_data {
  146. UINT16 *u16PmtPid;
  147. UINT16 *u16PmtNum;
  148. dvbota_data_t stDvbOtaOui;
  149. UINT8 u8Oui[3];
  150. UINT16 u16FlashHwModel;
  151. UINT16 u16FlashHwVersion;
  152. UINT16 u16FlashModel;
  153. UINT16 u16FlashSwVersion;
  154. UINT16 u16FlashLogoSwVersion;
  155. UINT16 u16FlashCodeSize;
  156. //OTA_DVB_UPDATE_PARA_t stOtaInfo;
  157. } OtaMonitoredData_t;
  158. // ota type
  159. /**
  160. * \brief OtaType_t
  161. */
  162. typedef struct _ota_type {
  163. UINT8 u8OtaType;
  164. SSU_location_tag_t component_tag_arry[MAX_COMPONENT_A_PMT];
  165. UINT16 u16ElementaryPid;
  166. } OtaType_t;
  167. typedef enum _DVBAPP_Upgrade_STATE_e
  168. {
  169. UpgradeAPP_NOTIFY_START_UPDATE_POP = 0, /*!<the state of notify start updata*/
  170. UpgradeAPP_COMMD_SEARCH_DOWNLOAD_INFO, /*!<the state of search download info */
  171. UpgradeAPP_COMMD_SEARCH_DOWNLOAD_FAIL, /*!<failure of search download info */
  172. UpgradeAPP_COMMD_GET_SECTION_PROGRESS, /*!<the state of get section progress*/
  173. UpgradeAPP_COMMD_START_FLASH_UPDATE, /*!<*the state of start flash update*/
  174. UpgradeAPP_COMMD_GET_FLASH_PROGRESS, /*!<the state of get flash progress*/
  175. UpgradeAPP_COMMD_STOP_UPDATE, /*!<the state of stop update*/
  176. UpgradeAPP_COMMD_UPDATE_FAILURE, /*!<the state of update failure*/
  177. UpgradeAPP_COMMD_ERASE_FLASH_PROGRESS, /*!<the state of erase flash progress*/
  178. UpgradeAPP_COMMD_WRITE_FLASH_PROGRESS, /*!<the state of write flash progress*/
  179. UpgradeAPP_COMMD_UPDATE_SUCCESS, /*!<the state of update success*/
  180. UpgradeAPP_COMMD_UPDATE_TIME_OUT, //fanzhang add 2011/02/28 for mantis bug 126151
  181. UpgradeAPP_CALLBK_TYPE_MAX, /*!<the max legth of callback type*/
  182. }DVBAPP_Upgrade_STATE_e;
  183. typedef int (*iDvbAppOTACallback) (DVBAPP_Upgrade_STATE_e eCallbkType,unsigned short stage);
  184. extern volatile OtaMonitoredData_t _stOtaMonThreadData;
  185. extern volatile GL_Mutex_t g_OtaMutexId;
  186. /******************************************************************************/
  187. /**
  188. * \fn INT32 MID_OTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData)
  189. *
  190. * \brief to get ota monitor thread data.\n
  191. *
  192. * \param stType: monitor type.\n
  193. *
  194. * \param data: monitor data.\n
  195. *
  196. * \return \e 0 : success \n
  197. * \e -1 : fail
  198. * \note none
  199. *
  200. ********************************************************************************************/
  201. extern INT32 MID_OTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData);
  202. /******************************************************************************/
  203. /**
  204. * \fn INT32 DVBOTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData)
  205. *
  206. * \brief to set ota monitor thread data.\n
  207. *
  208. * \param stType: monitor type.\n
  209. *
  210. * \param data: monitor data.\n
  211. *
  212. * \return \e 0 : success \n
  213. * \e -1 : fail
  214. * \note none
  215. *
  216. ********************************************************************************************/
  217. void MID_OTA_GetOTAInitInfo_FromFlah(void);
  218. INT32 MID_OTA_SetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData);
  219. GL_Status_t MID_OTA_OtaMonThreadDataMutexCreate(void);
  220. GL_Status_t Mid_OtaThreadDataMutexDelete(void);
  221. bool Mid_OtaGetUpgradeReceiveStatue(void);//fanzhang add 2011/02/28 for mantis bug 126151
  222. void MID_OTA_InitOtaTypeData(void);
  223. void MID_OTA_SetOtaTypeData(UINT8 stType, UINT16 pid, void* component_tag);
  224. void MID_OTA_GetOtaTypeData(void *component_tag, UINT8 *stType, UINT16 *pid, UINT8 number);
  225. void MID_OTA_Init(iDvbAppOTACallback pfCallback);
  226. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  227. UINT8 MID_OTA_GetState(void);
  228. void MID_OTA_SetState(UINT8 u8state);
  229. #endif
  230. #endif
  231. #endif