123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- /******************************************************************************/
- /**
- @file mid_ota.h
- @brief ability about ota
- @author Unknow
- *******************************************************************************/
- #ifndef _MID_OTA_H_
- #define _MID_OTA_H_
- #include "mid_common.h"
- #include "dvb_dr_dvb.h"
- #include "mid_siutil_13818.h"
- //#define DEBUG_SECTION
- #define DEBUG_OTA_POINT(fmt, arg...) UMFDBG(0,"\n OTA:"fmt, ##arg)
- #ifdef CONFIG_SUPPORT_OTA_UPGRADE
- #define MAX_OTA_A_FREQ (50)
- #define MAX_COMPONENT_A_PMT (20) /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT */
- #define RECEIVE_DATA_TIME_OUT (5000) //fanzhang add 2011/02/28 for mantis bug 126151
- #define OTA_READ_WEIGHT (5)
- #define OTA_ERASE_WEIGHT (40)
- typedef struct tagOtaThreadData
- {
- pthread_t pThreadId; // thread id
- GL_Queue_t hQHdl; // siquery queue handler
- GL_Semaphore_t pSemaphore; // semaphor for notification
- }OTA_THREAD_DATA;
- /**
- * \brief dvb_s_tp_t
- */
- typedef struct dvb_s_tp_s
- {
- UINT32 u32LNBFreq;
- UINT16 u16TpFreq;
- UINT16 u16TpSymb;
- UINT8 u8H_V;
- UINT8 u8DiseqcSw;
- UINT8 u8DiseqcValue;
- UINT8 u822K;
- UINT8 u8LNBPower;
- UINT8 u8_12VSw;
- }dvb_s_tp_t;
- /**
- * \brief dvb_t_tp_t
- */
- typedef struct dvb_t_tp_s
- {
- UINT32 u32TpFreq;
- UINT8 u8BW;
- }dvb_t_tp_t;
- //#endif
- /**
- * \brief dvbota_data_t
- */
- typedef struct dvbota_data_s
- {
- #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
- UINT8 u8SsuType; /*simple or enhance*/
- UINT8 u8SsuAvailable;/*available or not*/
- #endif
- UINT8 u8OtaDvbType;
- UINT8 u8DvbType;
- UINT16 u16TSID;
- UINT16 u16ONID;
- UINT16 i_service_id;
- UINT16 u16Pid;
- UINT8 u8OuiData[3];
- UINT16 u16HwModel;
- UINT16 u16HwVersion;
- UINT16 u16Model;
- UINT16 u16SwVersion;
- UINT32 u32Filesize;
- UINT32 Downloadid;
- union
- {
- dvb_t_tp_t stDvbtTp;
- dvb_s_tp_t stDvbsTp;
- }unTpInfo;
- } dvbota_data_t;
- typedef enum _OTA_DATA_Status_t {
- OTA_DATA_PMT_0 = 0x00,
- OTA_DATA_PMT_1,
- OTA_DATA_F_OUI,
- OTA_DATA_F_HW_MODEL,
- OTA_DATA_F_HW_VERSION,
- OTA_DATA_F_CODESIZE,/* CONFIG_CODE_FLASH_SIZE in makefile*/
- OTA_DATA_F_MODEL,
- OTA_DATA_F_SW,
- OTA_DATA_F_LOGO_SW,
- OTA_DATA_F_SERIAL_NUM,
- OTA_DATA_F_SERIAL_NO,
- OTA_DATA_TS = 0xF00,
- OTA_DATA_TS_OTA_TYPE,
- #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
- OTA_DATA_TS_SSU_AVAIL, /* availed nor not*/
- OTA_DATA_TS_SSU_TYPE, /* simple or enhance*/
- #endif
- OTA_DATA_TS_PMT_COMPONENT_TAG, /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT */
- OTA_DATA_TS_DVB_TYPE,
- OTA_DATA_TS_TSID, /*transport_stream_id*/
- OTA_DATA_TS_ONID,/*Original_network_id*/
- OTA_DATA_TS_SERVICE_ID,
- OTA_DATA_TS_PID,
- OTA_DATA_TS_OUI,
- OTA_DATA_TS_HW_MODEL,
- OTA_DATA_TS_HW_VERSION,
- OTA_DATA_TS_SW,
- OTA_DATA_TS_MODEL,
- OTA_DATA_TS_FILESIZE,
- OTA_DATA_TS_DOWNLOADID,
- OTA_DATA_TS_DVB_T,
- OTA_DATA_TS_DVB_S,
- OTA_DATA_TS_UPGRADE_INFO,
- OTA_DATA_MAX,
- } OTA_DATA_Status_t;
- typedef enum
- {
- BOOTLOADER_EXSIT_IN_DRAM = 1 << 0,
- BOOTLOADER_EXSIT_IN_FLASH = 1 << 1,
- BOOTLOADER_NOT_EXSIT_IN_DRAM = 1 << 2,
- BOOTLOADER_NOT_EXSIT_IN_FLASH = 1 << 3,
- BOOTLOADER_EQUAL_DRAM_TO_FLASH = 1 << 4,
- BOOTLOADER_NEW_IN_DRAM = 1 << 5,
- BOOTLOADER_OLD_IN_DRAM = 1 << 6,
- BOOTLOADER_COMPARE_ERROR = 1 << 7,
- } bootloader_comparasion_t;
- typedef enum
- {
- BIN_INVALID = 1,
- BIN_MAINCODE = 2,
- BIN_BOOTLOADER = 4,
- }upgrade_bin_validation_t;
- #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
- typedef enum _ota_ssu_avail
- {
- OTA_SSU_AVAILABLE_NOW = 1, /*start time < current time < end time (in second)*/
- OTA_SSU_AVAILABLE_Next,
- OTA_SSU_AVAILABLE_MAX,
- }OTA_SSU_AVAILABLE_E;
- #define SSU_SIMPLE_PROFILE 0x00
- #define SSU_ENHANCE_PROFILE 0x03
- #endif
- // ota monitored data
- /**
- * \brief OtaMonitoredData_t
- */
- typedef struct _ota_monitored_data {
- UINT16 *u16PmtPid;
- UINT16 *u16PmtNum;
- dvbota_data_t stDvbOtaOui;
- UINT8 u8Oui[3];
- UINT16 u16FlashHwModel;
- UINT16 u16FlashHwVersion;
- UINT16 u16FlashModel;
- UINT16 u16FlashSwVersion;
- UINT16 u16FlashLogoSwVersion;
- UINT16 u16FlashCodeSize;
- //OTA_DVB_UPDATE_PARA_t stOtaInfo;
- } OtaMonitoredData_t;
- // ota type
- /**
- * \brief OtaType_t
- */
- typedef struct _ota_type {
- UINT8 u8OtaType;
- SSU_location_tag_t component_tag_arry[MAX_COMPONENT_A_PMT];
- UINT16 u16ElementaryPid;
-
- } OtaType_t;
- typedef enum _DVBAPP_Upgrade_STATE_e
- {
- UpgradeAPP_NOTIFY_START_UPDATE_POP = 0, /*!<the state of notify start updata*/
- UpgradeAPP_COMMD_SEARCH_DOWNLOAD_INFO, /*!<the state of search download info */
- UpgradeAPP_COMMD_SEARCH_DOWNLOAD_FAIL, /*!<failure of search download info */
- UpgradeAPP_COMMD_GET_SECTION_PROGRESS, /*!<the state of get section progress*/
- UpgradeAPP_COMMD_START_FLASH_UPDATE, /*!<*the state of start flash update*/
- UpgradeAPP_COMMD_GET_FLASH_PROGRESS, /*!<the state of get flash progress*/
- UpgradeAPP_COMMD_STOP_UPDATE, /*!<the state of stop update*/
- UpgradeAPP_COMMD_UPDATE_FAILURE, /*!<the state of update failure*/
- UpgradeAPP_COMMD_ERASE_FLASH_PROGRESS, /*!<the state of erase flash progress*/
- UpgradeAPP_COMMD_WRITE_FLASH_PROGRESS, /*!<the state of write flash progress*/
- UpgradeAPP_COMMD_UPDATE_SUCCESS, /*!<the state of update success*/
- UpgradeAPP_COMMD_UPDATE_TIME_OUT, //fanzhang add 2011/02/28 for mantis bug 126151
- UpgradeAPP_CALLBK_TYPE_MAX, /*!<the max legth of callback type*/
- }DVBAPP_Upgrade_STATE_e;
- typedef int (*iDvbAppOTACallback) (DVBAPP_Upgrade_STATE_e eCallbkType,unsigned short stage);
- extern volatile OtaMonitoredData_t _stOtaMonThreadData;
- extern volatile GL_Mutex_t g_OtaMutexId;
- /******************************************************************************/
- /**
- * \fn INT32 MID_OTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData)
- *
- * \brief to get ota monitor thread data.\n
- *
- * \param stType: monitor type.\n
- *
- * \param data: monitor data.\n
- *
- * \return \e 0 : success \n
- * \e -1 : fail
- * \note none
- *
- ********************************************************************************************/
- extern INT32 MID_OTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData);
- /******************************************************************************/
- /**
- * \fn INT32 DVBOTA_GetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData)
- *
- * \brief to set ota monitor thread data.\n
- *
- * \param stType: monitor type.\n
- *
- * \param data: monitor data.\n
- *
- * \return \e 0 : success \n
- * \e -1 : fail
- * \note none
- *
- ********************************************************************************************/
- void MID_OTA_GetOTAInitInfo_FromFlah(void);
- INT32 MID_OTA_SetOtaMonThreadData(OTA_DATA_Status_t stType,void* pData);
- GL_Status_t MID_OTA_OtaMonThreadDataMutexCreate(void);
- GL_Status_t Mid_OtaThreadDataMutexDelete(void);
- bool Mid_OtaGetUpgradeReceiveStatue(void);//fanzhang add 2011/02/28 for mantis bug 126151
- void MID_OTA_InitOtaTypeData(void);
- void MID_OTA_SetOtaTypeData(UINT8 stType, UINT16 pid, void* component_tag);
- void MID_OTA_GetOtaTypeData(void *component_tag, UINT8 *stType, UINT16 *pid, UINT8 number);
- void MID_OTA_Init(iDvbAppOTACallback pfCallback);
- #ifdef CONFIG_SUPPORT_SSU_UPGRADE
- UINT8 MID_OTA_GetState(void);
- void MID_OTA_SetState(UINT8 u8state);
- #endif
- #endif
- #endif
|