QString TerrestrialDeliverySystemDescriptor::toString() const { QString str = QString("TerrestrialDeliverySystemDescriptor: "); str.append(QString("Frequency: %1\n").arg(FrequencyHz())); str.append(QString(" BW=%1k, C=%2, HP=%3, LP=%4, GI=%5, TransMode=%6k") .arg(BandwidthString()) .arg(ConstellationString()) .arg(CodeRateHPString()) .arg(CodeRateLPString()) .arg(GuardIntervalString()) .arg(TransmissionModeString())); return str; }
void SetLoRaParameters(int Channel, int ImplicitOrExplicit, int ErrorCoding, int Bandwidth, int SpreadingFactor, int LowDataRateOptimize) { writeRegister(Channel, REG_MODEM_CONFIG, ImplicitOrExplicit | ErrorCoding | Bandwidth); writeRegister(Channel, REG_MODEM_CONFIG2, SpreadingFactor | CRC_ON); writeRegister(Channel, REG_MODEM_CONFIG3, 0x04 | LowDataRateOptimize); // 0x04: AGC sets LNA gain writeRegister(Channel, REG_DETECT_OPT, (readRegister(Channel, REG_DETECT_OPT) & 0xF8) | ((SpreadingFactor == SPREADING_6) ? 0x05 : 0x03)); // 0x05 For SF6; 0x03 otherwise writeRegister(Channel, REG_DETECTION_THRESHOLD, (SpreadingFactor == SPREADING_6) ? 0x0C : 0x0A); // 0x0C for SF6, 0x0A otherwise Config.LoRaDevices[Channel].CurrentBandwidth = Bandwidth; ChannelPrintf(Channel, 2, 1, "%s, %s, SF%d, EC4:%d %s", ImplicitOrExplicit == IMPLICIT_MODE ? "Implicit" : "Explicit", BandwidthString(Bandwidth), SpreadingFactor >> 4, (ErrorCoding >> 1) + 4, LowDataRateOptimize ? "LDRO" : ""); }