/* * usbComms.h * * Created on: May 17, 2023 * Author: Brian.Bailey */ #ifndef COMMS_USBCOMMS_H_ #define COMMS_USBCOMMS_H_ #include "virtual_com.h" //required for USB_RX_BUFFER_SIZE /******************************************************************************* * Definitions ******************************************************************************/ #define USB_RX_BUFFER_SIZE 512 //Size of rxDataBuffer in bytes (same size as USB_DATA_BUFFER) #define ACK "ACK" #define NAK "NAK" #define OK "ACK" #define NO "NAK" //Packet Mode #define USB_PACKET_START_BYTE 0xA5 //start byte #define USB_PACKET_HEADER_SIZE 3 //header size in bytes #define USB_PACKET_MAX_LENGTH 63 //503 //max length of packet including header #define USB_PACKET_MAX_PAYLOAD 60 //500 //max bytes for packet payload #define USB_PACKET_HEADER_OFFSET 0 //header byte offset #define USB_PACKET_LENGTH_H_OFFSET 1 //packet size high byte offset #define USB_PACKET_LENGTH_L_OFFSET 2 //packet size low byte offset #define USB_PACKET_PAYLOAD_OFFSET 3 //payload byte offset //PACKET FORMAT: //PACKET_START byte //Size byte high - Size of packet including header //Size byte low //Payload typedef struct { uint8_t rxDataBuffer[USB_RX_BUFFER_SIZE]; //buffer for received data (copied from rxBuffer) uint32_t rxDataIndex; //index in rxDataBuffer bool rxStringReceived; //string received and ready to process bool programMode; //USB program mode: use packet format uint32_t sendErrorCount; //number of times USB_SendString() has failed to send bool initialized; }USB_t; uint8_t USB_IsConnected(void); void USB_ProcessString(uint32_t size); void USB_ProcessCommand(void); void USB_ProcessProgramCommand(void); void USB_ProcessSystemCommand(void); void USB_ProcessFrequencyCommand(void); bool USB_CommandCompare(uint8_t *str); bool USB_CommandPrefixCompare(uint8_t *str); void USB_Send(uint8_t * data); #endif /* COMMS_USBCOMMS_H_ */