Explicitly assign all struct members

pull/1596/head
GUVWAF 2025-09-13 15:21:18 +02:00
rodzic c25c653119
commit dace7fb871
4 zmienionych plików z 74 dodań i 25 usunięć

Wyświetl plik

@ -1291,26 +1291,39 @@ RadioLibTime_t LR11x0::getTimeOnAir(size_t len) {
} else if (cr == 7) {
cr = cr + 1;
}
dr = {.lora = { .spreadingFactor = this->spreadingFactor, .bandwidth = this->bandwidthKhz, .codingRate = cr } };
pc = {.lora = { .preambleLength = this->preambleLengthLoRa, .implicitHeader = (this->headerType == RADIOLIB_LR11X0_LORA_HEADER_IMPLICIT) ? true : false, \
.crcEnabled = (this->crcTypeLoRa == RADIOLIB_LR11X0_LORA_CRC_ENABLED) ? true : false, \
.ldrOptimize = (bool)this->ldrOptimize } };
dr.lora.spreadingFactor = this->spreadingFactor;
dr.lora.bandwidth = this->bandwidthKhz;
dr.lora.codingRate = cr;
pc.lora.preambleLength = this->preambleLengthLoRa;
pc.lora.implicitHeader = (this->headerType == RADIOLIB_LR11X0_LORA_HEADER_IMPLICIT) ? true : false;
pc.lora.crcEnabled = (this->crcTypeLoRa == RADIOLIB_LR11X0_LORA_CRC_ENABLED) ? true : false;
pc.lora.ldrOptimize = (bool)this->ldrOptimize;
break;
}
case ModemType_t::RADIOLIB_MODEM_FSK: {
dr = {.fsk = { .bitRate = (float)this->bitRate / 1000.0f, .freqDev = (float)this->frequencyDev } };
dr.fsk.bitRate = (float)this->bitRate / 1000.0f;
dr.fsk.freqDev = (float)this->frequencyDev;
uint8_t crcLen = 0;
if(this->crcTypeGFSK == RADIOLIB_LR11X0_GFSK_CRC_1_BYTE || this->crcTypeGFSK == RADIOLIB_LR11X0_GFSK_CRC_1_BYTE_INV) {
crcLen = 1;
} else if(this->crcTypeGFSK == RADIOLIB_LR11X0_GFSK_CRC_2_BYTE || this->crcTypeGFSK == RADIOLIB_LR11X0_GFSK_CRC_2_BYTE_INV) {
crcLen = 2;
}
pc = {.fsk = { .preambleLength = this->preambleLengthGFSK, .syncWordLength = this->syncWordLength, .crcLength = crcLen } };
pc.fsk.preambleLength = this->preambleLengthGFSK;
pc.fsk.syncWordLength = this->syncWordLength;
pc.fsk.crcLength = crcLen;
break;
}
case ModemType_t::RADIOLIB_MODEM_LRFHSS: {
dr = {.lrFhss = { .bw = this->lrFhssBw, .cr = this->lrFhssCr, .narrowGrid = (this->lrFhssGrid == RADIOLIB_LR11X0_LR_FHSS_GRID_STEP_NON_FCC) ? true : false } };
pc = {.lrFhss = { .hdrCount = this->lrFhssHdrCount } };
dr.lrFhss.bw = this->lrFhssBw;
dr.lrFhss.cr = this->lrFhssCr;
dr.lrFhss.narrowGrid = (this->lrFhssGrid == RADIOLIB_LR11X0_LR_FHSS_GRID_STEP_NON_FCC) ? true : false;
pc.lrFhss.hdrCount = this->lrFhssHdrCount;
break;
}
default:

Wyświetl plik

