kopia lustrzana https://github.com/jgromes/RadioLib
Explicitly assign all struct members
rodzic
c25c653119
commit
dace7fb871
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Ładowanie…
Reference in New Issue