static void radioComSendControlSignalsNow() { // Assumption: txBytesLoaded is 0 (we are not in the middle of populating a data packet) // Assumption: radioLinkTxAvailable() >= 1 uint8 XDATA * packet; packet = radioLinkTxCurrentPacket(); packet[0] = 1; // Payload length is one byte. packet[1] = radioComTxSignals; sendSignalsSoon = 0; radioLinkTxSendPacket(PAYLOAD_TYPE_CONTROL_SIGNALS); }
void radioComTxSendByte(uint8 byte) { // Assumption: The user called radioComTxAvailable recently and it returned a non-zero value. if (txBytesLoaded == 0) { txPointer = packetPointer = radioLinkTxCurrentPacket(); } txPointer++; *txPointer = byte; txBytesLoaded++; if (txBytesLoaded == RADIO_LINK_PAYLOAD_SIZE) { radioComSendDataNow(); } }
void processByte(uint8 c) { uint8 XDATA *tmt; switch(c) { // these cases handle encoder readings; a better // implementation would use sscanf in the processBytesUart0 // function case '0': usbComTxSendByte(c); break; case '1': usbComTxSendByte(c); break; case '2': usbComTxSendByte(c); break; case '3': usbComTxSendByte(c); break; case '4': usbComTxSendByte(c); break; case '5': usbComTxSendByte(c); break; case '6': usbComTxSendByte(c); break; case '7': usbComTxSendByte(c); break; case '8': usbComTxSendByte(c); break; case '9': usbComTxSendByte(c); break; case '\r': usbComTxSendByte(c); break; case '\n': usbComTxSendByte(c); break; // just in case we can't print anything to screen // this command allows for a visual that we are // at least getting serial commands case COMMAND_TOGGLE_YELLOW_LED: yellowLedOn ^= 1; break; case COMMAND_RESET_DSPIC: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_RESET_DSPIC; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_ENABLE_QEI: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_ENABLE_QEI; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_DISABLE_QEI: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_DISABLE_QEI; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_READ_QEI: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_READ_QEI; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_SEND_T: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_SEND_T; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_RUN_MOTOR: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_RUN_MOTOR; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_HALT_MOTOR: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_HALT_MOTOR; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_RUN_FASTER: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_RUN_FASTER; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_RUN_SLOWER: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_RUN_SLOWER; // payload data radioLinkTxSendPacket(0); } break; case COMMAND_INVERT_DIRECTION: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_INVERT_DIRECTION; // payload data radioLinkTxSendPacket(0); yellowLedOn ^= 1; } break; case COMMAND_READ_ADC: tmt = radioLinkTxCurrentPacket(); if(tmt != NULL) { tmt[0] = 1; // payload length tmt[1] = COMMAND_READ_ADC; // payload data radioLinkTxSendPacket(0); yellowLedOn ^= 1; } break; } }