74 lines
1.9 KiB
C
74 lines
1.9 KiB
C
|
|
/*
|
||
|
|
* 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_ */
|