Skip to content

Commit fe0cbd4

Browse files
authored
Merge pull request #546 from LeeLeahy2/vct-reorder-cmds
VCT: Reorder command processing
2 parents bdf6737 + b868590 commit fe0cbd4

File tree

1 file changed

+59
-45
lines changed

1 file changed

+59
-45
lines changed

Firmware/Tools/VcServerTest.c

Lines changed: 59 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ typedef enum
9292
//List commands in priority order
9393
CMD_ATI30 = 0, //Get myVC
9494
CMD_ATB, //Break all VC links
95+
CMD_ATI, //Get the device type
96+
CMD_ATI8, //Get the radio's unique ID
9597
CMD_ATA, //Get VC status
9698

9799
//Connect to the remote radio
@@ -102,18 +104,18 @@ typedef enum
102104
//Get remote radio connection status, type and ID
103105
CMD_AT_CMDVC_2, //Select target VC
104106
CMD_ATI31, //Get the VC state
105-
CMD_ATI, //Get the device type
106-
CMD_ATI8, //Get the radio's unique ID
107+
CMD_ATI_2, //Get the device type
108+
CMD_ATI8_2, //Get the radio's unique ID
107109

108110
//Last in the list
109111
CMD_LIST_SIZE
110112
} COMMANDS;
111113

112114
const char * const commandName[] =
113115
{
114-
"ATI30", "ATIB", "ATA", "AT-CMDVC", "ATC",
116+
"ATI30", "ATIB", "ATI", "ATI8", "ATA", "AT-CMDVC", "ATC",
115117
"WAIT_CONNECT",
116-
"AT-CMDVC_2", "ATI31", "ATI", "ATI8",
118+
"AT-CMDVC_2", "ATI31", "ATI_2", "ATI8_2",
117119
};
118120

119121
typedef struct _VIRTUAL_CIRCUIT
@@ -526,9 +528,15 @@ void radioToPcLinkStatus(VC_SERIAL_MESSAGE_HEADER * header, uint8_t * data, uint
526528
{
527529
if (DEBUG_PC_CMD_ISSUE)
528530
printf("VC %d ALIVE\n", srcVc);
529-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_AT_CMDVC);
530-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_ATC);
531-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_WAIT_CONNECTED);
531+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
532+
virtualCircuitList[srcVc].commandTimer,
533+
CMD_AT_CMDVC);
534+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
535+
virtualCircuitList[srcVc].commandTimer,
536+
CMD_ATC);
537+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
538+
virtualCircuitList[srcVc].commandTimer,
539+
CMD_WAIT_CONNECTED);
532540
}
533541

534542
if (DISPLAY_VC_STATE)
@@ -567,24 +575,25 @@ void radioToPcLinkStatus(VC_SERIAL_MESSAGE_HEADER * header, uint8_t * data, uint
567575
{
568576
if (virtualCircuitList[srcVc].activeCommand == CMD_ATC)
569577
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].activeCommand);
570-
571-
//Get the device information
572-
if (srcVc == VC_SERVER)
573-
{
574-
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI);
575-
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI8);
576-
}
577-
else
578-
{
579-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_AT_CMDVC_2);
580-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_ATI31);
581-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_ATI);
582-
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].commandTimer, CMD_ATI8);
583-
}
584578
}
585579
COMMAND_COMPLETE(pcCommandQueue, pcActiveCommand);
586580
if (DISPLAY_VC_STATE)
587581
printf("======= VC %d CONNECTED ======\n", srcVc);
582+
if (srcVc != myVc)
583+
{
584+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
585+
virtualCircuitList[srcVc].commandTimer,
586+
CMD_AT_CMDVC_2);
587+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
588+
virtualCircuitList[srcVc].commandTimer,
589+
CMD_ATI31);
590+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
591+
virtualCircuitList[srcVc].commandTimer,
592+
CMD_ATI_2);
593+
COMMAND_ISSUE(virtualCircuitList[srcVc].commandQueue,
594+
virtualCircuitList[srcVc].commandTimer,
595+
CMD_ATI8_2);
596+
}
588597
break;
589598
}
590599

@@ -645,20 +654,23 @@ void radioCommandComplete(VC_SERIAL_MESSAGE_HEADER * header, uint8_t * data, uin
645654
{
646655
if (pcCommandVc < MAX_VC)
647656
{
648-
COMMAND_COMPLETE(virtualCircuitList[pcCommandVc].commandQueue, virtualCircuitList[pcCommandVc].activeCommand);
657+
COMMAND_COMPLETE(virtualCircuitList[pcCommandVc].commandQueue,
658+
virtualCircuitList[pcCommandVc].activeCommand);
649659
}
650660
COMMAND_COMPLETE(pcCommandQueue, pcActiveCommand);
651661
}
652662
else if (virtualCircuitList[pcCommandVc].activeCommand < CMD_LIST_SIZE)
653663
{
654664
//This was a VC command
655-
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].activeCommand);
665+
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue,
666+
virtualCircuitList[srcVc].activeCommand);
656667
}
657668
}
658669
else
659670
{
660671
//This was a VC command
661-
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue, virtualCircuitList[srcVc].activeCommand);
672+
COMMAND_COMPLETE(virtualCircuitList[srcVc].commandQueue,
673+
virtualCircuitList[srcVc].activeCommand);
662674
}
663675

