summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tv/CUpgradeFBC.h (plain)
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
83class CUpgradeFBC: public CThread {
84public:
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
107private:
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