Skip to content

Commit 1f37067

Browse files
authored
Merge pull request #550 from LeeLeahy2/vc-ati12
VC: Add support for ATI12 (Programming complete) command
2 parents 793e699 + 70fbafa commit 1f37067

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

Firmware/LoRaSerial/Commands.ino

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ bool commandAT(const char * commandString)
225225
systemPrintln(" ATI9 - Display the maximum datagram size");
226226
systemPrintln(" ATI10 - Display radio metrics");
227227
systemPrintln(" ATI11 - Display the system runtime");
228+
systemPrintln(" ATI12 - Set programming complete");
228229

229230
//Virtual circuit information commands
230231
systemPrintln(" ATI30 - Return myVc value");
@@ -603,6 +604,14 @@ bool commandAT(const char * commandString)
603604
displayRadioStateHistory();
604605
return true;
605606

607+
case ('2'): //ATI12 - Set programming complete
608+
programmed = runtime.u64;
609+
610+
// Fall through
611+
// |
612+
// |
613+
// V
614+
606615
case ('1'): //ATI11 - Display the system runtime
607616
systemPrint("Runtime: ");
608617
systemPrintU64(runtime.u64);

Firmware/Tools/VcServerTest.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#define GET_VC_STATUS "ata"
2828
#define LINK_RESET_COMMAND "atz"
2929
#define MY_VC_ADDRESS "myVc: "
30+
#define SET_PROGRAM_COMPLETE "ati12"
3031
#define START_3_WAY_HANDSHAKE "atc"
3132

3233
#define DEBUG_LOCAL_COMMANDS 0
@@ -114,7 +115,7 @@ typedef enum
114115
CHECK_FOR_UPDATE,
115116

116117
//Done programming
117-
CMD_ATI11_2, //Get the runtime
118+
CMD_ATI12, //Tell the radio that programming is complete
118119
PROGRAMMING_COMPLETED, //Configuration is up-to-date
119120

120121
//Last in the list
@@ -127,7 +128,7 @@ const char * const commandName[] =
127128
"WAIT_CONNECT",
128129
"AT-CMDVC_2", "ATI31", "ATI_2", "ATI8_2", "ATI11",
129130
"CHECK_FOR_UPDATE",
130-
"ATI11_2", "PROGRAMMING_COMPLETED",
131+
"ATI12", "PROGRAMMING_COMPLETED",
131132
};
132133

133134
typedef struct _VIRTUAL_CIRCUIT
@@ -707,6 +708,10 @@ void radioCommandComplete(VC_SERIAL_MESSAGE_HEADER * header, uint8_t * data, uin
707708
}
708709
else
709710
{
711+
//Finish the programming
712+
if (virtualCircuitList[srcVc].activeCommand == CMD_ATI12)
713+
virtualCircuitList[srcVc].programUpdated = virtualCircuitList[srcVc].programmed;
714+
710715
//This was a VC command
711716
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue,
712717
virtualCircuitList[srcVc].activeCommand);
@@ -1198,23 +1203,22 @@ bool issueVcCommands(int vcIndex)
11981203
return true;
11991204

12001205
case CMD_ATI11:
1201-
case CMD_ATI11_2:
12021206
sendVcCommand(GET_RUNTIME, vcIndex);
12031207
return true;
12041208

12051209
case CHECK_FOR_UPDATE:
1206-
if (virtualCircuitList[vcIndex].programUpdated > virtualCircuitList[vcIndex].programmed)
1210+
if ((!virtualCircuitList[vcIndex].programUpdated)
1211+
|| (virtualCircuitList[vcIndex].programUpdated > virtualCircuitList[vcIndex].programmed))
12071212
{
1213+
//Complete the programming
1214+
COMMAND_ISSUE(virtualCircuitList[vcIndex].commandQueue,
1215+
virtualCircuitList[vcIndex].commandTimer,
1216+
CMD_ATI12);
1217+
COMMAND_ISSUE(virtualCircuitList[vcIndex].commandQueue,
1218+
virtualCircuitList[vcIndex].commandTimer,
1219+
PROGRAMMING_COMPLETED);
12081220
}
12091221

1210-
//Complete the programming
1211-
COMMAND_ISSUE(virtualCircuitList[vcIndex].commandQueue,
1212-
virtualCircuitList[vcIndex].commandTimer,
1213-
CMD_ATI11_2);
1214-
COMMAND_ISSUE(virtualCircuitList[vcIndex].commandQueue,
1215-
virtualCircuitList[vcIndex].commandTimer,
1216-
PROGRAMMING_COMPLETED);
1217-
12181222
//Done with the CHECK_FOR_UPDATE command
12191223
COMMAND_COMPLETE(virtualCircuitList[vcIndex].commandQueue,
12201224
virtualCircuitList[vcIndex].activeCommand);

0 commit comments

Comments
 (0)