forked from forth32/qhuaweiflash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
nvdedit.h
131 lines (98 loc) · 3.06 KB
/
nvdedit.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Редактор раздела nvdload
#ifndef __NVDEDIT_H_H
#define __NVDEDIT_H_H
#include <stdint.h>
#include <QtWidgets>
// Описатели формата заголовка раздела nvdload
// Выдрано из хуавеевских исходников ядра
#define NV_FILE_MAGIC 0x766e // nv
// Описатель каждого из компонентов
struct nv_file_info {
uint32_t magic; // сигнатура 0x766e(nv)
uint32_t off; /*file offset in one section*/
uint32_t len; /*file lenght */
};
// Заголовок раздела nvdload
// для старых чипсетов (до V7R11 включительно) поле ulSimNumEx и trash отсутствует
struct nv_dload_packet_head {
struct nv_file_info nv_bin; // образ nvimg
struct nv_file_info xnv_xml; // Основной XML-компонент
struct nv_file_info xnv_xml2;
struct nv_file_info cust_xml; // Дополнительный XML-компонент
struct nv_file_info cust_xml2;
struct nv_file_info xnv_map;
struct nv_file_info xnv_map2;
uint32_t ulSimNumEx; // Число поддерживаемых модемов минус 2
uint8_t trash[36]; // описатели дополнительного модема, здесь не используются
// STRU_XNV_MAP_FILE_INFO xnv_file[0];
};
//***********************************************************
//* Класс главного окна редактора
//***********************************************************
class nvdedit : public QWidget {
Q_OBJECT
// Заголовок
struct nv_dload_packet_head hdr;
bool changed=false;
QVBoxLayout* vlm;
QGridLayout* lcomp;
QSpacerItem* rspacer;
QLabel* hdrlabel;
QLabel* ntype;
QLabel* comphdr1;
QLabel* comphdr2;
QLabel* comphdr3;
QLabel* name1;
QLabel* name2;
QLabel* name3;
QLabel* name4;
QLabel* size1;
QLabel* size2;
QLabel* size3;
QLabel* size4;
QPushButton* extr1;
QPushButton* extr2;
QPushButton* extr3;
QPushButton* extr4;
QPushButton* repl1;
QPushButton* repl2;
QPushButton* repl3;
QPushButton* repl4;
QPushButton* edit1;
QPushButton* edit2;
QPushButton* edit3;
// номер данного разела в таблице разделов
int pnum;
// локальная копия образа раздела
uint8_t* data;
uint32_t plen;// длина-128, без хуавеевского заголовка
// тип файла
int filetype;
// копии компонентов
uint8_t* nvpart;
uint8_t* xmlpart=0;
uint8_t* custxmlpart=0;
uint8_t* xmlmap=0;
void rebuild_data();
void extractor(int type);
void replacer(int type);
void xeditor(int type);
public:
nvdedit(int xpnum, QWidget* parent);
~nvdedit();
public slots:
void extract1();
void extract2();
void extract3();
void extract4();
void replace1();
void replace2();
void replace3();
void replace4();
void nvexpl();
void xedit2();
void xedit3();
//* Слот для утсановки флага-признака изменений
void setchanged() {changed=true;}
};
#endif