Skip to content

Commit 0003334

Browse files
authored
Merge pull request #500 from LeeLeahy2/training-settings
Add trainingSettings
2 parents 7f6694c + fd7c26c commit 0003334

File tree

3 files changed

+98
-97
lines changed

3 files changed

+98
-97
lines changed

Firmware/LoRaSerial/LoRaSerial.ino

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,8 @@ unsigned long retransmitTimeout = 0; //Throttle back re-transmits
509509
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
510510
const Settings defaultSettings;
511511
Settings settings; //Active settings used by the radio
512-
Settings tempSettings; //Create a duplicate of settings during training so that we can resort as needed
512+
Settings tempSettings; //Temporary settings used for command processing
513+
Settings trainingSettings; //Settings used for training other radios
513514

514515
char platformPrefix[25]; //Used for printing platform specific device name, ie "SAMD21 1W 915MHz"
515516
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Firmware/LoRaSerial/Radio.ino

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,88 +1237,88 @@ void updateRadioParameters(uint8_t * rxData)
12371237
memcpy(&params, rxData, sizeof(params));
12381238

12391239
//Update the radio parameters
1240-
tempSettings.autoTuneFrequency = params.autoTuneFrequency;
1241-
tempSettings.frequencyHop = params.frequencyHop;
1242-
tempSettings.frequencyMax = params.frequencyMax;
1243-
tempSettings.frequencyMin = params.frequencyMin;
1244-
tempSettings.maxDwellTime = params.maxDwellTime;
1245-
tempSettings.numberOfChannels = params.numberOfChannels;
1246-
tempSettings.radioBandwidth = params.radioBandwidth;
1247-
tempSettings.radioBroadcastPower_dbm = params.radioBroadcastPower_dbm;
1248-
tempSettings.radioCodingRate = params.radioCodingRate;
1249-
tempSettings.radioPreambleLength = params.radioPreambleLength;
1250-
tempSettings.radioSpreadFactor = params.radioSpreadFactor;
1251-
tempSettings.radioSyncWord = params.radioSyncWord;
1252-
tempSettings.txToRxUsec = params.txToRxUsec;
1240+
trainingSettings.autoTuneFrequency = params.autoTuneFrequency;
1241+
trainingSettings.frequencyHop = params.frequencyHop;
1242+
trainingSettings.frequencyMax = params.frequencyMax;
1243+
trainingSettings.frequencyMin = params.frequencyMin;
1244+
trainingSettings.maxDwellTime = params.maxDwellTime;
1245+
trainingSettings.numberOfChannels = params.numberOfChannels;
1246+
trainingSettings.radioBandwidth = params.radioBandwidth;
1247+
trainingSettings.radioBroadcastPower_dbm = params.radioBroadcastPower_dbm;
1248+
trainingSettings.radioCodingRate = params.radioCodingRate;
1249+
trainingSettings.radioPreambleLength = params.radioPreambleLength;
1250+
trainingSettings.radioSpreadFactor = params.radioSpreadFactor;
1251+
trainingSettings.radioSyncWord = params.radioSyncWord;
1252+
trainingSettings.txToRxUsec = params.txToRxUsec;
12531253

12541254
//Update the radio protocol parameters
1255-
tempSettings.dataScrambling = params.dataScrambling;
1256-
tempSettings.enableCRC16 = params.enableCRC16;
1257-
tempSettings.encryptData = params.encryptData;
1258-
memcpy(tempSettings.encryptionKey, params.encryptionKey, sizeof(tempSettings.encryptionKey));
1259-
tempSettings.framesToYield = params.framesToYield;
1260-
tempSettings.heartbeatTimeout = params.heartbeatTimeout;
1261-
tempSettings.maxResends = params.maxResends;
1262-
tempSettings.netID = params.netID;
1263-
tempSettings.operatingMode = params.operatingMode;
1264-
tempSettings.overheadTime = params.overheadTime;
1265-
tempSettings.selectLedUse = params.selectLedUse;
1266-
tempSettings.server = params.server;
1267-
tempSettings.verifyRxNetID = params.verifyRxNetID;
1255+
trainingSettings.dataScrambling = params.dataScrambling;
1256+
trainingSettings.enableCRC16 = params.enableCRC16;
1257+
trainingSettings.encryptData = params.encryptData;
1258+
memcpy(trainingSettings.encryptionKey, params.encryptionKey, sizeof(trainingSettings.encryptionKey));
1259+
trainingSettings.framesToYield = params.framesToYield;
1260+
trainingSettings.heartbeatTimeout = params.heartbeatTimeout;
1261+
trainingSettings.maxResends = params.maxResends;
1262+
trainingSettings.netID = params.netID;
1263+
trainingSettings.operatingMode = params.operatingMode;
1264+
trainingSettings.overheadTime = params.overheadTime;
1265+
trainingSettings.selectLedUse = params.selectLedUse;
1266+
trainingSettings.server = params.server;
1267+
trainingSettings.verifyRxNetID = params.verifyRxNetID;
12681268

