Adding basic remote capabilities + UART Rx DMA buffers

- Rx buffers weren't fast enough, had to use DMA :D
- Basic LCD remote capabilities are working, single node
- Multi-node broadcast seems to have a bug still
- DMA ring buffer allowed for significant processing simplification
  * There is an overrun risk, but the buffer is large and generally there isn't too much data being sent (just very quickly)
- Split out LCD layer stack capability into itself and an "exact" version used for updating remote nodes
This commit is contained in:
Jacob Alexander 2015-10-15 00:16:36 -07:00
parent 44a9803cab
commit 7e68e81f47
9 changed files with 572 additions and 280 deletions

View file

@ -119,11 +119,14 @@ typedef struct AnimationCommand {
// Remote Capability Command
// Initiated by the master to trigger a capability on a given node
// RemoteOutput is enabled while capability is activated
// Set id to 255 if command should be sent in all directions
typedef struct RemoteCapabilityCommand {
Command command;
uint8_t id;
Capability capability;
uint8_t numArgs;
uint8_t capabilityIndex;
uint8_t state;
uint8_t stateType;
uint8_t numArgs; // # of bytes, args may be larger than 1 byte
uint8_t firstArg[0];
} RemoteCapabilityCommand;
@ -162,4 +165,5 @@ void Connect_setup( uint8_t master );
void Connect_scan();
void Connect_send_ScanCode( uint8_t id, TriggerGuide *scanCodeStateList, uint8_t numScanCodes );
void Connect_send_RemoteCapability( uint8_t id, uint8_t capabilityIndex, uint8_t state, uint8_t stateType, uint8_t numArgs, uint8_t *args );