blob: 70b8057f4f42962d496c8e77ae13e7f2b212d965
1 | #ifndef __TV_UPGRADE_FBC_H__ |
2 | #define __TV_UPGRADE_FBC_H__ |
3 | |
4 | #include "CFbcCommunication.h" |
5 | #include "../tvutils/CThread.h" |
6 | |
7 | #define CC_FBC_V01_00_VAL (0x10000000) |
8 | #define CC_FBC_V02_00_VAL (0x20000000) |
9 | #define CC_FBC_V02_01_VAL (0x20000001) |
10 | #define CC_FBC_V03_00_VAL (0x30000000) |
11 | #define CC_FBC_V03_01_VAL (0x30000001) |
12 | |
13 | #define CC_FBC_V01_FILE_SIZE (655360) |
14 | #define CC_FBC_V02_FILE_SIZE (786432) |
15 | #define CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE (0xB000) |
16 | #define CC_FBC_V03_FILE_SIZE (2097152) |
17 | #define CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE (0xB000) |
18 | |
19 | #define CC_UPGRADE_MAX_BLOCK_LEN (0x10000) |
20 | #define CC_UPGRADE_DATA_BUF_SIZE (CC_UPGRADE_MAX_BLOCK_LEN + 4) |
21 | |
22 | #define CC_UPGRADE_MODE_BOOT_MAIN (0) |
23 | #define CC_UPGRADE_MODE_BOOT (1) |
24 | #define CC_UPGRADE_MODE_MAIN (2) |
25 | #define CC_UPGRADE_MODE_COMPACT_BOOT (3) |
26 | #define CC_UPGRADE_MODE_ALL (4) |
27 | |
28 | #define CC_UPGRADE_MODE_MAIN_PQ_WB (5) |
29 | #define CC_UPGRADE_MODE_ALL_PQ_WB (6) |
30 | #define CC_UPGRADE_MODE_MAIN_WB (7) |
31 | #define CC_UPGRADE_MODE_ALL_WB (8) |
32 | #define CC_UPGRADE_MODE_MAIN_PQ (9) |
33 | #define CC_UPGRADE_MODE_ALL_PQ (10) |
34 | |
35 | #define CC_UPGRADE_MODE_PQ_WB_ONLY (11) |
36 | #define CC_UPGRADE_MODE_WB_ONLY (12) |
37 | #define CC_UPGRADE_MODE_PQ_ONLY (13) |
38 | |
39 | #define CC_UPGRADE_MODE_CUR_PQ_BIN (14) |
40 | #define CC_UPGRADE_MODE_ALL_PQ_BIN (15) |
41 | |
42 | #define CC_UPGRADE_MODE_BURN (16) |
43 | |
44 | #define CC_UPGRADE_MODE_DUMMY (17) |
45 | |
46 | #define CC_UPGRADE_V01_BOOT_OFFSET (0x0) |
47 | #define CC_UPGRADE_V01_BOOT_LEN (0x20000) |
48 | #define CC_UPGRADE_V01_MAIN_OFFSET (0x20000) |
49 | #define CC_UPGRADE_V01_MAIN_LEN (CC_FBC_V01_FILE_SIZE - CC_UPGRADE_V01_MAIN_OFFSET) |
50 | #define CC_UPGRADE_V01_ALL_LENGTH (CC_FBC_V01_FILE_SIZE) |
51 | |
52 | #define CC_UPGRADE_V02_COMPACT_BOOT_OFFSET (0x0) |
53 | #define CC_UPGRADE_V02_COMPACT_BOOT_LEN (0x10000) |
54 | #define CC_UPGRADE_V02_BOOT_OFFSET (0x10000) |
55 | #define CC_UPGRADE_V02_BOOT_LEN (0x30000) |
56 | #define CC_UPGRADE_V02_MAIN_OFFSET (0x40000) |
57 | #define CC_UPGRADE_V02_MAIN_LEN (0x80000) |
58 | #define CC_UPGRADE_V02_BOOT_BAK_OFFSET (0xC0000) |
59 | #define CC_UPGRADE_V02_BOOT_BAK_LEN (0x30000) |
60 | #define CC_UPGRADE_V02_MAIN_BAK_OFFSET (0xF0000) |
61 | #define CC_UPGRADE_V02_MAIN_BAK_LEN (0x80000) |
62 | #define CC_UPGRADE_V02_ALL_LENGTH (0x170000) |
63 | |
64 | #define CC_UPGRADE_V02_CUR_PQ_OFFSET (0xAF000) |
65 | |
66 | #define CC_UPGRADE_V03_COMPACT_BOOT_OFFSET (CC_UPGRADE_V02_COMPACT_BOOT_OFFSET) |
67 | #define CC_UPGRADE_V03_COMPACT_BOOT_LEN (CC_UPGRADE_V02_COMPACT_BOOT_LEN) |
68 | #define CC_UPGRADE_V03_BOOT_OFFSET (CC_UPGRADE_V02_BOOT_OFFSET) |
69 | #define CC_UPGRADE_V03_BOOT_LEN (CC_UPGRADE_V02_BOOT_LEN) |
70 | #define CC_UPGRADE_V03_MAIN_OFFSET (CC_UPGRADE_V02_MAIN_OFFSET) |
71 | #define CC_UPGRADE_V03_MAIN_LEN (CC_UPGRADE_V02_MAIN_LEN) |
72 | #define CC_UPGRADE_V03_BOOT_BAK_OFFSET (CC_UPGRADE_V02_BOOT_BAK_OFFSET) |
73 | #define CC_UPGRADE_V03_BOOT_BAK_LEN (CC_UPGRADE_V02_BOOT_BAK_LEN) |
74 | #define CC_UPGRADE_V03_MAIN_BAK_OFFSET (CC_UPGRADE_V02_MAIN_BAK_OFFSET) |
75 | #define CC_UPGRADE_V03_MAIN_BAK_LEN (CC_UPGRADE_V02_MAIN_BAK_LEN) |
76 | #define CC_UPGRADE_V03_PROTECT_DATA_START (0x1FF000) |
77 | #define CC_UPGRADE_V03_PROTECT_DATA_LEN (0x1000) |
78 | #define CC_UPGRADE_V03_ALL_LENGTH (CC_UPGRADE_V03_PROTECT_DATA_START) |
79 | |
80 | #define CC_UPGRADE_V03_CUR_PQ_OFFSET (CC_UPGRADE_V02_CUR_PQ_OFFSET) |
81 | |
82 | |
83 | class CUpgradeFBC: public CThread { |
84 | public: |
85 | CUpgradeFBC(); |
86 | ~CUpgradeFBC(); |
87 | |
88 | int start(); |
89 | int stop(); |
90 | int GetUpgradeFBCProgress(); |
91 | int SetUpgradeFileName(char *file_name); |
92 | int SetUpgradeFileSize(int file_size); |
93 | int SetUpgradeBlockSize(int block_size); |
94 | int SetUpgradeMode(int mode); |
95 | |
96 | class IUpgradeFBCObserver { |
97 | public: |
98 | IUpgradeFBCObserver() {}; |
99 | virtual ~IUpgradeFBCObserver() {}; |
100 | virtual void onUpgradeStatus(int state, int param) {}; |
101 | }; |
102 | void setObserver(IUpgradeFBCObserver *pOb) |
103 | { |
104 | mpObserver = pOb; |
105 | }; |
106 | |
107 | private: |
108 | bool threadLoop(); |
109 | |
110 | int AddCRCToDataBuf(unsigned char data_buf[], int data_len); |
111 | |
112 | int mState; |
113 | int mUpgradeMode; |
114 | int mOPTotalSize; |
115 | int mBinFileSize; |
116 | int mUpgradeBlockSize; |
117 | unsigned char *mBinFileBuf; |
118 | char mFileName[256]; |
119 | unsigned char mDataBuf[CC_UPGRADE_DATA_BUF_SIZE]; |
120 | IUpgradeFBCObserver *mpObserver; |
121 | CFbcCommunication *mCfbcIns; |
122 | |
123 | enum UpgradeState { |
124 | STATE_STOPED = 0, |
125 | STATE_RUNNING, |
126 | STATE_FINISHED, |
127 | STATE_ABORT, |
128 | }; |
129 | |
130 | enum FBCUpgradeErrorCode { |
131 | ERR_SERIAL_CONNECT = -1, |
132 | ERR_OPEN_BIN_FILE = -2, |
133 | ERR_BIN_FILE_SIZE = -3, |
134 | ERR_READ_BIN_FILE = -4, |
135 | ERR_NOT_SUPPORT_UPGRADE_MDOE = -5, |
136 | ERR_NOT_CORRECT_UPGRADE_BLKSIZE = -6, |
137 | ERR_DATA_CRC_ERROR = -7, |
138 | }; |
139 | }; |
140 | |
141 | #endif //__TV_UPGRADE_FBC_H__ |
142 |