12691269
//Update the debug parameters
12701270
if (params.copyDebug)
12711271
{
1272-
tempSettings.copyDebug = params.copyDebug;
1273-
tempSettings.debug = params.debug;
1274-
tempSettings.debugDatagrams = params.debugDatagrams;
1275-
tempSettings.debugHeartbeat = params.debugHeartbeat;
1276-
tempSettings.debugNvm = params.debugNvm;
1277-
tempSettings.debugRadio = params.debugRadio;
1278-
tempSettings.debugReceive = params.debugReceive;
1279-
tempSettings.debugSerial = params.debugSerial;
1280-
tempSettings.debugStates = params.debugStates;
1281-
tempSettings.debugSync = params.debugSync;
1282-
tempSettings.debugTraining = params.debugTraining;
1283-
tempSettings.debugTransmit = params.debugTransmit;
1284-
tempSettings.displayRealMillis = params.displayRealMillis;
1285-
tempSettings.printAckNumbers = params.printAckNumbers;
1286-
tempSettings.printChannel = params.printChannel;
1287-
tempSettings.printFrequency = params.printFrequency;
1288-
tempSettings.printLinkUpDown = params.printLinkUpDown;
1289-
tempSettings.printPacketQuality = params.printPacketQuality;
1290-
tempSettings.printPktData = params.printPktData;
1291-
tempSettings.printRfData = params.printRfData;
1292-
tempSettings.printTimestamp = params.printTimestamp;
1293-
tempSettings.printTxErrors = params.printTxErrors;
1272+
trainingSettings.copyDebug = params.copyDebug;
1273+
trainingSettings.debug = params.debug;
1274+
trainingSettings.debugDatagrams = params.debugDatagrams;
1275+
trainingSettings.debugHeartbeat = params.debugHeartbeat;
1276+
trainingSettings.debugNvm = params.debugNvm;
1277+
trainingSettings.debugRadio = params.debugRadio;
1278+
trainingSettings.debugReceive = params.debugReceive;
1279+
trainingSettings.debugSerial = params.debugSerial;
1280+
trainingSettings.debugStates = params.debugStates;
1281+
trainingSettings.debugSync = params.debugSync;
1282+
trainingSettings.debugTraining = params.debugTraining;
1283+
trainingSettings.debugTransmit = params.debugTransmit;
1284+
trainingSettings.displayRealMillis = params.displayRealMillis;
1285+
trainingSettings.printAckNumbers = params.printAckNumbers;
1286+
trainingSettings.printChannel = params.printChannel;
1287+
trainingSettings.printFrequency = params.printFrequency;
1288+
trainingSettings.printLinkUpDown = params.printLinkUpDown;
1289+
trainingSettings.printPacketQuality = params.printPacketQuality;
1290+
trainingSettings.printPktData = params.printPktData;
1291+
trainingSettings.printRfData = params.printRfData;
1292+
trainingSettings.printTimestamp = params.printTimestamp;
1293+
trainingSettings.printTxErrors = params.printTxErrors;
12941294
}
12951295

