-
Notifications
You must be signed in to change notification settings - Fork 29
/
nvfile.h
60 lines (52 loc) · 2.37 KB
/
nvfile.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
//
// Описатели внутренней структуры nvram-файлов
//
// Хуавеевские типы данных
#define U32 uint32_t
#define U16 uint16_t
#define U8 uint8_t
#define FILE_MAGIC_NUM 0x224e4944 // Сигнатура заголовка файла
// Структура файла NVRAM
//
//------- управляющая Структура -----------------
// +00 Заголовок (nvfile_header) - 96 байта
// +file_offset - каталог файлов
// +item_offset - каталог ячеек
// 4 байта CRC управляющей структуры
//-------- Данные ячеек ----------------------
// данные идут последовательно ячейка за ячейкой, без разрывов
//
// Струкура заголовка nv-файла
struct nvfile_header {
U32 magicnum; // сигнатура
U32 ctrl_size; // размер управляющих структур (смещение до данных)
U16 version; // * file version * /
U8 modem_num; // номер модема для мультимодемных конфигураций
U8 crcflag; // признак наличия CRC
U32 file_offset; // смещение до списка файлов
U32 file_num; // число файлов в списке
U32 file_size; // размер списка файлов
U32 item_offset; // смещение до списка ячеек
U32 item_count; // число ячеек в списке
U32 item_size; // размер списка ячеек
U8 reserve2 [12];
U32 timetag [4]; // отметка воемени
U8 product_version [32]; // версия устройства
};
// Элемент каталога файлов
struct nv_file {
U32 id; // номер файла
U8 name [28]; // имя файла
U32 size; // размер файла
U32 offset; // смещение до файла
};
// Элемент каталога ячеек
struct nv_item {
U16 id; // номер ячейки
U16 len; // размер в байтах
U32 off; // смещение от начала файла
U16 file_id; // файл, к которому относится ячейка
U16 priority; // приоритет ячейки
U8 modem_num; // номер модема
U8 reserved [3];
};