mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-02-11 04:07:50 -05:00
LoRa modulator: REST API (1)
This commit is contained in:
parent
738f671255
commit
9aaa4756a2
@ -48,6 +48,7 @@ const QString LoRaMod::m_channelId = "LoRaMod";
|
||||
LoRaMod::LoRaMod(DeviceAPI *deviceAPI) :
|
||||
ChannelAPI(m_channelIdURI, ChannelAPI::StreamSingleSource),
|
||||
m_deviceAPI(deviceAPI),
|
||||
m_currentPayloadTime(0.0),
|
||||
m_settingsMutex(QMutex::Recursive),
|
||||
m_sampleRate(48000)
|
||||
{
|
||||
@ -154,28 +155,76 @@ void LoRaMod::applySettings(const LoRaModSettings& settings, bool force)
|
||||
if ((settings.m_channelMute != m_settings.m_channelMute) || force) {
|
||||
reverseAPIKeys.append("channelMute");
|
||||
}
|
||||
if ((settings.m_spreadFactor != m_settings.m_spreadFactor) || force) {
|
||||
reverseAPIKeys.append("spreadFactor");
|
||||
}
|
||||
if ((settings.m_deBits != m_settings.m_deBits) || force) {
|
||||
reverseAPIKeys.append("deBits");
|
||||
}
|
||||
|
||||
if ((settings.m_spreadFactor != m_settings.m_spreadFactor)
|
||||
|| (settings.m_deBits != m_settings.m_deBits) || force) {
|
||||
m_encoder.setNbSymbolBits(settings.m_spreadFactor, settings.m_deBits);
|
||||
}
|
||||
|
||||
if ((settings.m_codingScheme != m_settings.m_codingScheme) || force) {
|
||||
if ((settings.m_codingScheme != m_settings.m_codingScheme) || force)
|
||||
{
|
||||
reverseAPIKeys.append("codingScheme");
|
||||
m_encoder.setCodingScheme(settings.m_codingScheme);
|
||||
}
|
||||
|
||||
if ((settings.m_nbParityBits != m_settings.m_nbParityBits || force)) {
|
||||
if ((settings.m_nbParityBits != m_settings.m_nbParityBits || force))
|
||||
{
|
||||
reverseAPIKeys.append("nbParityBits");
|
||||
m_encoder.setLoRaParityBits(settings.m_nbParityBits);
|
||||
}
|
||||
|
||||
if ((settings.m_hasCRC != m_settings.m_hasCRC) || force) {
|
||||
if ((settings.m_hasCRC != m_settings.m_hasCRC) || force)
|
||||
{
|
||||
reverseAPIKeys.append("hasCRC");
|
||||
m_encoder.setLoRaHasCRC(settings.m_hasCRC);
|
||||
}
|
||||
|
||||
if ((settings.m_hasHeader != m_settings.m_hasHeader) || force) {
|
||||
if ((settings.m_hasHeader != m_settings.m_hasHeader) || force)
|
||||
{
|
||||
reverseAPIKeys.append("hasHeader");
|
||||
m_encoder.setLoRaHasHeader(settings.m_hasHeader);
|
||||
}
|
||||
|
||||
if ((settings.m_messageType != m_settings.m_messageType) || force) {
|
||||
reverseAPIKeys.append("messageType");
|
||||
}
|
||||
if ((settings.m_beaconMessage != m_settings.m_beaconMessage) || force) {
|
||||
reverseAPIKeys.append("beaconMessage");
|
||||
}
|
||||
if ((settings.m_cqMessage != m_settings.m_cqMessage) || force) {
|
||||
reverseAPIKeys.append("cqMessage");
|
||||
}
|
||||
if ((settings.m_replyMessage != m_settings.m_replyMessage) || force) {
|
||||
reverseAPIKeys.append("replyMessage");
|
||||
}
|
||||
if ((settings.m_reportMessage != m_settings.m_reportMessage) || force) {
|
||||
reverseAPIKeys.append("reportMessage");
|
||||
}
|
||||
if ((settings.m_replyReportMessage != m_settings.m_replyReportMessage) || force) {
|
||||
reverseAPIKeys.append("replyReportMessage");
|
||||
}
|
||||
if ((settings.m_rrrMessage != m_settings.m_rrrMessage) || force) {
|
||||
reverseAPIKeys.append("rrrMessage");
|
||||
}
|
||||
if ((settings.m_73Message != m_settings.m_73Message) || force) {
|
||||
reverseAPIKeys.append("73Message");
|
||||
}
|
||||
if ((settings.m_qsoTextMessage != m_settings.m_qsoTextMessage) || force) {
|
||||
reverseAPIKeys.append("qsoTextMessage");
|
||||
}
|
||||
if ((settings.m_textMessage != m_settings.m_textMessage) || force) {
|
||||
reverseAPIKeys.append("textMessage");
|
||||
}
|
||||
if ((settings.m_bytesMessage != m_settings.m_bytesMessage) || force) {
|
||||
reverseAPIKeys.append("bytesMessage");
|
||||
}
|
||||
|
||||
LoRaModBaseband::MsgConfigureLoRaModPayload *payloadMsg = nullptr;
|
||||
std::vector<unsigned short> symbols;
|
||||
|
||||
@ -258,12 +307,11 @@ void LoRaMod::applySettings(const LoRaModSettings& settings, bool force)
|
||||
if (payloadMsg)
|
||||
{
|
||||
m_basebandSource->getInputMessageQueue()->push(payloadMsg);
|
||||
m_currentPayloadTime = (symbols.size()*(1<<settings.m_spreadFactor)*1000.0) / LoRaModSettings::bandwidths[settings.m_bandwidthIndex];
|
||||
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
MsgReportPayloadTime *rpt = MsgReportPayloadTime::create(
|
||||
(symbols.size()*(1<<settings.m_spreadFactor)*1000.0) / LoRaModSettings::bandwidths[settings.m_bandwidthIndex]
|
||||
);
|
||||
MsgReportPayloadTime *rpt = MsgReportPayloadTime::create(m_currentPayloadTime);
|
||||
getMessageQueueToGUI()->push(rpt);
|
||||
}
|
||||
}
|
||||
@ -359,15 +407,105 @@ void LoRaMod::webapiUpdateChannelSettings(
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response)
|
||||
{
|
||||
if (channelSettingsKeys.contains("channelMute")) {
|
||||
settings.m_channelMute = response.getLoRaModSettings()->getChannelMute() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("inputFrequencyOffset")) {
|
||||
settings.m_inputFrequencyOffset = response.getLoRaModSettings()->getInputFrequencyOffset();
|
||||
}
|
||||
if (channelSettingsKeys.contains("bandwidthIndex")) {
|
||||
settings.m_bandwidthIndex = response.getLoRaModSettings()->getBandwidthIndex();
|
||||
}
|
||||
if (channelSettingsKeys.contains("spreadFactor")) {
|
||||
settings.m_spreadFactor = response.getLoRaModSettings()->getSpreadFactor();
|
||||
}
|
||||
if (channelSettingsKeys.contains("deBits")) {
|
||||
settings.m_deBits = response.getLoRaModSettings()->getDeBits();
|
||||
}
|
||||
if (channelSettingsKeys.contains("preambleChirps")) {
|
||||
settings.m_preambleChirps = response.getLoRaModSettings()->getPreambleChirps();
|
||||
}
|
||||
if (channelSettingsKeys.contains("quietMillis")) {
|
||||
settings.m_quietMillis = response.getLoRaModSettings()->getQuietMillis();
|
||||
}
|
||||
if (channelSettingsKeys.contains("syncWord")) {
|
||||
settings.m_syncWord = response.getLoRaModSettings()->getSyncWord();
|
||||
}
|
||||
if (channelSettingsKeys.contains("syncWord")) {
|
||||
settings.m_syncWord = response.getLoRaModSettings()->getSyncWord();
|
||||
}
|
||||
if (channelSettingsKeys.contains("channelMute")) {
|
||||
settings.m_channelMute = response.getLoRaModSettings()->getChannelMute() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("codingScheme")) {
|
||||
settings.m_codingScheme = (LoRaModSettings::CodingScheme) response.getLoRaModSettings()->getCodingScheme();
|
||||
}
|
||||
if (channelSettingsKeys.contains("nbParityBits")) {
|
||||
settings.m_nbParityBits = response.getLoRaModSettings()->getNbParityBits();
|
||||
}
|
||||
if (channelSettingsKeys.contains("hasCRC")) {
|
||||
settings.m_hasCRC = response.getLoRaModSettings()->getHasCrc() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("hasHeader")) {
|
||||
settings.m_hasHeader = response.getLoRaModSettings()->getHasHeader() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("myCall")) {
|
||||
settings.m_myCall = *response.getLoRaModSettings()->getMyCall();
|
||||
}
|
||||
if (channelSettingsKeys.contains("urCall")) {
|
||||
settings.m_urCall = *response.getLoRaModSettings()->getUrCall();
|
||||
}
|
||||
if (channelSettingsKeys.contains("myLoc")) {
|
||||
settings.m_myLoc = *response.getLoRaModSettings()->getMyLoc();
|
||||
}
|
||||
if (channelSettingsKeys.contains("myRpt")) {
|
||||
settings.m_myRpt = *response.getLoRaModSettings()->getMyRpt();
|
||||
}
|
||||
if (channelSettingsKeys.contains("messageType")) {
|
||||
settings.m_messageType = (LoRaModSettings::MessageType) response.getLoRaModSettings()->getMessageType();
|
||||
}
|
||||
if (channelSettingsKeys.contains("beaconMessage")) {
|
||||
settings.m_beaconMessage = *response.getLoRaModSettings()->getBeaconMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("cqMessage")) {
|
||||
settings.m_cqMessage = *response.getLoRaModSettings()->getCqMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("replyMessage")) {
|
||||
settings.m_replyMessage = *response.getLoRaModSettings()->getReplyMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("reportMessage")) {
|
||||
settings.m_reportMessage = *response.getLoRaModSettings()->getReportMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("replyReportMessage")) {
|
||||
settings.m_replyReportMessage = *response.getLoRaModSettings()->getReplyReportMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("rrrMessage")) {
|
||||
settings.m_rrrMessage = *response.getLoRaModSettings()->getRrrMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("message73")) {
|
||||
settings.m_73Message = *response.getLoRaModSettings()->getMessage73();
|
||||
}
|
||||
if (channelSettingsKeys.contains("qsoTextMessage")) {
|
||||
settings.m_qsoTextMessage = *response.getLoRaModSettings()->getQsoTextMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("textMessage")) {
|
||||
settings.m_textMessage = *response.getLoRaModSettings()->getTextMessage();
|
||||
}
|
||||
if (channelSettingsKeys.contains("bytesMessage"))
|
||||
{
|
||||
const QList<QString *> *bytesStr = response.getLoRaModSettings()->getBytesMessage();
|
||||
settings.m_bytesMessage.clear();
|
||||
|
||||
for (QList<QString *>::const_iterator it = bytesStr->begin(); it != bytesStr->end(); ++it)
|
||||
{
|
||||
bool bStatus = false;
|
||||
unsigned int byteInt = (**it).toUInt(&bStatus, 16);
|
||||
|
||||
if (bStatus) {
|
||||
settings.m_bytesMessage.append((char) (byteInt % 256));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (channelSettingsKeys.contains("messageRepeat")) {
|
||||
settings.m_messageRepeat = response.getLoRaModSettings()->getMessageRepeat();
|
||||
}
|
||||
if (channelSettingsKeys.contains("rgbColor")) {
|
||||
settings.m_rgbColor = response.getLoRaModSettings()->getRgbColor();
|
||||
}
|
||||
@ -407,9 +545,108 @@ int LoRaMod::webapiReportGet(
|
||||
|
||||
void LoRaMod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const LoRaModSettings& settings)
|
||||
{
|
||||
response.getLoRaModSettings()->setChannelMute(settings.m_channelMute ? 1 : 0);
|
||||
response.getLoRaModSettings()->setInputFrequencyOffset(settings.m_inputFrequencyOffset);
|
||||
response.getLoRaModSettings()->setBandwidthIndex(settings.m_bandwidthIndex);
|
||||
response.getLoRaModSettings()->setSpreadFactor(settings.m_spreadFactor);
|
||||
response.getLoRaModSettings()->setDeBits(settings.m_deBits);
|
||||
response.getLoRaModSettings()->setPreambleChirps(settings.m_preambleChirps);
|
||||
response.getLoRaModSettings()->setQuietMillis(settings.m_quietMillis);
|
||||
response.getLoRaModSettings()->setSyncWord(settings.m_syncWord);
|
||||
response.getLoRaModSettings()->setChannelMute(settings.m_channelMute ? 1 : 0);
|
||||
response.getLoRaModSettings()->setCodingScheme((int) settings.m_codingScheme);
|
||||
response.getLoRaModSettings()->setNbParityBits(settings.m_nbParityBits);
|
||||
response.getLoRaModSettings()->setHasCrc(settings.m_hasCRC ? 1 : 0);
|
||||
response.getLoRaModSettings()->setHasHeader(settings.m_hasHeader ? 1 : 0);
|
||||
|
||||
if (response.getLoRaModSettings()->getMyCall()) {
|
||||
*response.getLoRaModSettings()->getMyCall() = settings.m_myCall;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setMyCall(new QString(settings.m_myCall));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getUrCall()) {
|
||||
*response.getLoRaModSettings()->getUrCall() = settings.m_urCall;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setUrCall(new QString(settings.m_urCall));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getMyLoc()) {
|
||||
*response.getLoRaModSettings()->getMyLoc() = settings.m_myLoc;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setMyLoc(new QString(settings.m_myLoc));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getMyRpt()) {
|
||||
*response.getLoRaModSettings()->getMyRpt() = settings.m_myRpt;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setMyRpt(new QString(settings.m_myRpt));
|
||||
}
|
||||
|
||||
response.getLoRaModSettings()->setMessageType((int) settings.m_messageType);
|
||||
|
||||
if (response.getLoRaModSettings()->getBeaconMessage()) {
|
||||
*response.getLoRaModSettings()->getBeaconMessage() = settings.m_beaconMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setBeaconMessage(new QString(settings.m_beaconMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getCqMessage()) {
|
||||
*response.getLoRaModSettings()->getCqMessage() = settings.m_cqMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setCqMessage(new QString(settings.m_cqMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getReplyMessage()) {
|
||||
*response.getLoRaModSettings()->getReplyMessage() = settings.m_replyMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setReplyMessage(new QString(settings.m_replyMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getReportMessage()) {
|
||||
*response.getLoRaModSettings()->getReportMessage() = settings.m_reportMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setReportMessage(new QString(settings.m_reportMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getReplyReportMessage()) {
|
||||
*response.getLoRaModSettings()->getReplyReportMessage() = settings.m_replyReportMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setReplyReportMessage(new QString(settings.m_replyReportMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getRrrMessage()) {
|
||||
*response.getLoRaModSettings()->getRrrMessage() = settings.m_rrrMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setRrrMessage(new QString(settings.m_rrrMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getMessage73()) {
|
||||
*response.getLoRaModSettings()->getMessage73() = settings.m_73Message;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setMessage73(new QString(settings.m_73Message));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getQsoTextMessage()) {
|
||||
*response.getLoRaModSettings()->getQsoTextMessage() = settings.m_qsoTextMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setQsoTextMessage(new QString(settings.m_qsoTextMessage));
|
||||
}
|
||||
|
||||
if (response.getLoRaModSettings()->getTextMessage()) {
|
||||
*response.getLoRaModSettings()->getTextMessage() = settings.m_textMessage;
|
||||
} else {
|
||||
response.getLoRaModSettings()->setTextMessage(new QString(settings.m_textMessage));
|
||||
}
|
||||
|
||||
response.getLoRaModSettings()->setBytesMessage(new QList<QString *>);
|
||||
QList<QString *> *bytesStr = response.getLoRaModSettings()->getBytesMessage();
|
||||
|
||||
for (QByteArray::const_iterator it = settings.m_bytesMessage.begin(); it != settings.m_bytesMessage.end(); ++it)
|
||||
{
|
||||
unsigned char b = *it;
|
||||
bytesStr->push_back(new QString(tr("%1").arg(b, 2, 16, QChar('0'))));
|
||||
}
|
||||
|
||||
response.getLoRaModSettings()->setRgbColor(settings.m_rgbColor);
|
||||
|
||||
if (response.getLoRaModSettings()->getTitle()) {
|
||||
@ -435,6 +672,11 @@ void LoRaMod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response)
|
||||
{
|
||||
response.getLoRaModReport()->setChannelPowerDb(CalcDb::dbPower(getMagSq()));
|
||||
response.getLoRaModReport()->setChannelSampleRate(m_basebandSource->getChannelSampleRate());
|
||||
float fourthsMs = ((1<<m_settings.m_spreadFactor) * 250.0) / LoRaModSettings::bandwidths[m_settings.m_bandwidthIndex];
|
||||
float controlMs = (4*m_settings.m_preambleChirps + 8 + 9) * fourthsMs; // preamble + sync word + SFD
|
||||
response.getLoRaModReport()->setPayloadTimeMs(m_currentPayloadTime);
|
||||
response.getLoRaModReport()->setTotalTimeMs(m_currentPayloadTime + controlMs);
|
||||
response.getLoRaModReport()->setSymbolTimeMs(4.0 * fourthsMs);
|
||||
}
|
||||
|
||||
void LoRaMod::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const LoRaModSettings& settings, bool force)
|
||||
@ -443,21 +685,107 @@ void LoRaMod::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, con
|
||||
swgChannelSettings->setDirection(1); // single source (Tx)
|
||||
swgChannelSettings->setOriginatorChannelIndex(getIndexInDeviceSet());
|
||||
swgChannelSettings->setOriginatorDeviceSetIndex(getDeviceSetIndex());
|
||||
swgChannelSettings->setChannelType(new QString("NFMMod"));
|
||||
swgChannelSettings->setChannelType(new QString("LoRaMod"));
|
||||
swgChannelSettings->setLoRaModSettings(new SWGSDRangel::SWGLoRaModSettings());
|
||||
SWGSDRangel::SWGLoRaModSettings *swgLoRaModSettings = swgChannelSettings->getLoRaModSettings();
|
||||
|
||||
// transfer data that has been modified. When force is on transfer all data except reverse API data
|
||||
|
||||
if (channelSettingsKeys.contains("channelMute") || force) {
|
||||
swgLoRaModSettings->setChannelMute(settings.m_channelMute ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("inputFrequencyOffset") || force) {
|
||||
swgLoRaModSettings->setInputFrequencyOffset(settings.m_inputFrequencyOffset);
|
||||
}
|
||||
if (channelSettingsKeys.contains("bandwidthIndex") || force) {
|
||||
swgLoRaModSettings->setBandwidthIndex(settings.m_bandwidthIndex);
|
||||
}
|
||||
if (channelSettingsKeys.contains("spreadFactor") || force) {
|
||||
swgLoRaModSettings->setSpreadFactor(settings.m_spreadFactor);
|
||||
}
|
||||
if (channelSettingsKeys.contains("deBits") || force) {
|
||||
swgLoRaModSettings->setDeBits(settings.m_deBits);
|
||||
}
|
||||
if (channelSettingsKeys.contains("preambleChirps") || force) {
|
||||
swgLoRaModSettings->setPreambleChirps(settings.m_preambleChirps);
|
||||
}
|
||||
if (channelSettingsKeys.contains("quietMillis") || force) {
|
||||
swgLoRaModSettings->setQuietMillis(settings.m_quietMillis);
|
||||
}
|
||||
if (channelSettingsKeys.contains("syncWord") || force) {
|
||||
swgLoRaModSettings->setSyncWord(settings.m_syncWord);
|
||||
}
|
||||
if (channelSettingsKeys.contains("channelMute") || force) {
|
||||
swgLoRaModSettings->setChannelMute(settings.m_channelMute ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("codingScheme") || force) {
|
||||
swgLoRaModSettings->setCodingScheme((int) settings.m_codingScheme);
|
||||
}
|
||||
if (channelSettingsKeys.contains("nbParityBits") || force) {
|
||||
swgLoRaModSettings->setNbParityBits(settings.m_nbParityBits);
|
||||
}
|
||||
if (channelSettingsKeys.contains("hasCRC") || force) {
|
||||
swgLoRaModSettings->setHasCrc(settings.m_hasCRC ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("hasHeader") || force) {
|
||||
swgLoRaModSettings->setHasHeader(settings.m_hasHeader ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("myCall") || force) {
|
||||
swgLoRaModSettings->setMyCall(new QString(settings.m_myCall));
|
||||
}
|
||||
if (channelSettingsKeys.contains("urCall") || force) {
|
||||
swgLoRaModSettings->setUrCall(new QString(settings.m_urCall));
|
||||
}
|
||||
if (channelSettingsKeys.contains("myLoc") || force) {
|
||||
swgLoRaModSettings->setMyLoc(new QString(settings.m_myLoc));
|
||||
}
|
||||
if (channelSettingsKeys.contains("myRpt") || force) {
|
||||
swgLoRaModSettings->setMyRpt(new QString(settings.m_myRpt));
|
||||
}
|
||||
if (channelSettingsKeys.contains("messageType") || force) {
|
||||
swgLoRaModSettings->setMessageType((int) settings.m_messageType);
|
||||
}
|
||||
if (channelSettingsKeys.contains("beaconMessage") || force) {
|
||||
swgLoRaModSettings->setBeaconMessage(new QString(settings.m_beaconMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("cqMessage") || force) {
|
||||
swgLoRaModSettings->setCqMessage(new QString(settings.m_cqMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("replyMessage") || force) {
|
||||
swgLoRaModSettings->setReplyMessage(new QString(settings.m_replyMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("reportMessage") || force) {
|
||||
swgLoRaModSettings->setReportMessage(new QString(settings.m_reportMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("replyReportMessage") || force) {
|
||||
swgLoRaModSettings->setReplyReportMessage(new QString(settings.m_replyReportMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("rrrMessage") || force) {
|
||||
swgLoRaModSettings->setRrrMessage(new QString(settings.m_rrrMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("message73") || force) {
|
||||
swgLoRaModSettings->setMessage73(new QString(settings.m_73Message));
|
||||
}
|
||||
if (channelSettingsKeys.contains("qsoTextMessage") || force) {
|
||||
swgLoRaModSettings->setQsoTextMessage(new QString(settings.m_qsoTextMessage));
|
||||
}
|
||||
if (channelSettingsKeys.contains("textMessage") || force) {
|
||||
swgLoRaModSettings->setTextMessage(new QString(settings.m_textMessage));
|
||||
}
|
||||
|
||||
if (channelSettingsKeys.contains("bytesMessage") || force)
|
||||
{
|
||||
swgLoRaModSettings->setBytesMessage(new QList<QString *>);
|
||||
QList<QString *> *bytesStr = swgLoRaModSettings-> getBytesMessage();
|
||||
|
||||
for (QByteArray::const_iterator it = settings.m_bytesMessage.begin(); it != settings.m_bytesMessage.end(); ++it)
|
||||
{
|
||||
unsigned char b = *it;
|
||||
bytesStr->push_back(new QString(tr("%1").arg(b, 2, 16, QChar('0'))));
|
||||
}
|
||||
}
|
||||
|
||||
if (channelSettingsKeys.contains("messageRepeat") || force) {
|
||||
swgLoRaModSettings->setMessageRepeat(settings.m_messageRepeat);
|
||||
}
|
||||
|
||||
if (channelSettingsKeys.contains("rgbColor") || force) {
|
||||
swgLoRaModSettings->setRgbColor(settings.m_rgbColor);
|
||||
}
|
||||
|
||||
@ -150,6 +150,7 @@ private:
|
||||
LoRaModBaseband* m_basebandSource;
|
||||
LoRaModEncoder m_encoder; // TODO: check if it needs to be on its own thread
|
||||
LoRaModSettings m_settings;
|
||||
float m_currentPayloadTime;
|
||||
|
||||
SampleVector m_sampleBuffer;
|
||||
QMutex m_settingsMutex;
|
||||
|
||||
@ -346,7 +346,8 @@ void LoRaModGUI::on_messageText_editingFinished()
|
||||
|
||||
void LoRaModGUI::on_hexText_editingFinished()
|
||||
{
|
||||
|
||||
m_settings.m_bytesMessage = QByteArray::fromHex(ui->hexText->text().toLatin1());
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void LoRaModGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
@ -485,6 +486,7 @@ void LoRaModGUI::displaySettings()
|
||||
setWindowTitle(m_channelMarker.getTitle());
|
||||
displayStreamIndex();
|
||||
displayCurrentPayloadMessage();
|
||||
displayBinaryMessage();
|
||||
|
||||
ui->fecParity->setEnabled(m_settings.m_codingScheme == LoRaModSettings::CodingLoRa);
|
||||
ui->crc->setEnabled(m_settings.m_codingScheme == LoRaModSettings::CodingLoRa);
|
||||
@ -557,6 +559,11 @@ void LoRaModGUI::displayCurrentPayloadMessage()
|
||||
ui->messageText->blockSignals(false);
|
||||
}
|
||||
|
||||
void LoRaModGUI::displayBinaryMessage()
|
||||
{
|
||||
ui->hexText->setText(m_settings.m_bytesMessage.toHex());
|
||||
}
|
||||
|
||||
void LoRaModGUI::setBandwidths()
|
||||
{
|
||||
int maxBandwidth = m_basebandSampleRate / LoRaModSettings::oversampling;
|
||||
|
||||
@ -79,6 +79,7 @@ private:
|
||||
void displaySettings();
|
||||
void displayStreamIndex();
|
||||
void displayCurrentPayloadMessage();
|
||||
void displayBinaryMessage();
|
||||
void setBandwidths();
|
||||
|
||||
void leaveEvent(QEvent*);
|
||||
|
||||
@ -46,8 +46,7 @@ struct LoRaModSettings
|
||||
Message73,
|
||||
MessageQSOText,
|
||||
MessageText,
|
||||
MessageBytes,
|
||||
MessageTest
|
||||
MessageBytes
|
||||
};
|
||||
|
||||
int m_inputFrequencyOffset;
|
||||
|
||||
@ -33,10 +33,10 @@
|
||||
<file>webapi/doc/swagger/include/Interferometer.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LimeRFE.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LimeSdr.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LoRaMod.yaml</file>
|
||||
<file>webapi/doc/swagger/include/KiwiSDR.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LocalInput.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LocalOutput.yaml</file>
|
||||
<file>webapi/doc/swagger/include/LoRaMod.yaml</file>
|
||||
<file>webapi/doc/swagger/include/NFMDemod.yaml</file>
|
||||
<file>webapi/doc/swagger/include/NFMMod.yaml</file>
|
||||
<file>webapi/doc/swagger/include/Perseus.yaml</file>
|
||||
|
||||
@ -4389,6 +4389,21 @@ margin-bottom: 20px;
|
||||
},
|
||||
"channelSampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"symbolTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "symbol duration (ms)"
|
||||
},
|
||||
"payloadTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "payload duration (ms)"
|
||||
},
|
||||
"totalTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "total message duration inc. preamble and SFD (ms)"
|
||||
}
|
||||
},
|
||||
"description" : "LoRaMod"
|
||||
@ -4406,15 +4421,108 @@ margin-bottom: 20px;
|
||||
"type" : "integer"
|
||||
},
|
||||
"deBits" : {
|
||||
"type" : "integer"
|
||||
"type" : "integer",
|
||||
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
||||
},
|
||||
"message" : {
|
||||
"type" : "string"
|
||||
"preambleChirps" : {
|
||||
"type" : "integer",
|
||||
"description" : "Number of preamble chirps"
|
||||
},
|
||||
"quietMillis" : {
|
||||
"type" : "integer",
|
||||
"description" : "Number of milliseconds to pause between transmissions"
|
||||
},
|
||||
"syncWord" : {
|
||||
"type" : "integer",
|
||||
"description" : "2 byte (0..65535) synchronization syncWord"
|
||||
},
|
||||
"channelMute" : {
|
||||
"type" : "integer",
|
||||
"description" : "boolean"
|
||||
},
|
||||
"codingScheme" : {
|
||||
"type" : "integer",
|
||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||
},
|
||||
"nbParityBits" : {
|
||||
"type" : "integer",
|
||||
"description" : "Hamming FEC parity bits (LoRa)"
|
||||
},
|
||||
"hasCRC" : {
|
||||
"type" : "integer",
|
||||
"description" : "Payload has CRC (LoRa)"
|
||||
},
|
||||
"hasHeader" : {
|
||||
"type" : "integer",
|
||||
"description" : "Header present before actual payload (LoRa)"
|
||||
},
|
||||
"myCall" : {
|
||||
"type" : "string",
|
||||
"description" : "own callsign placeholder (QSO mode)"
|
||||
},
|
||||
"urCall" : {
|
||||
"type" : "string",
|
||||
"description" : "other party callsign placeholder (QSO mode)"
|
||||
},
|
||||
"myLoc" : {
|
||||
"type" : "string",
|
||||
"description" : "own QRA locator (QSO mode)"
|
||||
},
|
||||
"myRpt" : {
|
||||
"type" : "string",
|
||||
"description" : "report sent to other party (QSO mode)"
|
||||
},
|
||||
"messageType" : {
|
||||
"type" : "integer",
|
||||
"description" : "type of message to send (LoRaModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
||||
},
|
||||
"beaconMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "text message to be sent (repeatedly) as a beaconMessage"
|
||||
},
|
||||
"cqMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "general call message (QSO mode)"
|
||||
},
|
||||
"replyMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "reply to caller message (QSO mode)"
|
||||
},
|
||||
"reportMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "report to callee message (QSO mode)"
|
||||
},
|
||||
"replyReportMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "report back to caller message (QSO mode)"
|
||||
},
|
||||
"rrrMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "caller RRR message (QSO mode)"
|
||||
},
|
||||
"message73" : {
|
||||
"type" : "string",
|
||||
"description" : "73 message back to caller to close QSO (QSO mode)"
|
||||
},
|
||||
"qsoTextMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "QSO random message exchange (QSO mode)"
|
||||
},
|
||||
"textMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "freeform text message"
|
||||
},
|
||||
"bytesMessage" : {
|
||||
"type" : "array",
|
||||
"description" : "message to send as an array of hex string represented bytes (00..FF)",
|
||||
"items" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"messageRepeat" : {
|
||||
"type" : "integer",
|
||||
"description" : "number of repetitions of the same message (0 for infinite)"
|
||||
},
|
||||
"rgbColor" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
@ -32322,7 +32430,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2020-02-08T20:41:49.295+01:00
|
||||
Generated 2020-02-22T07:44:51.167+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -9,12 +9,98 @@ LoRaModSettings:
|
||||
spreadFactor:
|
||||
type: integer
|
||||
deBits:
|
||||
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
||||
type: integer
|
||||
preambleChirps:
|
||||
description: Number of preamble chirps
|
||||
type: integer
|
||||
quietMillis:
|
||||
description: Number of milliseconds to pause between transmissions
|
||||
type: integer
|
||||
syncWord:
|
||||
description: 2 byte (0..65535) synchronization syncWord
|
||||
type: integer
|
||||
message:
|
||||
type: string
|
||||
channelMute:
|
||||
description: boolean
|
||||
type: integer
|
||||
codingScheme:
|
||||
type: integer
|
||||
description: >
|
||||
message encoding scheme (LoRaModSettings::CodingScheme):
|
||||
* 0 - LoRa
|
||||
* 1 - Plain ASCII (7 bit)
|
||||
* 2 - Teletype (5 bit Baudot) a.k.a TTY
|
||||
nbParityBits:
|
||||
description: Hamming FEC parity bits (LoRa)
|
||||
type: integer
|
||||
hasCRC:
|
||||
description: Payload has CRC (LoRa)
|
||||
type: integer
|
||||
hasHeader:
|
||||
description: Header present before actual payload (LoRa)
|
||||
type: integer
|
||||
myCall:
|
||||
description: own callsign placeholder (QSO mode)
|
||||
type: string
|
||||
urCall:
|
||||
description: other party callsign placeholder (QSO mode)
|
||||
type: string
|
||||
myLoc:
|
||||
description: own QRA locator (QSO mode)
|
||||
type: string
|
||||
myRpt:
|
||||
description: report sent to other party (QSO mode)
|
||||
type: string
|
||||
messageType:
|
||||
type: integer
|
||||
description: >
|
||||
type of message to send (LoRaModSettings::MessageType):
|
||||
* 0 - No message i.e no output. Use this as a transition to resend the same message.
|
||||
* 1 - Beacon. Sends message specified in beaconMessage
|
||||
* 2 - CQ call. Sends message specified in cqMessage
|
||||
* 3 - Reply to CQ call. Sends message specified in replyMessage
|
||||
* 4 - Report to callee. Sends message specified in reportMessage
|
||||
* 5 - Report to caller. Sends message specified in replyReportMessage
|
||||
* 6 - RRR to callee. Sends message specified in rrrMessage
|
||||
* 7 - 73 to caller. Sends message specified in message73
|
||||
* 8 - Random message with callsigns. Sends message specified in qsoTextMessage
|
||||
* 9 - Plain text. Sends message specified in textMessage
|
||||
* 10 - Binary payload. Sends bytes specified in bytesMessage
|
||||
beaconMessage:
|
||||
description: text message to be sent (repeatedly) as a beaconMessage
|
||||
type: string
|
||||
cqMessage:
|
||||
description: general call message (QSO mode)
|
||||
type: string
|
||||
replyMessage:
|
||||
description: reply to caller message (QSO mode)
|
||||
type: string
|
||||
reportMessage:
|
||||
description: report to callee message (QSO mode)
|
||||
type: string
|
||||
replyReportMessage:
|
||||
description: report back to caller message (QSO mode)
|
||||
type: string
|
||||
rrrMessage:
|
||||
description: caller RRR message (QSO mode)
|
||||
type: string
|
||||
message73:
|
||||
description: 73 message back to caller to close QSO (QSO mode)
|
||||
type: string
|
||||
qsoTextMessage:
|
||||
description: QSO random message exchange (QSO mode)
|
||||
type: string
|
||||
textMessage:
|
||||
description: freeform text message
|
||||
type: string
|
||||
bytesMessage:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: message to send as an array of hex string represented bytes (00..FF)
|
||||
messageRepeat:
|
||||
description: number of repetitions of the same message (0 for infinite)
|
||||
type: integer
|
||||
rgbColor:
|
||||
type: integer
|
||||
title:
|
||||
@ -43,3 +129,15 @@ LoRaModReport:
|
||||
format: float
|
||||
channelSampleRate:
|
||||
type: integer
|
||||
symbolTimeMs:
|
||||
description: symbol duration (ms)
|
||||
type: number
|
||||
format: float
|
||||
payloadTimeMs:
|
||||
description: payload duration (ms)
|
||||
type: number
|
||||
format: float
|
||||
totalTimeMs:
|
||||
description: total message duration inc. preamble and SFD (ms)
|
||||
type: number
|
||||
format: float
|
||||
|
||||
@ -53,7 +53,7 @@ RangeFloat:
|
||||
format: float
|
||||
step:
|
||||
type: number
|
||||
format: float
|
||||
format: float
|
||||
|
||||
FrequencyRange:
|
||||
description: An frequency range with 64 bit support for min and max
|
||||
@ -74,7 +74,7 @@ NamedEnum:
|
||||
type: string
|
||||
value:
|
||||
type: integer
|
||||
|
||||
|
||||
Complex:
|
||||
description: A complex number
|
||||
properties:
|
||||
@ -84,4 +84,3 @@ Complex:
|
||||
imag:
|
||||
type: number
|
||||
format: float
|
||||
|
||||
@ -72,6 +72,7 @@ const QMap<QString, QString> WebAPIRequestMapper::m_channelURIToSettingsKey = {
|
||||
{"sdrangel.demod.localsink", "LocalSinkSettings"},
|
||||
{"sdrangel.channel.localsink", "LocalSinkSettings"}, // remap
|
||||
{"sdrangel.channel.localsource", "LocalSourceSettings"},
|
||||
{"sdrangel.channel.modlora", "LoRaModSettings"},
|
||||
{"sdrangel.demod.remotesink", "RemoteSinkSettings"},
|
||||
{"sdrangel.channeltx.remotesource", "RemoteSourceSettings"},
|
||||
{"sdrangel.channeltx.modssb", "SSBModSettings"},
|
||||
@ -146,6 +147,8 @@ const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = {
|
||||
{"NFMMod", "NFMModSettings"},
|
||||
{"LocalSink", "LocalSinkSettings"},
|
||||
{"LocalSource", "LocalSourceSettings"},
|
||||
{"LoRaDemod", "LoRaDemodSettings"},
|
||||
{"LoRaMod", "LoRaModSettings"},
|
||||
{"RemoteSink", "RemoteSinkSettings"},
|
||||
{"RemoteSource", "RemoteSourceSettings"},
|
||||
{"SSBMod", "SSBModSettings"},
|
||||
@ -2911,6 +2914,12 @@ bool WebAPIRequestMapper::getChannel(
|
||||
channelSettings->setLocalSourceSettings(new SWGSDRangel::SWGLocalSourceSettings());
|
||||
channelSettings->getLocalSourceSettings()->fromJsonObject(settingsJsonObject);
|
||||
}
|
||||
else if (channelSettingsKey == "LoRaModSettings")
|
||||
{
|
||||
channelSettings->setLoRaModSettings(new SWGSDRangel::SWGLoRaModSettings());
|
||||
channelSettings->getLoRaModSettings()->init(); // contains a list of strings
|
||||
channelSettings->getLoRaModSettings()->fromJsonObject(settingsJsonObject);
|
||||
}
|
||||
else if (channelSettingsKey == "RemoteSinkSettings")
|
||||
{
|
||||
channelSettings->setRemoteSinkSettings(new SWGSDRangel::SWGRemoteSinkSettings());
|
||||
|
||||
@ -9,12 +9,98 @@ LoRaModSettings:
|
||||
spreadFactor:
|
||||
type: integer
|
||||
deBits:
|
||||
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
||||
type: integer
|
||||
preambleChirps:
|
||||
description: Number of preamble chirps
|
||||
type: integer
|
||||
quietMillis:
|
||||
description: Number of milliseconds to pause between transmissions
|
||||
type: integer
|
||||
syncWord:
|
||||
description: 2 byte (0..65535) synchronization syncWord
|
||||
type: integer
|
||||
message:
|
||||
type: string
|
||||
channelMute:
|
||||
description: boolean
|
||||
type: integer
|
||||
codingScheme:
|
||||
type: integer
|
||||
description: >
|
||||
message encoding scheme (LoRaModSettings::CodingScheme):
|
||||
* 0 - LoRa
|
||||
* 1 - Plain ASCII (7 bit)
|
||||
* 2 - Teletype (5 bit Baudot) a.k.a TTY
|
||||
nbParityBits:
|
||||
description: Hamming FEC parity bits (LoRa)
|
||||
type: integer
|
||||
hasCRC:
|
||||
description: Payload has CRC (LoRa)
|
||||
type: integer
|
||||
hasHeader:
|
||||
description: Header present before actual payload (LoRa)
|
||||
type: integer
|
||||
myCall:
|
||||
description: own callsign placeholder (QSO mode)
|
||||
type: string
|
||||
urCall:
|
||||
description: other party callsign placeholder (QSO mode)
|
||||
type: string
|
||||
myLoc:
|
||||
description: own QRA locator (QSO mode)
|
||||
type: string
|
||||
myRpt:
|
||||
description: report sent to other party (QSO mode)
|
||||
type: string
|
||||
messageType:
|
||||
type: integer
|
||||
description: >
|
||||
type of message to send (LoRaModSettings::MessageType):
|
||||
* 0 - No message i.e no output. Use this as a transition to resend the same message.
|
||||
* 1 - Beacon. Sends message specified in beaconMessage
|
||||
* 2 - CQ call. Sends message specified in cqMessage
|
||||
* 3 - Reply to CQ call. Sends message specified in replyMessage
|
||||
* 4 - Report to callee. Sends message specified in reportMessage
|
||||
* 5 - Report to caller. Sends message specified in replyReportMessage
|
||||
* 6 - RRR to callee. Sends message specified in rrrMessage
|
||||
* 7 - 73 to caller. Sends message specified in message73
|
||||
* 8 - Random message with callsigns. Sends message specified in qsoTextMessage
|
||||
* 9 - Plain text. Sends message specified in textMessage
|
||||
* 10 - Binary payload. Sends bytes specified in bytesMessage
|
||||
beaconMessage:
|
||||
description: text message to be sent (repeatedly) as a beaconMessage
|
||||
type: string
|
||||
cqMessage:
|
||||
description: general call message (QSO mode)
|
||||
type: string
|
||||
replyMessage:
|
||||
description: reply to caller message (QSO mode)
|
||||
type: string
|
||||
reportMessage:
|
||||
description: report to callee message (QSO mode)
|
||||
type: string
|
||||
replyReportMessage:
|
||||
description: report back to caller message (QSO mode)
|
||||
type: string
|
||||
rrrMessage:
|
||||
description: caller RRR message (QSO mode)
|
||||
type: string
|
||||
message73:
|
||||
description: 73 message back to caller to close QSO (QSO mode)
|
||||
type: string
|
||||
qsoTextMessage:
|
||||
description: QSO random message exchange (QSO mode)
|
||||
type: string
|
||||
textMessage:
|
||||
description: freeform text message
|
||||
type: string
|
||||
bytesMessage:
|
||||
description: message to send as an array of hex string represented bytes (00..FF)
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
messageRepeat:
|
||||
description: number of repetitions of the same message (0 for infinite)
|
||||
type: integer
|
||||
rgbColor:
|
||||
type: integer
|
||||
title:
|
||||
@ -43,3 +129,15 @@ LoRaModReport:
|
||||
format: float
|
||||
channelSampleRate:
|
||||
type: integer
|
||||
symbolTimeMs:
|
||||
description: symbol duration (ms)
|
||||
type: number
|
||||
format: float
|
||||
payloadTimeMs:
|
||||
description: payload duration (ms)
|
||||
type: number
|
||||
format: float
|
||||
totalTimeMs:
|
||||
description: total message duration inc. preamble and SFD (ms)
|
||||
type: number
|
||||
format: float
|
||||
|
||||
@ -53,7 +53,7 @@ RangeFloat:
|
||||
format: float
|
||||
step:
|
||||
type: number
|
||||
format: float
|
||||
format: float
|
||||
|
||||
FrequencyRange:
|
||||
description: An frequency range with 64 bit support for min and max
|
||||
@ -74,7 +74,7 @@ NamedEnum:
|
||||
type: string
|
||||
value:
|
||||
type: integer
|
||||
|
||||
|
||||
Complex:
|
||||
description: A complex number
|
||||
properties:
|
||||
@ -84,4 +84,3 @@ Complex:
|
||||
imag:
|
||||
type: number
|
||||
format: float
|
||||
|
||||
@ -4389,6 +4389,21 @@ margin-bottom: 20px;
|
||||
},
|
||||
"channelSampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"symbolTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "symbol duration (ms)"
|
||||
},
|
||||
"payloadTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "payload duration (ms)"
|
||||
},
|
||||
"totalTimeMs" : {
|
||||
"type" : "number",
|
||||
"format" : "float",
|
||||
"description" : "total message duration inc. preamble and SFD (ms)"
|
||||
}
|
||||
},
|
||||
"description" : "LoRaMod"
|
||||
@ -4406,15 +4421,108 @@ margin-bottom: 20px;
|
||||
"type" : "integer"
|
||||
},
|
||||
"deBits" : {
|
||||
"type" : "integer"
|
||||
"type" : "integer",
|
||||
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
||||
},
|
||||
"message" : {
|
||||
"type" : "string"
|
||||
"preambleChirps" : {
|
||||
"type" : "integer",
|
||||
"description" : "Number of preamble chirps"
|
||||
},
|
||||
"quietMillis" : {
|
||||
"type" : "integer",
|
||||
"description" : "Number of milliseconds to pause between transmissions"
|
||||
},
|
||||
"syncWord" : {
|
||||
"type" : "integer",
|
||||
"description" : "2 byte (0..65535) synchronization syncWord"
|
||||
},
|
||||
"channelMute" : {
|
||||
"type" : "integer",
|
||||
"description" : "boolean"
|
||||
},
|
||||
"codingScheme" : {
|
||||
"type" : "integer",
|
||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||
},
|
||||
"nbParityBits" : {
|
||||
"type" : "integer",
|
||||
"description" : "Hamming FEC parity bits (LoRa)"
|
||||
},
|
||||
"hasCRC" : {
|
||||
"type" : "integer",
|
||||
"description" : "Payload has CRC (LoRa)"
|
||||
},
|
||||
"hasHeader" : {
|
||||
"type" : "integer",
|
||||
"description" : "Header present before actual payload (LoRa)"
|
||||
},
|
||||
"myCall" : {
|
||||
"type" : "string",
|
||||
"description" : "own callsign placeholder (QSO mode)"
|
||||
},
|
||||
"urCall" : {
|
||||
"type" : "string",
|
||||
"description" : "other party callsign placeholder (QSO mode)"
|
||||
},
|
||||
"myLoc" : {
|
||||
"type" : "string",
|
||||
"description" : "own QRA locator (QSO mode)"
|
||||
},
|
||||
"myRpt" : {
|
||||
"type" : "string",
|
||||
"description" : "report sent to other party (QSO mode)"
|
||||
},
|
||||
"messageType" : {
|
||||
"type" : "integer",
|
||||
"description" : "type of message to send (LoRaModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
||||
},
|
||||
"beaconMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "text message to be sent (repeatedly) as a beaconMessage"
|
||||
},
|
||||
"cqMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "general call message (QSO mode)"
|
||||
},
|
||||
"replyMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "reply to caller message (QSO mode)"
|
||||
},
|
||||
"reportMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "report to callee message (QSO mode)"
|
||||
},
|
||||
"replyReportMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "report back to caller message (QSO mode)"
|
||||
},
|
||||
"rrrMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "caller RRR message (QSO mode)"
|
||||
},
|
||||
"message73" : {
|
||||
"type" : "string",
|
||||
"description" : "73 message back to caller to close QSO (QSO mode)"
|
||||
},
|
||||
"qsoTextMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "QSO random message exchange (QSO mode)"
|
||||
},
|
||||
"textMessage" : {
|
||||
"type" : "string",
|
||||
"description" : "freeform text message"
|
||||
},
|
||||
"bytesMessage" : {
|
||||
"type" : "array",
|
||||
"description" : "message to send as an array of hex string represented bytes (00..FF)",
|
||||
"items" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"messageRepeat" : {
|
||||
"type" : "integer",
|
||||
"description" : "number of repetitions of the same message (0 for infinite)"
|
||||
},
|
||||
"rgbColor" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
@ -32322,7 +32430,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2020-02-08T20:41:49.295+01:00
|
||||
Generated 2020-02-22T07:44:51.167+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -32,6 +32,12 @@ SWGLoRaModReport::SWGLoRaModReport() {
|
||||
m_channel_power_db_isSet = false;
|
||||
channel_sample_rate = 0;
|
||||
m_channel_sample_rate_isSet = false;
|
||||
symbol_time_ms = 0.0f;
|
||||
m_symbol_time_ms_isSet = false;
|
||||
payload_time_ms = 0.0f;
|
||||
m_payload_time_ms_isSet = false;
|
||||
total_time_ms = 0.0f;
|
||||
m_total_time_ms_isSet = false;
|
||||
}
|
||||
|
||||
SWGLoRaModReport::~SWGLoRaModReport() {
|
||||
@ -44,12 +50,21 @@ SWGLoRaModReport::init() {
|
||||
m_channel_power_db_isSet = false;
|
||||
channel_sample_rate = 0;
|
||||
m_channel_sample_rate_isSet = false;
|
||||
symbol_time_ms = 0.0f;
|
||||
m_symbol_time_ms_isSet = false;
|
||||
payload_time_ms = 0.0f;
|
||||
m_payload_time_ms_isSet = false;
|
||||
total_time_ms = 0.0f;
|
||||
m_total_time_ms_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
SWGLoRaModReport::cleanup() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SWGLoRaModReport*
|
||||
@ -67,6 +82,12 @@ SWGLoRaModReport::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&channel_sample_rate, pJson["channelSampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&symbol_time_ms, pJson["symbolTimeMs"], "float", "");
|
||||
|
||||
::SWGSDRangel::setValue(&payload_time_ms, pJson["payloadTimeMs"], "float", "");
|
||||
|
||||
::SWGSDRangel::setValue(&total_time_ms, pJson["totalTimeMs"], "float", "");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
@ -89,6 +110,15 @@ SWGLoRaModReport::asJsonObject() {
|
||||
if(m_channel_sample_rate_isSet){
|
||||
obj->insert("channelSampleRate", QJsonValue(channel_sample_rate));
|
||||
}
|
||||
if(m_symbol_time_ms_isSet){
|
||||
obj->insert("symbolTimeMs", QJsonValue(symbol_time_ms));
|
||||
}
|
||||
if(m_payload_time_ms_isSet){
|
||||
obj->insert("payloadTimeMs", QJsonValue(payload_time_ms));
|
||||
}
|
||||
if(m_total_time_ms_isSet){
|
||||
obj->insert("totalTimeMs", QJsonValue(total_time_ms));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
@ -113,6 +143,36 @@ SWGLoRaModReport::setChannelSampleRate(qint32 channel_sample_rate) {
|
||||
this->m_channel_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
float
|
||||
SWGLoRaModReport::getSymbolTimeMs() {
|
||||
return symbol_time_ms;
|
||||
}
|
||||
void
|
||||
SWGLoRaModReport::setSymbolTimeMs(float symbol_time_ms) {
|
||||
this->symbol_time_ms = symbol_time_ms;
|
||||
this->m_symbol_time_ms_isSet = true;
|
||||
}
|
||||
|
||||
float
|
||||
SWGLoRaModReport::getPayloadTimeMs() {
|
||||
return payload_time_ms;
|
||||
}
|
||||
void
|
||||
SWGLoRaModReport::setPayloadTimeMs(float payload_time_ms) {
|
||||
this->payload_time_ms = payload_time_ms;
|
||||
this->m_payload_time_ms_isSet = true;
|
||||
}
|
||||
|
||||
float
|
||||
SWGLoRaModReport::getTotalTimeMs() {
|
||||
return total_time_ms;
|
||||
}
|
||||
void
|
||||
SWGLoRaModReport::setTotalTimeMs(float total_time_ms) {
|
||||
this->total_time_ms = total_time_ms;
|
||||
this->m_total_time_ms_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGLoRaModReport::isSet(){
|
||||
@ -124,6 +184,15 @@ SWGLoRaModReport::isSet(){
|
||||
if(m_channel_sample_rate_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_symbol_time_ms_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_payload_time_ms_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_total_time_ms_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
|
||||
@ -47,6 +47,15 @@ public:
|
||||
qint32 getChannelSampleRate();
|
||||
void setChannelSampleRate(qint32 channel_sample_rate);
|
||||
|
||||
float getSymbolTimeMs();
|
||||
void setSymbolTimeMs(float symbol_time_ms);
|
||||
|
||||
float getPayloadTimeMs();
|
||||
void setPayloadTimeMs(float payload_time_ms);
|
||||
|
||||
float getTotalTimeMs();
|
||||
void setTotalTimeMs(float total_time_ms);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
@ -57,6 +66,15 @@ private:
|
||||
qint32 channel_sample_rate;
|
||||
bool m_channel_sample_rate_isSet;
|
||||
|
||||
float symbol_time_ms;
|
||||
bool m_symbol_time_ms_isSet;
|
||||
|
||||
float payload_time_ms;
|
||||
bool m_payload_time_ms_isSet;
|
||||
|
||||
float total_time_ms;
|
||||
bool m_total_time_ms_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -36,10 +36,54 @@ SWGLoRaModSettings::SWGLoRaModSettings() {
|
||||
m_spread_factor_isSet = false;
|
||||
de_bits = 0;
|
||||
m_de_bits_isSet = false;
|
||||
message = nullptr;
|
||||
m_message_isSet = false;
|
||||
preamble_chirps = 0;
|
||||
m_preamble_chirps_isSet = false;
|
||||
quiet_millis = 0;
|
||||
m_quiet_millis_isSet = false;
|
||||
sync_word = 0;
|
||||
m_sync_word_isSet = false;
|
||||
channel_mute = 0;
|
||||
m_channel_mute_isSet = false;
|
||||
coding_scheme = 0;
|
||||
m_coding_scheme_isSet = false;
|
||||
nb_parity_bits = 0;
|
||||
m_nb_parity_bits_isSet = false;
|
||||
has_crc = 0;
|
||||
m_has_crc_isSet = false;
|
||||
has_header = 0;
|
||||
m_has_header_isSet = false;
|
||||
my_call = nullptr;
|
||||
m_my_call_isSet = false;
|
||||
ur_call = nullptr;
|
||||
m_ur_call_isSet = false;
|
||||
my_loc = nullptr;
|
||||
m_my_loc_isSet = false;
|
||||
my_rpt = nullptr;
|
||||
m_my_rpt_isSet = false;
|
||||
message_type = 0;
|
||||
m_message_type_isSet = false;
|
||||
beacon_message = nullptr;
|
||||
m_beacon_message_isSet = false;
|
||||
cq_message = nullptr;
|
||||
m_cq_message_isSet = false;
|
||||
reply_message = nullptr;
|
||||
m_reply_message_isSet = false;
|
||||
report_message = nullptr;
|
||||
m_report_message_isSet = false;
|
||||
reply_report_message = nullptr;
|
||||
m_reply_report_message_isSet = false;
|
||||
rrr_message = nullptr;
|
||||
m_rrr_message_isSet = false;
|
||||
message73 = nullptr;
|
||||
m_message73_isSet = false;
|
||||
qso_text_message = nullptr;
|
||||
m_qso_text_message_isSet = false;
|
||||
text_message = nullptr;
|
||||
m_text_message_isSet = false;
|
||||
bytes_message = nullptr;
|
||||
m_bytes_message_isSet = false;
|
||||
message_repeat = 0;
|
||||
m_message_repeat_isSet = false;
|
||||
rgb_color = 0;
|
||||
m_rgb_color_isSet = false;
|
||||
title = nullptr;
|
||||
@ -72,10 +116,54 @@ SWGLoRaModSettings::init() {
|
||||
m_spread_factor_isSet = false;
|
||||
de_bits = 0;
|
||||
m_de_bits_isSet = false;
|
||||
message = new QString("");
|
||||
m_message_isSet = false;
|
||||
preamble_chirps = 0;
|
||||
m_preamble_chirps_isSet = false;
|
||||
quiet_millis = 0;
|
||||
m_quiet_millis_isSet = false;
|
||||
sync_word = 0;
|
||||
m_sync_word_isSet = false;
|
||||
channel_mute = 0;
|
||||
m_channel_mute_isSet = false;
|
||||
coding_scheme = 0;
|
||||
m_coding_scheme_isSet = false;
|
||||
nb_parity_bits = 0;
|
||||
m_nb_parity_bits_isSet = false;
|
||||
has_crc = 0;
|
||||
m_has_crc_isSet = false;
|
||||
has_header = 0;
|
||||
m_has_header_isSet = false;
|
||||
my_call = new QString("");
|
||||
m_my_call_isSet = false;
|
||||
ur_call = new QString("");
|
||||
m_ur_call_isSet = false;
|
||||
my_loc = new QString("");
|
||||
m_my_loc_isSet = false;
|
||||
my_rpt = new QString("");
|
||||
m_my_rpt_isSet = false;
|
||||
message_type = 0;
|
||||
m_message_type_isSet = false;
|
||||
beacon_message = new QString("");
|
||||
m_beacon_message_isSet = false;
|
||||
cq_message = new QString("");
|
||||
m_cq_message_isSet = false;
|
||||
reply_message = new QString("");
|
||||
m_reply_message_isSet = false;
|
||||
report_message = new QString("");
|
||||
m_report_message_isSet = false;
|
||||
reply_report_message = new QString("");
|
||||
m_reply_report_message_isSet = false;
|
||||
rrr_message = new QString("");
|
||||
m_rrr_message_isSet = false;
|
||||
message73 = new QString("");
|
||||
m_message73_isSet = false;
|
||||
qso_text_message = new QString("");
|
||||
m_qso_text_message_isSet = false;
|
||||
text_message = new QString("");
|
||||
m_text_message_isSet = false;
|
||||
bytes_message = new QList<QString*>();
|
||||
m_bytes_message_isSet = false;
|
||||
message_repeat = 0;
|
||||
m_message_repeat_isSet = false;
|
||||
rgb_color = 0;
|
||||
m_rgb_color_isSet = false;
|
||||
title = new QString("");
|
||||
@ -100,8 +188,60 @@ SWGLoRaModSettings::cleanup() {
|
||||
|
||||
|
||||
|
||||
if(message != nullptr) {
|
||||
delete message;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(my_call != nullptr) {
|
||||
delete my_call;
|
||||
}
|
||||
if(ur_call != nullptr) {
|
||||
delete ur_call;
|
||||
}
|
||||
if(my_loc != nullptr) {
|
||||
delete my_loc;
|
||||
}
|
||||
if(my_rpt != nullptr) {
|
||||
delete my_rpt;
|
||||
}
|
||||
|
||||
if(beacon_message != nullptr) {
|
||||
delete beacon_message;
|
||||
}
|
||||
if(cq_message != nullptr) {
|
||||
delete cq_message;
|
||||
}
|
||||
if(reply_message != nullptr) {
|
||||
delete reply_message;
|
||||
}
|
||||
if(report_message != nullptr) {
|
||||
delete report_message;
|
||||
}
|
||||
if(reply_report_message != nullptr) {
|
||||
delete reply_report_message;
|
||||
}
|
||||
if(rrr_message != nullptr) {
|
||||
delete rrr_message;
|
||||
}
|
||||
if(message73 != nullptr) {
|
||||
delete message73;
|
||||
}
|
||||
if(qso_text_message != nullptr) {
|
||||
delete qso_text_message;
|
||||
}
|
||||
if(text_message != nullptr) {
|
||||
delete text_message;
|
||||
}
|
||||
if(bytes_message != nullptr) {
|
||||
auto arr = bytes_message;
|
||||
for(auto o: *arr) {
|
||||
delete o;
|
||||
}
|
||||
delete bytes_message;
|
||||
}
|
||||
|
||||
|
||||
@ -137,10 +277,54 @@ SWGLoRaModSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&de_bits, pJson["deBits"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&message, pJson["message"], "QString", "QString");
|
||||
::SWGSDRangel::setValue(&preamble_chirps, pJson["preambleChirps"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&quiet_millis, pJson["quietMillis"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&sync_word, pJson["syncWord"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&channel_mute, pJson["channelMute"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&coding_scheme, pJson["codingScheme"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&nb_parity_bits, pJson["nbParityBits"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&has_crc, pJson["hasCRC"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&has_header, pJson["hasHeader"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&my_call, pJson["myCall"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&ur_call, pJson["urCall"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&my_loc, pJson["myLoc"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&my_rpt, pJson["myRpt"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&message_type, pJson["messageType"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&beacon_message, pJson["beaconMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&cq_message, pJson["cqMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&reply_message, pJson["replyMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&report_message, pJson["reportMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&reply_report_message, pJson["replyReportMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&rrr_message, pJson["rrrMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&message73, pJson["message73"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&qso_text_message, pJson["qsoTextMessage"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&text_message, pJson["textMessage"], "QString", "QString");
|
||||
|
||||
|
||||
::SWGSDRangel::setValue(&bytes_message, pJson["bytesMessage"], "QList", "QString");
|
||||
::SWGSDRangel::setValue(&message_repeat, pJson["messageRepeat"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&rgb_color, pJson["rgbColor"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString");
|
||||
@ -185,12 +369,78 @@ SWGLoRaModSettings::asJsonObject() {
|
||||
if(m_de_bits_isSet){
|
||||
obj->insert("deBits", QJsonValue(de_bits));
|
||||
}
|
||||
if(message != nullptr && *message != QString("")){
|
||||
toJsonValue(QString("message"), message, obj, QString("QString"));
|
||||
if(m_preamble_chirps_isSet){
|
||||
obj->insert("preambleChirps", QJsonValue(preamble_chirps));
|
||||
}
|
||||
if(m_quiet_millis_isSet){
|
||||
obj->insert("quietMillis", QJsonValue(quiet_millis));
|
||||
}
|
||||
if(m_sync_word_isSet){
|
||||
obj->insert("syncWord", QJsonValue(sync_word));
|
||||
}
|
||||
if(m_channel_mute_isSet){
|
||||
obj->insert("channelMute", QJsonValue(channel_mute));
|
||||
}
|
||||
if(m_coding_scheme_isSet){
|
||||
obj->insert("codingScheme", QJsonValue(coding_scheme));
|
||||
}
|
||||
if(m_nb_parity_bits_isSet){
|
||||
obj->insert("nbParityBits", QJsonValue(nb_parity_bits));
|
||||
}
|
||||
if(m_has_crc_isSet){
|
||||
obj->insert("hasCRC", QJsonValue(has_crc));
|
||||
}
|
||||
if(m_has_header_isSet){
|
||||
obj->insert("hasHeader", QJsonValue(has_header));
|
||||
}
|
||||
if(my_call != nullptr && *my_call != QString("")){
|
||||
toJsonValue(QString("myCall"), my_call, obj, QString("QString"));
|
||||
}
|
||||
if(ur_call != nullptr && *ur_call != QString("")){
|
||||
toJsonValue(QString("urCall"), ur_call, obj, QString("QString"));
|
||||
}
|
||||
if(my_loc != nullptr && *my_loc != QString("")){
|
||||
toJsonValue(QString("myLoc"), my_loc, obj, QString("QString"));
|
||||
}
|
||||
if(my_rpt != nullptr && *my_rpt != QString("")){
|
||||
toJsonValue(QString("myRpt"), my_rpt, obj, QString("QString"));
|
||||
}
|
||||
if(m_message_type_isSet){
|
||||
obj->insert("messageType", QJsonValue(message_type));
|
||||
}
|
||||
if(beacon_message != nullptr && *beacon_message != QString("")){
|
||||
toJsonValue(QString("beaconMessage"), beacon_message, obj, QString("QString"));
|
||||
}
|
||||
if(cq_message != nullptr && *cq_message != QString("")){
|
||||
toJsonValue(QString("cqMessage"), cq_message, obj, QString("QString"));
|
||||
}
|
||||
if(reply_message != nullptr && *reply_message != QString("")){
|
||||
toJsonValue(QString("replyMessage"), reply_message, obj, QString("QString"));
|
||||
}
|
||||
if(report_message != nullptr && *report_message != QString("")){
|
||||
toJsonValue(QString("reportMessage"), report_message, obj, QString("QString"));
|
||||
}
|
||||
if(reply_report_message != nullptr && *reply_report_message != QString("")){
|
||||
toJsonValue(QString("replyReportMessage"), reply_report_message, obj, QString("QString"));
|
||||
}
|
||||
if(rrr_message != nullptr && *rrr_message != QString("")){
|
||||
toJsonValue(QString("rrrMessage"), rrr_message, obj, QString("QString"));
|
||||
}
|
||||
if(message73 != nullptr && *message73 != QString("")){
|
||||
toJsonValue(QString("message73"), message73, obj, QString("QString"));
|
||||
}
|
||||
if(qso_text_message != nullptr && *qso_text_message != QString("")){
|
||||
toJsonValue(QString("qsoTextMessage"), qso_text_message, obj, QString("QString"));
|
||||
}
|
||||
if(text_message != nullptr && *text_message != QString("")){
|
||||
toJsonValue(QString("textMessage"), text_message, obj, QString("QString"));
|
||||
}
|
||||
if(bytes_message && bytes_message->size() > 0){
|
||||
toJsonArray((QList<void*>*)bytes_message, obj, "bytesMessage", "QString");
|
||||
}
|
||||
if(m_message_repeat_isSet){
|
||||
obj->insert("messageRepeat", QJsonValue(message_repeat));
|
||||
}
|
||||
if(m_rgb_color_isSet){
|
||||
obj->insert("rgbColor", QJsonValue(rgb_color));
|
||||
}
|
||||
@ -259,14 +509,34 @@ SWGLoRaModSettings::setDeBits(qint32 de_bits) {
|
||||
this->m_de_bits_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getMessage() {
|
||||
return message;
|
||||
qint32
|
||||
SWGLoRaModSettings::getPreambleChirps() {
|
||||
return preamble_chirps;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMessage(QString* message) {
|
||||
this->message = message;
|
||||
this->m_message_isSet = true;
|
||||
SWGLoRaModSettings::setPreambleChirps(qint32 preamble_chirps) {
|
||||
this->preamble_chirps = preamble_chirps;
|
||||
this->m_preamble_chirps_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getQuietMillis() {
|
||||
return quiet_millis;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setQuietMillis(qint32 quiet_millis) {
|
||||
this->quiet_millis = quiet_millis;
|
||||
this->m_quiet_millis_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getSyncWord() {
|
||||
return sync_word;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setSyncWord(qint32 sync_word) {
|
||||
this->sync_word = sync_word;
|
||||
this->m_sync_word_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
@ -279,6 +549,206 @@ SWGLoRaModSettings::setChannelMute(qint32 channel_mute) {
|
||||
this->m_channel_mute_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getCodingScheme() {
|
||||
return coding_scheme;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setCodingScheme(qint32 coding_scheme) {
|
||||
this->coding_scheme = coding_scheme;
|
||||
this->m_coding_scheme_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getNbParityBits() {
|
||||
return nb_parity_bits;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setNbParityBits(qint32 nb_parity_bits) {
|
||||
this->nb_parity_bits = nb_parity_bits;
|
||||
this->m_nb_parity_bits_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getHasCrc() {
|
||||
return has_crc;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setHasCrc(qint32 has_crc) {
|
||||
this->has_crc = has_crc;
|
||||
this->m_has_crc_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getHasHeader() {
|
||||
return has_header;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setHasHeader(qint32 has_header) {
|
||||
this->has_header = has_header;
|
||||
this->m_has_header_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getMyCall() {
|
||||
return my_call;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMyCall(QString* my_call) {
|
||||
this->my_call = my_call;
|
||||
this->m_my_call_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getUrCall() {
|
||||
return ur_call;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setUrCall(QString* ur_call) {
|
||||
this->ur_call = ur_call;
|
||||
this->m_ur_call_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getMyLoc() {
|
||||
return my_loc;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMyLoc(QString* my_loc) {
|
||||
this->my_loc = my_loc;
|
||||
this->m_my_loc_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getMyRpt() {
|
||||
return my_rpt;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMyRpt(QString* my_rpt) {
|
||||
this->my_rpt = my_rpt;
|
||||
this->m_my_rpt_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getMessageType() {
|
||||
return message_type;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMessageType(qint32 message_type) {
|
||||
this->message_type = message_type;
|
||||
this->m_message_type_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getBeaconMessage() {
|
||||
return beacon_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setBeaconMessage(QString* beacon_message) {
|
||||
this->beacon_message = beacon_message;
|
||||
this->m_beacon_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getCqMessage() {
|
||||
return cq_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setCqMessage(QString* cq_message) {
|
||||
this->cq_message = cq_message;
|
||||
this->m_cq_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getReplyMessage() {
|
||||
return reply_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setReplyMessage(QString* reply_message) {
|
||||
this->reply_message = reply_message;
|
||||
this->m_reply_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getReportMessage() {
|
||||
return report_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setReportMessage(QString* report_message) {
|
||||
this->report_message = report_message;
|
||||
this->m_report_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getReplyReportMessage() {
|
||||
return reply_report_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setReplyReportMessage(QString* reply_report_message) {
|
||||
this->reply_report_message = reply_report_message;
|
||||
this->m_reply_report_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getRrrMessage() {
|
||||
return rrr_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setRrrMessage(QString* rrr_message) {
|
||||
this->rrr_message = rrr_message;
|
||||
this->m_rrr_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getMessage73() {
|
||||
return message73;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMessage73(QString* message73) {
|
||||
this->message73 = message73;
|
||||
this->m_message73_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getQsoTextMessage() {
|
||||
return qso_text_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setQsoTextMessage(QString* qso_text_message) {
|
||||
this->qso_text_message = qso_text_message;
|
||||
this->m_qso_text_message_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGLoRaModSettings::getTextMessage() {
|
||||
return text_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setTextMessage(QString* text_message) {
|
||||
this->text_message = text_message;
|
||||
this->m_text_message_isSet = true;
|
||||
}
|
||||
|
||||
QList<QString*>*
|
||||
SWGLoRaModSettings::getBytesMessage() {
|
||||
return bytes_message;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setBytesMessage(QList<QString*>* bytes_message) {
|
||||
this->bytes_message = bytes_message;
|
||||
this->m_bytes_message_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getMessageRepeat() {
|
||||
return message_repeat;
|
||||
}
|
||||
void
|
||||
SWGLoRaModSettings::setMessageRepeat(qint32 message_repeat) {
|
||||
this->message_repeat = message_repeat;
|
||||
this->m_message_repeat_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGLoRaModSettings::getRgbColor() {
|
||||
return rgb_color;
|
||||
@ -376,12 +846,78 @@ SWGLoRaModSettings::isSet(){
|
||||
if(m_de_bits_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(message && *message != QString("")){
|
||||
if(m_preamble_chirps_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_quiet_millis_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_sync_word_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_channel_mute_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_coding_scheme_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_nb_parity_bits_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_has_crc_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_has_header_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(my_call && *my_call != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(ur_call && *ur_call != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(my_loc && *my_loc != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(my_rpt && *my_rpt != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_message_type_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(beacon_message && *beacon_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(cq_message && *cq_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(reply_message && *reply_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(report_message && *report_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(reply_report_message && *reply_report_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(rrr_message && *rrr_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(message73 && *message73 != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(qso_text_message && *qso_text_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(text_message && *text_message != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(bytes_message && (bytes_message->size() > 0)){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_message_repeat_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_rgb_color_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
#include <QJsonObject>
|
||||
|
||||
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
|
||||
#include "SWGObject.h"
|
||||
@ -54,12 +55,78 @@ public:
|
||||
qint32 getDeBits();
|
||||
void setDeBits(qint32 de_bits);
|
||||
|
||||
QString* getMessage();
|
||||
void setMessage(QString* message);
|
||||
qint32 getPreambleChirps();
|
||||
void setPreambleChirps(qint32 preamble_chirps);
|
||||
|
||||
qint32 getQuietMillis();
|
||||
void setQuietMillis(qint32 quiet_millis);
|
||||
|
||||
qint32 getSyncWord();
|
||||
void setSyncWord(qint32 sync_word);
|
||||
|
||||
qint32 getChannelMute();
|
||||
void setChannelMute(qint32 channel_mute);
|
||||
|
||||
qint32 getCodingScheme();
|
||||
void setCodingScheme(qint32 coding_scheme);
|
||||
|
||||
qint32 getNbParityBits();
|
||||
void setNbParityBits(qint32 nb_parity_bits);
|
||||
|
||||
qint32 getHasCrc();
|
||||
void setHasCrc(qint32 has_crc);
|
||||
|
||||
qint32 getHasHeader();
|
||||
void setHasHeader(qint32 has_header);
|
||||
|
||||
QString* getMyCall();
|
||||
void setMyCall(QString* my_call);
|
||||
|
||||
QString* getUrCall();
|
||||
void setUrCall(QString* ur_call);
|
||||
|
||||
QString* getMyLoc();
|
||||
void setMyLoc(QString* my_loc);
|
||||
|
||||
QString* getMyRpt();
|
||||
void setMyRpt(QString* my_rpt);
|
||||
|
||||
qint32 getMessageType();
|
||||
void setMessageType(qint32 message_type);
|
||||
|
||||
QString* getBeaconMessage();
|
||||
void setBeaconMessage(QString* beacon_message);
|
||||
|
||||
QString* getCqMessage();
|
||||
void setCqMessage(QString* cq_message);
|
||||
|
||||
QString* getReplyMessage();
|
||||
void setReplyMessage(QString* reply_message);
|
||||
|
||||
QString* getReportMessage();
|
||||
void setReportMessage(QString* report_message);
|
||||
|
||||
QString* getReplyReportMessage();
|
||||
void setReplyReportMessage(QString* reply_report_message);
|
||||
|
||||
QString* getRrrMessage();
|
||||
void setRrrMessage(QString* rrr_message);
|
||||
|
||||
QString* getMessage73();
|
||||
void setMessage73(QString* message73);
|
||||
|
||||
QString* getQsoTextMessage();
|
||||
void setQsoTextMessage(QString* qso_text_message);
|
||||
|
||||
QString* getTextMessage();
|
||||
void setTextMessage(QString* text_message);
|
||||
|
||||
QList<QString*>* getBytesMessage();
|
||||
void setBytesMessage(QList<QString*>* bytes_message);
|
||||
|
||||
qint32 getMessageRepeat();
|
||||
void setMessageRepeat(qint32 message_repeat);
|
||||
|
||||
qint32 getRgbColor();
|
||||
void setRgbColor(qint32 rgb_color);
|
||||
|
||||
@ -100,12 +167,78 @@ private:
|
||||
qint32 de_bits;
|
||||
bool m_de_bits_isSet;
|
||||
|
||||
QString* message;
|
||||
bool m_message_isSet;
|
||||
qint32 preamble_chirps;
|
||||
bool m_preamble_chirps_isSet;
|
||||
|
||||
qint32 quiet_millis;
|
||||
bool m_quiet_millis_isSet;
|
||||
|
||||
qint32 sync_word;
|
||||
bool m_sync_word_isSet;
|
||||
|
||||
qint32 channel_mute;
|
||||
bool m_channel_mute_isSet;
|
||||
|
||||
qint32 coding_scheme;
|
||||
bool m_coding_scheme_isSet;
|
||||
|
||||
qint32 nb_parity_bits;
|
||||
bool m_nb_parity_bits_isSet;
|
||||
|
||||
qint32 has_crc;
|
||||
bool m_has_crc_isSet;
|
||||
|
||||
qint32 has_header;
|
||||
bool m_has_header_isSet;
|
||||
|
||||
QString* my_call;
|
||||
bool m_my_call_isSet;
|
||||
|
||||
QString* ur_call;
|
||||
bool m_ur_call_isSet;
|
||||
|
||||
QString* my_loc;
|
||||
bool m_my_loc_isSet;
|
||||
|
||||
QString* my_rpt;
|
||||
bool m_my_rpt_isSet;
|
||||
|
||||
qint32 message_type;
|
||||
bool m_message_type_isSet;
|
||||
|
||||
QString* beacon_message;
|
||||
bool m_beacon_message_isSet;
|
||||
|
||||
QString* cq_message;
|
||||
bool m_cq_message_isSet;
|
||||
|
||||
QString* reply_message;
|
||||
bool m_reply_message_isSet;
|
||||
|
||||
QString* report_message;
|
||||
bool m_report_message_isSet;
|
||||
|
||||
QString* reply_report_message;
|
||||
bool m_reply_report_message_isSet;
|
||||
|
||||
QString* rrr_message;
|
||||
bool m_rrr_message_isSet;
|
||||
|
||||
QString* message73;
|
||||
bool m_message73_isSet;
|
||||
|
||||
QString* qso_text_message;
|
||||
bool m_qso_text_message_isSet;
|
||||
|
||||
QString* text_message;
|
||||
bool m_text_message_isSet;
|
||||
|
||||
QList<QString*>* bytes_message;
|
||||
bool m_bytes_message_isSet;
|
||||
|
||||
qint32 message_repeat;
|
||||
bool m_message_repeat_isSet;
|
||||
|
||||
qint32 rgb_color;
|
||||
bool m_rgb_color_isSet;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user