12961296
//Update the serial parameters
12971297
if (params.copySerial)
12981298
{
1299-
tempSettings.copySerial = params.copySerial;
1300-
tempSettings.echo = params.echo;
1301-
tempSettings.flowControl = params.flowControl;
1302-
tempSettings.invertCts = params.invertCts;
1303-
tempSettings.invertRts = params.invertRts;
1304-
tempSettings.serialSpeed = params.serialSpeed;
1305-
tempSettings.serialTimeoutBeforeSendingFrame_ms = params.serialTimeoutBeforeSendingFrame_ms;
1306-
tempSettings.usbSerialWait = params.usbSerialWait;
1299+
trainingSettings.copySerial = params.copySerial;
1300+
trainingSettings.echo = params.echo;
1301+
trainingSettings.flowControl = params.flowControl;
1302+
trainingSettings.invertCts = params.invertCts;
1303+
trainingSettings.invertRts = params.invertRts;
1304+
trainingSettings.serialSpeed = params.serialSpeed;
1305+
trainingSettings.serialTimeoutBeforeSendingFrame_ms = params.serialTimeoutBeforeSendingFrame_ms;
1306+
trainingSettings.usbSerialWait = params.usbSerialWait;
13071307
}
13081308

13091309
//Update the training values
1310-
tempSettings.clientFindPartnerRetryInterval = params.clientFindPartnerRetryInterval;
1310+
trainingSettings.clientFindPartnerRetryInterval = params.clientFindPartnerRetryInterval;
13111311
//The trainingKey is already the same
1312-
tempSettings.trainingTimeout = params.trainingTimeout;
1312+
trainingSettings.trainingTimeout = params.trainingTimeout;
13131313

13141314
//Update the trigger parameters
13151315
if (params.copyTriggers)
13161316
{
1317-
tempSettings.copyTriggers = params.copyTriggers;
1318-
tempSettings.triggerEnable = params.triggerEnable;
1319-
tempSettings.triggerEnable2 = params.triggerEnable2;
1320-
tempSettings.triggerWidth = params.triggerWidth;
1321-
tempSettings.triggerWidthIsMultiplier = params.triggerWidthIsMultiplier;
1317+
trainingSettings.copyTriggers = params.copyTriggers;
1318+
trainingSettings.triggerEnable = params.triggerEnable;
1319+
trainingSettings.triggerEnable2 = params.triggerEnable2;
1320+
trainingSettings.triggerWidth = params.triggerWidth;
1321+
trainingSettings.triggerWidthIsMultiplier = params.triggerWidthIsMultiplier;
13221322
}
13231323
}
13241324

@@ -1334,7 +1334,7 @@ bool xmitDatagramTrainRadioParameters(const uint8_t * clientID)
13341334
radioCallHistory[RADIO_CALL_xmitDatagramTrainRadioParameters] = millis();
13351335

13361336
//Initialize the radio parameters
1337-
memcpy(&params, &tempSettings, sizeof(settings));
1337+
memcpy(&params, &trainingSettings, sizeof(settings));
13381338
params.server = false;
13391339

13401340
//Add the destination (client) ID

Firmware/LoRaSerial/Train.ino

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ void beginTrainingServer()
8787

8888
systemPrintln("Server radio protocol parameters");
8989
systemPrint(" netID: ");
90-
systemPrintln(tempSettings.netID);
90+
systemPrintln(trainingSettings.netID);
9191
systemPrint(" Encryption key: ");
92-
displayEncryptionKey(tempSettings.encryptionKey);
92+
displayEncryptionKey(trainingSettings.encryptionKey);
9393
systemPrintln();
9494
outputSerialData(true);
9595

