// CLI Functions
void cliFunc_connectCmd ( char *args );
void cliFunc_connectIdl ( char *args );
+void cliFunc_connectLst ( char *args );
void cliFunc_connectMst ( char *args );
void cliFunc_connectRst ( char *args );
void cliFunc_connectSts ( char *args );
// Connect Module command dictionary
CLIDict_Entry( connectCmd, "Sends a command via UART Connect, first arg is which uart, next arg is the command, rest are the arguments." );
CLIDict_Entry( connectIdl, "Sends N number of Idle commands, 2 is the default value, and should be sufficient in most cases." );
+CLIDict_Entry( connectLst, "Lists available UARTConnect commands and index id" );
CLIDict_Entry( connectMst, "Sets the device as master. Use argument of s to set as slave." );
CLIDict_Entry( connectRst, "Resets both Rx and Tx connect buffers and state variables." );
CLIDict_Entry( connectSts, "UARTConnect status." );
CLIDict_Def( uartConnectCLIDict, "UARTConnect Module Commands" ) = {
CLIDict_Item( connectCmd ),
CLIDict_Item( connectIdl ),
+ CLIDict_Item( connectLst ),
CLIDict_Item( connectMst ),
CLIDict_Item( connectRst ),
CLIDict_Item( connectSts ),
break;
}
case Animation:
+ break;
+
+ case RemoteCapability:
+ // TODO
+ break;
+
+ case RemoteOutput:
+ // TODO
+ break;
+
+ case RemoteInput:
+ // TODO
+ break;
+
default:
break;
}
Connect_send_Idle( count );
}
+void cliFunc_connectLst( char* args )
+{
+ const char *Command_strs[] = {
+ "CableCheck",
+ "IdRequest",
+ "IdEnumeration",
+ "IdReport",
+ "ScanCode",
+ "Animation",
+ "RemoteCapability",
+ "RemoteOutput",
+ "RemoteInput",
+ };
+
+ print( NL );
+ info_msg("List of UARTConnect commands");
+ for ( uint8_t cmd = 0; cmd < Command_TOP; cmd++ )
+ {
+ print( NL );
+ printInt8( cmd );
+ print(" - ");
+ dPrint( (char*)Command_strs[ cmd ] );
+ }
+}
+
void cliFunc_connectMst( char* args )
{
// Parse number from argument
info_msg("Resetting UARTConnect state...");
Connect_reset();
- // TODO - Argument for re-sync
+ // Reset node id
+ Connect_id = 0xFF;
}
void cliFunc_connectSts( char* args )
// Functions
typedef enum Command {
- CableCheck = 0, // Comm check
- IdRequest = 1, // Slave initialization (request id from master)
- IdEnumeration = 2, // Slave initialization (begin enumeration from master)
- IdReport = 3, // Slave initialization complete, report id to master
- ScanCode = 4, // ScanCode event status change
- Animation = 5, // Master trigger animation event (same command is sent back to master when ready)
+ CableCheck, // Comm check
+
+ IdRequest, // Slave initialization (request id from master)
+ IdEnumeration, // Slave initialization (begin enumeration from master)
+ IdReport, // Slave initialization complete, report id to master
+
+ ScanCode, // ScanCode event status change
+ Animation, // Master trigger animation event (same command is sent back to master when ready)
+
+ RemoteCapability, // Activate a capability on the given node
+ RemoteOutput, // Remote debug output from a given node
+ RemoteInput, // Remote command to send to a given node's debug cli
+
+ Command_TOP, // Enum bounds
} Command;
// UART Rx/Tx Status
// Id Enumeration Command
// Issued by the master whenever an Id Request is received
-// XXX Future work may include an "external capabilities" list in this command
typedef struct IdEnumerationCommand {
Command command;
uint8_t id;
// Id Report Command
// Issued by each slave to the master when assigned an Id
-// XXX Future work will include an "external capabilities" list in this command
typedef struct IdReportCommand {
Command command;
uint8_t id;
uint8_t firstParam[0];
} AnimationCommand;
+// Remote Capability Command
+// Initiated by the master to trigger a capability on a given node
+// RemoteOutput is enabled while capability is activated
+typedef struct RemoteCapabilityCommand {
+ Command command;
+ uint8_t id;
+ Capability capability;
+ uint8_t numArgs;
+ uint8_t firstArg[0];
+} RemoteCapabilityCommand;
+
+// Remote Output Command
+// Sends debug output to the master node
+// Uses print command redirection to generate each command message
+typedef struct RemoteOutputCommand {
+ Command command;
+ uint8_t id;
+ uint8_t length;
+ uint8_t firstChar[0];
+} RemoteOutputCommand;
+
+// Remote Input Command
+// Sends debug input to given node (usually from master)
+// Uses debug cli to execute command and sends all output using Remote Output Command
+typedef struct RemoteInputCommand {
+ Command command;
+ uint8_t id;
+ uint8_t length;
+ uint8_t firstChar[0];
+} RemoteInputCommand;
+
// ----- Functions -----