664676
vcMsg = (VC_COMMAND_COMPLETE_MESSAGE *)data;
@@ -835,12 +847,6 @@ void issuePcCommands()
835847
pcActiveCommand = cmd;
836848
switch (cmd)
837849
{
838-
case CMD_ATB: //Break all of the VC links
839-
if (DEBUG_PC_CMD_ISSUE)
840-
printf("Issuing ATB command\n");
841-
cmdToRadio((uint8_t *)BREAK_LINKS_COMMAND, strlen(BREAK_LINKS_COMMAND));
842-
return;
843-
844850
case CMD_ATI30: //Get myVC
845851
if (myVc == VC_UNASSIGNED)
846852
{
@@ -856,6 +862,24 @@ void issuePcCommands()
856862
COMMAND_COMPLETE(pcCommandQueue, pcActiveCommand);
857863
break;
858864

865+
case CMD_ATB: //Break all of the VC links
866+
if (DEBUG_PC_CMD_ISSUE)
867+
printf("Issuing ATB command\n");
868+
cmdToRadio((uint8_t *)BREAK_LINKS_COMMAND, strlen(BREAK_LINKS_COMMAND));
869+
return;
870+
871+
case CMD_ATI:
872+
if (DEBUG_PC_CMD_ISSUE)
873+
printf("Issuing ATI command\n");
874+
cmdToRadio((uint8_t *)GET_DEVICE_INFO, strlen(GET_DEVICE_INFO));
875+
return;
876+
877+
case CMD_ATI8:
878+
if (DEBUG_PC_CMD_ISSUE)
879+
printf("Issuing ATI8 command\n");
880+
cmdToRadio((uint8_t *)GET_UNIQUE_ID, strlen(GET_UNIQUE_ID));
881+
return;
882+
859883
case CMD_ATA: //Get all the VC states
860884
if (DEBUG_PC_CMD_ISSUE)
861885
printf("Issuing ATA command\n");
@@ -884,18 +908,6 @@ void issuePcCommands()
884908
printf("Issuing ATI31 command\n");
885909
cmdToRadio((uint8_t *)GET_VC_STATE, strlen(GET_VC_STATE));
886910
return;
887-
888-
case CMD_ATI:
889-
if (DEBUG_PC_CMD_ISSUE)
890-
printf("Issuing ATI command\n");
891-
cmdToRadio((uint8_t *)GET_DEVICE_INFO, strlen(GET_DEVICE_INFO));
892-
return;
893-
894-
case CMD_ATI8:
895-
if (DEBUG_PC_CMD_ISSUE)
896-
printf("Issuing ATI8 command\n");
897-
cmdToRadio((uint8_t *)GET_UNIQUE_ID, strlen(GET_UNIQUE_ID));
898-
return;
899911
}
900912
}
901913
}
@@ -1050,7 +1062,7 @@ bool issueVcCommands(int vcIndex)
10501062
if (commandProcessorIdle(vcIndex))
10511063
{
10521064
if (DEBUG_PC_CMD_ISSUE)
1053-
printf("Migrating AT-CMDVC and ATI31 commands to PC command queue\n");
1065+
printf("Migrating AT-CMDVC_2 and ATI31 commands to PC command queue\n");
10541066
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_AT_CMDVC_2);
10551067
if (COMMAND_PENDING(virtualCircuitList[vcIndex].commandQueue, CMD_ATI31))
10561068
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI31);
@@ -1062,11 +1074,11 @@ bool issueVcCommands(int vcIndex)
10621074
case CMD_ATI31:
10631075
return true;
10641076

1065-
case CMD_ATI:
1077+
case CMD_ATI_2:
10661078
sendVcCommand(GET_DEVICE_INFO, vcIndex);
10671079
return true;
10681080

1069-
case CMD_ATI8:
1081+
case CMD_ATI8_2:
10701082
sendVcCommand(GET_UNIQUE_ID, vcIndex);
10711083
return true;
10721084
}
@@ -1185,6 +1197,8 @@ int main(int argc, char **argv)
11851197
//Perform the initialization commands
11861198
pcCommandTimer = 1;
11871199
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI30); //Get myVC
1200+
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI); //Get Radio type
1201+
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATI8); //Get Radio unique ID
11881202
COMMAND_ISSUE(pcCommandQueue, pcCommandTimer, CMD_ATA); //Get all the VC states
11891203

11901204
//Break the links if requested

0 commit comments

Comments
 (0)