@@ -104,14 +104,14 @@ void beginTrainingServer()
104104
void commonTrainingInitialization()
105105
{
106106
//Save the current settings
107-
tempSettings = settings;
107+
trainingSettings = settings;
108108

109109
//Use common radio settings between the client and server for training
110110
settings = defaultSettings;
111111
settings.dataScrambling = true; //Scramble the data
112112
settings.enableCRC16 = true; //Use CRC-16
113113
settings.encryptData = true; //Enable packet encryption
114-
memcpy(&settings.encryptionKey, &tempSettings.trainingKey, AES_KEY_BYTES); //Common encryption key
114+
memcpy(&settings.encryptionKey, &trainingSettings.trainingKey, AES_KEY_BYTES); //Common encryption key
115115
settings.frequencyHop = false; //Stay on the training frequency
116116
settings.maxResends = 1; //Don't waste time retransmitting
117117
settings.netID = 'T'; //NetID for training
@@ -124,37 +124,37 @@ void commonTrainingInitialization()
124124
selectHeaderAndTrailerBytes();
125125

126126
//Debug training if requested
127-
if (tempSettings.debugTraining)
127+
if (trainingSettings.debugTraining)
128128
{
129-
settings.selectLedUse = tempSettings.selectLedUse;
129+
settings.selectLedUse = trainingSettings.selectLedUse;
130130
//Ignore copyDebug
131-
settings.debug = tempSettings.debug;
132-
settings.debugDatagrams = tempSettings.debugDatagrams;
133-
settings.debugHeartbeat = tempSettings.debugHeartbeat;
134-
settings.debugNvm = tempSettings.debugNvm;
135-
settings.debugRadio = tempSettings.debugRadio;
136-
settings.debugReceive = tempSettings.debugReceive;
137-
settings.debugSerial = tempSettings.debugSerial;
138-
settings.debugStates = tempSettings.debugStates;
139-
settings.debugSync = tempSettings.debugSync;
140-
settings.debugTraining = tempSettings.debugTraining;
141-
settings.debugTransmit = tempSettings.debugTransmit;
142-
settings.displayRealMillis = tempSettings.displayRealMillis;
143-
settings.printAckNumbers = tempSettings.printAckNumbers;
144-
settings.printChannel = tempSettings.printChannel;
145-
settings.printFrequency = tempSettings.printFrequency;
146-
settings.printLinkUpDown = tempSettings.printLinkUpDown;
147-
settings.printPacketQuality = tempSettings.printPacketQuality;
148-
settings.printPktData = tempSettings.printPktData;
149-
settings.printRfData = tempSettings.printRfData;
150-
settings.printTimestamp = tempSettings.printTimestamp;
151-
settings.printTxErrors = tempSettings.printTxErrors;
131+
settings.debug = trainingSettings.debug;
132+
settings.debugDatagrams = trainingSettings.debugDatagrams;
133+
settings.debugHeartbeat = trainingSettings.debugHeartbeat;
134+
settings.debugNvm = trainingSettings.debugNvm;
135+
settings.debugRadio = trainingSettings.debugRadio;
136+
settings.debugReceive = trainingSettings.debugReceive;
137+
settings.debugSerial = trainingSettings.debugSerial;
138+
settings.debugStates = trainingSettings.debugStates;
139+
settings.debugSync = trainingSettings.debugSync;
140+
settings.debugTraining = trainingSettings.debugTraining;
141+
settings.debugTransmit = trainingSettings.debugTransmit;
142+
settings.displayRealMillis = trainingSettings.displayRealMillis;
143+
settings.printAckNumbers = trainingSettings.printAckNumbers;
144+
settings.printChannel = trainingSettings.printChannel;
145+
settings.printFrequency = trainingSettings.printFrequency;
146+
settings.printLinkUpDown = trainingSettings.printLinkUpDown;
147+
settings.printPacketQuality = trainingSettings.printPacketQuality;
148+
settings.printPktData = trainingSettings.printPktData;
149+
settings.printRfData = trainingSettings.printRfData;
150+
settings.printTimestamp = trainingSettings.printTimestamp;
151+
settings.printTxErrors = trainingSettings.printTxErrors;
152152

153153
//Ignore copyTriggers
154-
settings.triggerEnable = tempSettings.triggerEnable;
155-
settings.triggerEnable2 = tempSettings.triggerEnable2;
156-
settings.triggerWidth = tempSettings.triggerWidth;
157-
settings.triggerWidthIsMultiplier = tempSettings.triggerWidthIsMultiplier;
154+
settings.triggerEnable = trainingSettings.triggerEnable;
155+
settings.triggerEnable2 = trainingSettings.triggerEnable2;
156+
settings.triggerWidth = trainingSettings.triggerWidth;
157+
settings.triggerWidthIsMultiplier = trainingSettings.triggerWidthIsMultiplier;
158158
}
159159

160160
//Reset cylon variables
@@ -180,7 +180,7 @@ void commonTrainingInitialization()
180180
void endClientServerTraining(uint8_t event)
181181
{
182182
triggerEvent(event);
183-
settings = tempSettings; //Return to original radio settings
183+
settings = trainingSettings; //Return to original radio settings
184184

185185
if (settings.debugTraining)
186186
{

0 commit comments

Comments
 (0)