@ -1428,23 +1428,40 @@ RadioLibTime_t SX126x::getTimeOnAir(size_t len) {
PacketConfig_t packetConfig = {};
if(type == RADIOLIB_SX126X_PACKET_TYPE_LORA) {
dataRate = {.lora = {.spreadingFactor = this->spreadingFactor, .bandwidth = this->bandwidthKhz, .codingRate = (uint8_t)(this->codingRate + 4) } };
packetConfig = {.lora = {.preambleLength = this->preambleLengthLoRa, .implicitHeader = this->headerType == RADIOLIB_SX126X_LORA_HEADER_IMPLICIT, .crcEnabled = (bool)this->crcTypeLoRa, .ldrOptimize = (bool)this->ldrOptimize}};
dataRate.lora.spreadingFactor = this->spreadingFactor;
dataRate.lora.bandwidth = this->bandwidthKhz;
dataRate.lora.codingRate = (uint8_t)(this->codingRate + 4);
packetConfig.lora.preambleLength = this->preambleLengthLoRa;
packetConfig.lora.crcEnabled = (bool)this->crcTypeLoRa;
packetConfig.lora.implicitHeader = this->headerType == RADIOLIB_SX126X_LORA_HEADER_IMPLICIT;
packetConfig.lora.ldrOptimize = (bool)this->ldrOptimize;
} else if(type == RADIOLIB_SX126X_PACKET_TYPE_GFSK) {
modem = RADIOLIB_MODEM_FSK;
float bitRate = RADIOLIB_SX126X_CRYSTAL_FREQ * 32.0f * 1000.0f / (float)this->bitRate;
dataRate = {.fsk = {.bitRate = bitRate, .freqDev = (float)this->frequencyDev }};
dataRate.fsk.bitRate = bitRate;
dataRate.fsk.freqDev = (float)this->frequencyDev;
uint8_t crcLen = 0;
if(this->crcTypeFSK == RADIOLIB_SX126X_GFSK_CRC_1_BYTE || this->crcTypeFSK == RADIOLIB_SX126X_GFSK_CRC_1_BYTE_INV) {
crcLen = 1;
} else if(this->crcTypeFSK == RADIOLIB_SX126X_GFSK_CRC_2_BYTE || this->crcTypeFSK == RADIOLIB_SX126X_GFSK_CRC_2_BYTE_INV) {
crcLen = 2;
}
packetConfig = {.fsk = {.preambleLength = this->preambleLengthFSK, .syncWordLength = this->syncWordLength, .crcLength = crcLen}};
packetConfig.fsk.preambleLength = this->preambleLengthFSK;
packetConfig.fsk.syncWordLength = this->syncWordLength;
packetConfig.fsk.crcLength = crcLen;
} else if(type == RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS) {
modem = RADIOLIB_MODEM_LRFHSS;
dataRate = {.lrFhss = {.bw = this->lrFhssBw, .cr = this->lrFhssCr, .narrowGrid = this->lrFhssGridNonFcc }};
packetConfig = {.lrFhss = {.hdrCount = this->lrFhssHdrCount}};
dataRate.lrFhss.bw = this->lrFhssBw;
dataRate.lrFhss.cr = this->lrFhssCr;
dataRate.lrFhss.narrowGrid = this->lrFhssGridNonFcc;
packetConfig.lrFhss.hdrCount = this->lrFhssHdrCount;
} else {
return(RADIOLIB_ERR_WRONG_MODEM);
}

Wyświetl plik

@ -1178,17 +1178,23 @@ RadioLibTime_t SX127x::getTimeOnAir(size_t len) {
switch (modem) {
case(RADIOLIB_SX127X_LORA): {
dataRate.lora.spreadingFactor = this->spreadingFactor;
dataRate.lora.bandwidth = this->bandwidth;
dataRate.lora.codingRate = this->codingRate;
// Get number of preamble symbols
uint16_t n_pre = ((this->mod->SPIgetRegValue(RADIOLIB_SX127X_REG_PREAMBLE_MSB) << 8) | this->mod->SPIgetRegValue(RADIOLIB_SX127X_REG_PREAMBLE_LSB));
dataRate = { .lora = { .spreadingFactor = this->spreadingFactor, .bandwidth = this->bandwidth, .codingRate = this->codingRate } };
packetConfig = { .lora = { .preambleLength = n_pre, .implicitHeader = this->implicitHdr, .crcEnabled = this->crcEnabled, .ldrOptimize = this->ldroEnabled } };
packetConfig.lora.preambleLength = n_pre;
packetConfig.lora.implicitHeader = this->implicitHdr;
packetConfig.lora.crcEnabled = this->crcEnabled;
packetConfig.lora.ldrOptimize = this->ldroEnabled;
return(calculateTimeOnAir((ModemType_t)RADIOLIB_MODEM_LORA, dataRate, packetConfig, len));
}
case(RADIOLIB_SX127X_FSK_OOK): {
dataRate = { .fsk = { .bitRate = this->bitRate, .freqDev = this->frequencyDev } };
dataRate.fsk.bitRate = this->bitRate;
dataRate.fsk.freqDev = this->frequencyDev;
// get number of bits preamble
uint16_t n_pre = (uint16_t) ((this->mod->SPIgetRegValue(RADIOLIB_SX127X_REG_PREAMBLE_MSB_FSK) << 8) | this->mod->SPIgetRegValue(RADIOLIB_SX127X_REG_PREAMBLE_LSB_FSK)) * 8;
@ -1205,7 +1211,9 @@ RadioLibTime_t SX127x::getTimeOnAir(size_t len) {
len += 1;
}
packetConfig = { .fsk = { .preambleLength = n_pre, .syncWordLength = n_syncWord, .crcLength = (uint8_t)(crcEnabled * 2) } };
packetConfig.fsk.preambleLength = n_pre;
packetConfig.fsk.syncWordLength = n_syncWord;
packetConfig.fsk.crcLength = (uint8_t)(crcEnabled * 2);
return(calculateTimeOnAir((ModemType_t)RADIOLIB_MODEM_FSK, dataRate, packetConfig, len));
}

Wyświetl plik

@ -1397,8 +1397,8 @@ RadioLibTime_t SX128x::calculateTimeOnAir(ModemType_t modem, DataRate_t dr, Pack
RadioLibTime_t SX128x::getTimeOnAir(size_t len) {
// check active modem
uint8_t modem = getPacketType();
DataRate_t dr;
PacketConfig_t pc;
DataRate_t dr = {};
PacketConfig_t pc = {};
if(modem == RADIOLIB_SX128X_PACKET_TYPE_LORA) {
uint8_t sf = this->spreadingFactor >> 4;
@ -1409,19 +1409,30 @@ RadioLibTime_t SX128x::getTimeOnAir(size_t len) {
} else if (cr == 7) {
cr = cr + 1;
}
dr = {.lora = {.spreadingFactor = sf, .bandwidth = this->bandwidthKhz, .codingRate = cr}};
dr.lora.spreadingFactor = sf;
dr.lora.codingRate = cr;
dr.lora.bandwidth = this->bandwidthKhz;
uint16_t preambleLength = (this->preambleLengthLoRa & 0x0F) * (uint32_t(1) << ((this->preambleLengthLoRa & 0xF0) >> 4));
pc = {.lora = { .preambleLength = preambleLength, .implicitHeader = this->headerType == RADIOLIB_SX128X_LORA_HEADER_IMPLICIT, .crcEnabled = this->crcLoRa == RADIOLIB_SX128X_LORA_CRC_ON, .ldrOptimize = false }};
pc.lora.preambleLength = preambleLength;
pc.lora.implicitHeader = this->headerType == RADIOLIB_SX128X_LORA_HEADER_IMPLICIT;
pc.lora.crcEnabled = this->crcLoRa == RADIOLIB_SX128X_LORA_CRC_ON;
pc.lora.ldrOptimize = false;
return(calculateTimeOnAir(ModemType_t::RADIOLIB_MODEM_LORA, dr, pc, len));
} else if (modem == RADIOLIB_SX128X_PACKET_TYPE_GFSK) {
dr = {.fsk = {.bitRate = (float)this->bitRateKbps, .freqDev = this->frequencyDev}};
dr.fsk.bitRate = (float)this->bitRateKbps;
dr.fsk.freqDev = this->frequencyDev;
uint8_t crcLength = this->crcGFSK >> 4;
uint16_t preambleLength = (this->preambleLengthGFSK >> 2) + 4;
uint8_t syncWordLen = ((this->syncWordLen >> 1) + 1) * 8;
pc = {.fsk = {.preambleLength = preambleLength, .syncWordLength = syncWordLen, .crcLength = crcLength}};
pc.fsk.preambleLength = preambleLength;
pc.fsk.syncWordLength = syncWordLen;
pc.fsk.crcLength = crcLength;
return(calculateTimeOnAir(ModemType_t::RADIOLIB_MODEM_FSK, dr, pc, len));
} else {