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
133134typedef 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