У меня есть некоторые данные, организованные в виде вложенных структур, и я пытаюсь получить к ним доступ. Есть 4 слоя, а затем окончательная структура всегда имеет 2 переменные; val
и addr
:
struct Flash{
struct Settings{
struct UnderVoltage{
struct Threshold{
int16_t val = 2850;
uint16_t addr = 0x4481;
} Threshold;
struct Delay{
uint8_t val = 2;
uint16_t addr = 0x4483;
} Delay;
struct Recovery{
int16_t val = 2900;
uint16_t addr = 0x4484;
} Recovery;
} UnderVoltage;
} Settings;
} Flash;
Я хочу иметь возможность иметь функцию, аналогичную
void writeThreshold(){
writeFlash( Flash.Settings.UnderVoltage.Threshold );
}
, которая затем вызывает функцию типа
void writeFlash( struct dataParam ){
byte addr1 = dataParam.addr & 0xFF;
byte addr2 = ( dataParam.addr >> 8 ) & 0xFF;
uint8_t byteLen = sizeof( dataParam.val );
byte valBytes[ byteLen ];
for( int i = 0; i < byteLen; i++ ){
valBytes[ i ] = dataParam.val >> ( i * 8 );
}
}
Так есть ли способ отправить структурное вложение в функцию, чтобы функция могла обращаться к переменным внутри нее?
Спасибо