Files
TX/source/USB/usbComms.h

74 lines
1.9 KiB
C
Raw Permalink Normal View History

/*
* 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_ */