/******************************************************************************/ /** @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, /*!