typedef __packed struct{
uint8_t size; // размер пакета
uint8_t cmd; // номер команды / тип пакета
} blk_head_t;
typedef __packed struct {
uint8_t dev_addr; // адрес на шине i2c
uint8_t reg_addr; // номер регистра чтения
} reg_rd_t;
typedef __packed struct {
uint8_t dev_addr; // адрес на шине i2c
uint8_t reg_addr; // номер регистра чтения
uint16_t data; // значение для записи в регистр
} reg_wr_t;
typedef int16_t adc0val_t; // значение из регистра 0
typedef int16_t adc1val_t; // значение из регистра 1
typedef int16_t adc2val_t; // значение из регистра 2
typedef int16_t adc3val_t; // значение из регистра 3
/*----------- пакеты передачи данных с значениями из регистров ---------------*/
// ADC 0 1
typedef __packed struct _blk_adc0_1_t{
blk_head_t head;
adc0val_t;
} _blk_adc0_1_t;
// ADC 1 1
typedef __packed struct _blk_adc1_1_t{
blk_head_t head;
adc1val_t;
} _blk_adc1_1_t;
// ADC 2 1
typedef __packed struct _blk_adc1_1_t{
blk_head_t head;
adc2val_t;
} _blk_adc2_1_t;
// ADC 3 1
typedef __packed struct _blk_adc1_1_t{
blk_head_t head;
adc3val_t;
} _blk_adc3_1_t;
// ADC 0 2
typedef __packed struct _blk_adc0_2_t{
blk_head_t head;
adc0val_t;
adc0val_t;
} _blk_adc0_2_t;
// ADC 1 2
typedef __packed struct _blk_adc1_2_t{
blk_head_t head;
adc1val_t;
adc1val_t;
} _blk_adc1_2_t;
// ADC 2 2
typedef __packed struct _blk_adc1_2_t{
blk_head_t head;
adc2val_t;
adc2val_t;
} _blk_adc2_2_t;
// ADC 3 2
typedef __packed struct _blk_adc1_2_t{
blk_head_t head;
adc3val_t;
adc3val_t;
} _blk_adc3_2_t;
// ADC 0 3
typedef __packed struct _blk_adc0_3_t{
blk_head_t head;
adc0val_t;
adc0val_t;
adc0val_t;
} _blk_adc0_3_t;
// ADC 1 3
typedef __packed struct _blk_adc1_3_t{
blk_head_t head;
adc1val_t;
adc1val_t;
adc1val_t;
} _blk_adc1_3_t;
// ADC 2 3
typedef __packed struct _blk_adc1_3_t{
blk_head_t head;
adc2val_t;
adc2val_t;
adc2val_t;
} _blk_adc2_3_t;
// ADC 3 3
typedef __packed struct _blk_adc1_3_t{
blk_head_t head;
adc3val_t;
adc3val_t;
adc3val_t;
} _blk_adc3_3_t;
// ADC 0 4
typedef __packed struct _blk_adc0_4_t{
blk_head_t head;
adc0val_t;
adc0val_t;
adc0val_t;
} _blk_adc0_4_t;
// ADC 1 4
typedef __packed struct _blk_adc1_4_t{
blk_head_t head;
adc1val_t;
adc1val_t;
adc1val_t;
} _blk_adc1_4_t;
// ADC 2 4
typedef __packed struct _blk_adc1_4_t{
blk_head_t head;
adc2val_t;
adc2val_t;
adc2val_t;
} _blk_adc2_4_t;
// ADC 3 4
typedef __packed struct _blk_adc1_4_t{
blk_head_t head;
adc3val_t;
adc3val_t;
adc3val_t;
} _blk_adc3_4_t;
/* ----... и так до ADC 0 31 --- */
/* Далее повторить с ADC 1 */
/* Далее повторить с ADC 2 */
/* Далее повторить с ADC 3 */
/* Далее перемежение регистров по два, их комбинации: ADC0 и ADC1, ADC0 и ADC2, ADC0 и ADC2, ADC0 и ADC3 */
/* Далее перемежение регистров по три, их комбинации: ADC0 и ADC1 и ADC2, ADC0 и ADC1 и ADC 3, ... */
/* Далее перемежение регистров по по четыре, их комбинации: ADC0 и ADC1 и ADC2 и ADC3, ADC1 и ADC2 и ADC 3 и ADC0, ... */
/* Потом всё снова при разных типах у разных регистров, вариант 1:
typedef uint16_t adc0val_t; // значение из регистра 0
typedef int16_t adc1val_t; // значение из регистра 1
typedef int16_t adc2val_t; // значение из регистра 2
typedef int16_t adc3val_t; // значение из регистра 3 */