main_ubi_sdk v 0.1.3
This is UBI4 documentation
data_table.h
Go to the documentation of this file.
1/*
2 ******************************************************************************
3 * @file data_table.h
4 * @author A.Alborov
5 ******************************************************************************
6*/
7
8#ifndef INC_DATA_TABLE_H_
9#define INC_DATA_TABLE_H_
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#include "stdint.h"
16#include "stdbool.h"
20
21#define DATA_TABLE_INIT_CODE 0x513429EF
22
23typedef struct
24{
25 uint8_t DataCode;
26
27 uint8_t exist_change: 1;
28 uint8_t ram_image_init: 1;
29 uint8_t reserv: 6;
30 uint8_t* ram_image;
32
33
41
42
52
53
65
66
88
89
90typedef struct
91{
92 uint8_t slot;
93 uint32_t data_offset;
94 uint32_t data_size;
95
96
97}__attribute__((__packed__))data_table_write_part_struct;
98
99
107
108
109
110/*
111typedef enum {
112 DTE_UNKNOW = 0,
113 DTE_BOOTLOADER_INFO_TYPE,
114 DTE_FW_INFO_TYPE,
115 DTE_DEVICE_INFO_TYPE,
116 DTE_BOARD_INFO_TYPE,
117 DTE_PRODUCT_INFO_TYPE,
118 DTE_SERVICE_INFO,
119 DTE_FREE_SLOT = 0xFF,
120 }data_table_slots_enum;
121
122
123typedef struct
124 {
125 uint8_t data_table_version;
126 uint8_t data_table_crc;
127 uint16_t data_table_size;
128 }data_table_info_struct;
129
130
131
132typedef struct
133{
134 data_table_slots_enum DataType;
135 uint8_t DataTypeVersion;
136 uint8_t DataTypeSubVersion;
137 uint8_t crc;
138 uint16_t DataSize;
139 uint16_t StartAddressShift;
140}data_table_slot_struct;
141
142
143typedef enum {
144 DTWS_WRITE_SLOT_OK = 0,
145 DTWS_OWERWRITING_NOT_REQUERED,
146 DTWS_DATA_CONTAINE_IN_FLASH_BUFFER,
147 DTWS_SLOT_EXIST,
148 DTWS_ALL_SLOT_BUSY
149 }data_table_write_new_slot_status_enum;
150
151typedef enum {
152 DTRS_READ_SLOT_OK = 0,
153 DTRS_SLOT_NOT_FOUND
154 }data_table_read_slot_status_enum;
155
156typedef enum {
157 DTWD_WRITE_DATA_OK = 0,
158 DTWD_OWERWRITING_NOT_REQUERED,
159 DTWD_DATA_CONTAINE_IN_FLASH_BUFFER,
160 DTWD_FLASH_BUFFER_BUSY,
161 DTWD_SLOT_NOT_FOUND,
162 DTWD_SLOT_ERROR
163 }data_table_write_data_status_enum;
164
165typedef enum {
166 DTRD_READ_DATA_OK = 0,
167 DTRD_SLOT_NOT_FOUND
168 }data_table_read_data_status_enum;
169
170*/
171
172
173#define DATA_TABLE_SIZE 16
174#define DATA_TABLE_VERSION 1
175
176
177
178
179
181
183void DataTable_Close(data_table_struct* data_table);
184void DataTable_Save(data_table_struct* data_table);
185void DataTableSetRamImageFlag(data_table_struct* data_table, uint8_t slot);
186
188
189
191void DataTableInitFinish(data_table_struct* data_table);
192
196
197 data_table_write_data_in_ram_status_enum DataTable_WriteSlotData_RAM(data_table_struct* data_table, uint8_t slot, uint8_t* Data, uint32_t size);
198 void* DataTable_ReadData_RAM(data_table_struct* data_table, uint8_t slot, data_table_read_data_status_enum* status);
199
200void DataTableWriteData(data_table_struct* data_table, uint8_t slot,uint8_t* Data, data_table_write_data_status_enum* status);
202void* Data_Table_ReadData(data_table_struct* data_table, uint8_t slot, data_table_read_data_status_enum* status);
204
206void ReadSlot(data_table_struct* data_table, ubi4_bus_protocol_obj_struct* protocol_str, protocol_receive_struct receive_str);
211
212
216
217
219void DataTable_Clear_RAM(data_table_struct* data_table);
220
221void Data_Table_Reset(data_table_struct* data_table);
222
224
225 data_table_slot_compare_status_enum DataTable_CompareSlotData(data_table_struct* data_table, uint8_t Slot, uint8_t* Data, uint32_t size);
226
227
228 extern uint32_t Data_Table_TableLocation;
230
231#ifdef __cplusplus
232}
233#endif
234
235
236#endif /* INC_DATA_TABLE_H_ */
void ReadAvailableSlot_v2(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:289
void WriteDataInSlot_v2(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:105
data_table_slot_struct * DataTable_WriteNewSlot(data_table_struct *data_table, data_table_slot_struct *Row, data_table_write_new_slot_status_enum *status)
Definition data_table.c:1256
data_table_ram_image_pointer_struct * Data_Table_ReadDataImage(data_table_struct *data_table, uint8_t slot, data_table_read_data_status_enum *status)
Definition data_table.c:1544
data_table_info_struct * Data_Table_Info
void DataTable_Init_Default_RAM(data_table_struct *data_table)
Definition data_table.c:502
data_table_slot_struct * Data_Table_ReadDefaultSlot(data_table_struct *data_table, uint8_t slot, data_table_read_slot_status_enum *status)
Definition data_table.c:1471
void DataTableInitialiseRamImage(data_table_struct *data_table)
data_table_open_status_enum DataTable_Open(data_table_struct *data_table)
Definition data_table.c:1109
data_table_slot_compare_status_enum
Definition data_table.h:100
@ DTSCSE_ERROR
Definition data_table.h:105
@ DTSCSE_SIZE_NOT_MATCH
Definition data_table.h:103
@ DTSCSE_DATA_MATCH
Definition data_table.h:101
@ DTSCSE_SLOT_NOT_FOUND
Definition data_table.h:104
@ DTSCSE_DATA_NOT_MATCH
Definition data_table.h:102
void Data_Table_Reset(data_table_struct *data_table)
Definition data_table.c:647
void WriteDataInSlot(data_table_struct *data_table, command_selector_struct command)
Definition data_table.c:335
void DataTable_Save(data_table_struct *data_table)
Definition data_table.c:1203
void WriteDataPartInSlot_v2(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:180
data_table_slot_compare_status_enum DataTable_CompareSlotData(data_table_struct *data_table, uint8_t Slot, uint8_t *Data, uint32_t size)
Definition data_table.c:62
void DataTableInitFinish(data_table_struct *data_table)
Definition data_table.c:1415
data_table_initialize_status_enum DataTableInit(data_table_struct *data_table, base_memory_driver_struct *memory_driver)
Definition data_table.c:991
void ReadSlot(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:307
void DataTable_Close(data_table_struct *data_table)
Definition data_table.c:1155
void ReadDataPartInSlot_v2(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:218
void * Data_Table_ReadDefaultData(data_table_struct *data_table, uint8_t slot, data_table_read_data_status_enum *status)
Definition data_table.c:1488
void DataTable_Calc_Image_CRC(data_table_struct *data_table)
Definition data_table.c:1193
void DataTableSetRamImageFlag(data_table_struct *data_table, uint8_t slot)
Definition data_table.c:1238
data_table_slot_struct * Data_Table_ReadSlot(data_table_struct *data_table, uint8_t slot, data_table_read_slot_status_enum *status)
Definition data_table.c:1454
uint32_t Data_Table_TableLocation
void * Data_Table_ReadData(data_table_struct *data_table, uint8_t slot, data_table_read_data_status_enum *status)
Definition data_table.c:1514
void ReadDataInSlot_v2(data_table_struct *data_table, ubi4_bus_protocol_obj_struct *protocol_str, protocol_receive_struct receive_str)
Definition data_table.c:259
void DataTable_Clear_RAM(data_table_struct *data_table)
Definition data_table.c:488
void ReadAvailableSlot(data_table_struct *data_table, command_selector_struct command)
Definition data_table.c:414
void DataTableWriteData(data_table_struct *data_table, uint8_t slot, uint8_t *Data, data_table_write_data_status_enum *status)
void DataTable_Clear(data_table_struct *data_table)
void ReadDataInSlot(data_table_struct *data_table, command_selector_struct command)
void * DataTable_ReadData_RAM(data_table_struct *data_table, uint8_t slot, data_table_read_data_status_enum *status)
Definition data_table.c:1448
data_table_write_data_in_ram_status_enum DataTable_WriteSlotData_RAM(data_table_struct *data_table, uint8_t slot, uint8_t *Data, uint32_t size)
Definition data_table.c:1423
data_table_slot_compare_result_enum
Definition data_table.h:43
@ DTSCRE_SLOTS_NEW_DATA
Definition data_table.h:45
@ DTSCRE_SLOTS_NOT_FOUND
Definition data_table.h:46
@ DTSCRE_CHANGE_SUB_VERSION_ADD_DATA
Definition data_table.h:47
@ DTSCRE_CHANGE_VERSION
Definition data_table.h:49
@ DTSCRE_ERROR
Definition data_table.h:50
@ DTSCRE_SLOTS_EQUAL
Definition data_table.h:44
@ DTSCRE_CHANGE_SUB_VERSION_SUB_DATA
Definition data_table.h:48
data_table_write_data_in_ram_status_enum
Definition data_table_structs.h:90
data_table_initialize_status_enum
Definition data_table_structs.h:103
data_table_read_slot_status_enum
Definition data_table_structs.h:76
data_table_write_data_status_enum
Definition data_table_structs.h:81
data_table_read_data_status_enum
Definition data_table_structs.h:97
data_table_write_new_slot_status_enum
Definition data_table_structs.h:68
data_table_open_status_enum
Definition data_table_structs.h:117
Definition base_memory_driver.h:70
Definition main_receiver.h:110
Definition data_table.h:35
data_table_slot_struct * slots
Definition data_table.h:36
uint8_t ** data_pointer_buffer
Definition data_table.h:38
uint8_t slot_num
Definition data_table.h:37
Definition data_table_structs.h:31
Definition data_table.h:24
uint8_t reserv
Definition data_table.h:29
uint8_t * ram_image
Definition data_table.h:30
uint8_t DataCode
Definition data_table.h:25
uint8_t ram_image_init
Definition data_table.h:28
uint8_t exist_change
Definition data_table.h:27
Definition data_table.h:55
data_table_ram_image_pointer_struct * flash_image
Definition data_table.h:59
uint8_t DataCode
Definition data_table.h:56
data_table_slot_compare_result_enum check_result
Definition data_table.h:63
uint8_t * flash_data
Definition data_table.h:60
data_table_slot_struct * default_slot
Definition data_table.h:58
uint8_t * default_data
Definition data_table.h:61
data_table_slot_struct * flash_slot
Definition data_table.h:57
Definition data_table_structs.h:43
Definition data_table.h:68
uint8_t slots_num
Definition data_table.h:73
data_table_slot_struct * slots
Definition data_table.h:72
uint8_t ram_image_map_size
Definition data_table.h:81
data_table_ram_image_pointer_struct * ram_image_map
Definition data_table.h:80
data_table_info_struct * info
Definition data_table.h:71
uint32_t DataTableStartAddres
Definition data_table.h:69
void(* clear_data_table)(void *data_table)
Definition data_table.h:84
void * DataPointer
Definition data_table.h:78
base_memory_driver_struct * memory_driver
Definition data_table.h:86
data_table_default_struct default_data_table
Definition data_table.h:75
uint8_t version
Definition data_table.h:77
Definition data_table.h:91
uint32_t data_offset
Definition data_table.h:93
uint32_t data_size
Definition data_table.h:94
uint8_t slot
Definition data_table.h:92
Definition a_protocol_struct.h:18
Definition a_protocol.h:313