/** Endpoint number for the CDC control interface event notification endpoint. */
#define CDC_NOTIFICATION_EPNUM 3
- /** Size of the CDC control interface notification endpoint bank, in bytes */
+ /** Size of the CDC control interface notification endpoint bank, in bytes. */
#define CDC_NOTIFICATION_EPSIZE 8
- /** Endpoint number for the CDC data interface TX (data IN) endpoint */
+ /** Endpoint number for the CDC data interface TX (data IN) endpoint. */
#define CDC_TX_EPNUM 1
- /** Endpoint number for the CDC data interface RX (data OUT) endpoint */
+ /** Endpoint number for the CDC data interface RX (data OUT) endpoint. */
#define CDC_RX_EPNUM 2
- /** Size of the CDC data interface TX and RX data endpoint banks, in bytes */
+ /** Size of the CDC data interface TX and RX data endpoint banks, in bytes. */
#define CDC_TXRX_EPSIZE 16
/* Type Defines: */
#include "ProtocolDecoders.h"
/* Macros: */
- /** ARP header operation constant, indicating a request from a host for an address translation */
+ /** ARP header operation constant, indicating a request from a host for an address translation. */
#define ARP_OPERATION_REQUEST 1
- /** ARP header operation constant, indicating a reply from a host giving an address translation */
+ /** ARP header operation constant, indicating a reply from a host giving an address translation. */
#define ARP_OPERATION_REPLY 2
/* Type Defines: */
#include "ProtocolDecoders.h"
/* Macros: */
- /** DHCP operation constant, indicating a request from a host to a DHCP server */
+ /** DHCP operation constant, indicating a request from a host to a DHCP server. */
#define DHCP_OP_BOOTREQUEST 0x01
- /** DHCP operation constant, indicating a reply from a DHCP server to a host */
+ /** DHCP operation constant, indicating a reply from a DHCP server to a host. */
#define DHCP_OP_BOOTREPLY 0x02
- /** Hardware type constant, indicating Ethernet as a carrier */
+ /** Hardware type constant, indicating Ethernet as a carrier. */
#define DHCP_HTYPE_ETHERNET 0x01
- /** Magic boot protocol "cookie", inserted into all BOOTP packets (BOOTP is the carrier of DHCP) */
+ /** Magic boot protocol "cookie", inserted into all BOOTP packets (BOOTP is the carrier of DHCP). */
#define DHCP_MAGIC_COOKIE 0x63825363
- /** DHCP option list entry header, indicating that a subnet mask will follow */
+ /** DHCP option list entry header, indicating that a subnet mask will follow. */
#define DHCP_OPTION_SUBNETMASK 1
- /** DHCP option list entry header, indicating that the DHCP message type constant will follow */
+ /** DHCP option list entry header, indicating that the DHCP message type constant will follow. */
#define DHCP_OPTION_MESSAGETYPE 53
- /** DHCP option list entry header, indicating that the IP address of the DHCP server will follow */
+ /** DHCP option list entry header, indicating that the IP address of the DHCP server will follow. */
#define DHCP_OPTION_DHCPSERVER 54
- /** DHCP option list entry header, used to pad out option data */
+ /** DHCP option list entry header, used to pad out option data. */
#define DHCP_OPTION_PAD 0
- /** DHCP option list entry header, indicating the end of option data */
+ /** DHCP option list entry header, indicating the end of option data. */
#define DHCP_OPTION_END 255
- /** Message type constant, used in the DHCP option data field, requesting that a DHCP server offer an IP address */
+ /** Message type constant, used in the DHCP option data field, requesting that a DHCP server offer an IP address. */
#define DHCP_MESSAGETYPE_DISCOVER 1
- /** Message type constant, used in the DHCP option data field, indicating that a DHCP server is offering an IP address */
+ /** Message type constant, used in the DHCP option data field, indicating that a DHCP server is offering an IP address. */
#define DHCP_MESSAGETYPE_OFFER 2
- /** Message type constant, used in the DHCP option data field, requesting that a DHCP server lease a given IP address */
+ /** Message type constant, used in the DHCP option data field, requesting that a DHCP server lease a given IP address. */
#define DHCP_MESSAGETYPE_REQUEST 3
- /** Message type constant, used in the DHCP option data field, declining an offered DHCP server IP address lease */
+ /** Message type constant, used in the DHCP option data field, declining an offered DHCP server IP address lease. */
#define DHCP_MESSAGETYPE_DECLINE 4
- /** Message type constant, used in the DHCP option data field, ACKing a host IP lease request */
+ /** Message type constant, used in the DHCP option data field, ACKing a host IP lease request. */
#define DHCP_MESSAGETYPE_ACK 5
- /** Message type constant, used in the DHCP option data field, NACKing a host IP lease request */
+ /** Message type constant, used in the DHCP option data field, NACKing a host IP lease request. */
#define DHCP_MESSAGETYPE_NACK 6
- /** Message type constant, used in the DHCP option data field, indicating that a host is releasing a leased IP address */
+ /** Message type constant, used in the DHCP option data field, indicating that a host is releasing a leased IP address. */
#define DHCP_MESSAGETYPE_RELEASE 7
/* Type Defines: */
#include "IP.h"
/* Macros: */
- /** Physical MAC address of the USB RNDIS network adapter */
+ /** Physical MAC address of the USB RNDIS network adapter. */
#define ADAPTER_MAC_ADDRESS {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}
- /** Physical MAC address of the virtual server on the network */
+ /** Physical MAC address of the virtual server on the network. */
#define SERVER_MAC_ADDRESS {0x00, 0x01, 0x00, 0x01, 0x00, 0x01}
- /** Physical MAC address of the network broadcast address */
+ /** Physical MAC address of the network broadcast address. */
#define BROADCAST_MAC_ADDRESS {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
/** Performs a comparison between two MAC addresses, indicating if they are identical.
*/
#define MAC_COMPARE(MAC1, MAC2) (memcmp(MAC1, MAC2, sizeof(MAC_Address_t)) == 0)
- /** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard */
+ /** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard. */
#define ETHERNET_VER2_MINSIZE 0x0600
- /** Return value for all sub protocol handling routines, indicating that no response packet has been generated */
+ /** Return value for all sub protocol handling routines, indicating that no response packet has been generated. */
#define NO_RESPONSE 0
- /** Return value for all sub protocol handling routines, indicating that the packet has not yet been handled */
+ /** Return value for all sub protocol handling routines, indicating that the packet has not yet been handled. */
#define NO_PROCESS -1
/* Type Defines: */
- /** Type define for an Ethernet frame header */
+ /** Type define for an Ethernet frame header. */
typedef struct
{
MAC_Address_t Destination; /**< Physical MAC address of the packet recipient */
#define PROTOCOL_SCTP 132
/* Type Defines: */
- /** Type define for a protocol IP address of a device on a network */
+ /** Type define for a protocol IP address of a device on a network. */
typedef struct
{
uint8_t Octets[4]; /**< Individual bytes of an IP address */
#include "ProtocolDecoders.h"
/* Macros: */
- /** ICMP message type constant, indicating an ICMP ECHO Reply message */
+ /** ICMP message type constant, indicating an ICMP ECHO Reply message. */
#define ICMP_TYPE_ECHOREPLY 0
- /** ICMP message type constant, indicating a packet destination is unreachable */
+ /** ICMP message type constant, indicating a packet destination is unreachable. */
#define ICMP_TYPE_DESTINATIONUNREACHABLE 3
- /** ICMP message type constant, indicating an ICMP Source Quench message */
+ /** ICMP message type constant, indicating an ICMP Source Quench message. */
#define ICMP_TYPE_SOURCEQUENCH 4
- /** ICMP message type constant, indicating an ICMP Redirect message */
+ /** ICMP message type constant, indicating an ICMP Redirect message. */
#define ICMP_TYPE_REDIRECTMESSAGE 5
- /** ICMP message type constant, indicating an ICMP ECHO Request message */
+ /** ICMP message type constant, indicating an ICMP ECHO Request message. */
#define ICMP_TYPE_ECHOREQUEST 8
- /** ICMP message type constant, indicating an ICMP Time Exceeded message */
+ /** ICMP message type constant, indicating an ICMP Time Exceeded message. */
#define ICMP_TYPE_TIMEEXCEEDED 11
/* Type Defines: */
#include "ProtocolDecoders.h"
/* Macros: */
- /** Protocol IP address of the host (client) machine, once assigned by DHCP */
+ /** Protocol IP address of the host (client) machine, once assigned by DHCP. */
#define CLIENT_IP_ADDRESS { 10, 0, 0, 1}
- /** Protocol IP address of the virtual server machine */
+ /** Protocol IP address of the virtual server machine. */
#define SERVER_IP_ADDRESS { 10, 0, 0, 2}
- /** Protocol IP address of the broadcast address */
+ /** Protocol IP address of the broadcast address. */
#define BROADCAST_IP_ADDRESS {0xFF, 0xFF, 0xFF, 0xFF}
- /** Default Time To Live (TTL) value for sent packets, indicating the maximum allowable hops until their destination is reached */
+ /** Default Time To Live (TTL) value for sent packets, indicating the maximum allowable hops until their destination
+ * is reached.
+ */
#define DEFAULT_TTL 128
/** Performs a comparison between two IP addresses, indicating if they are identical.
#include "ProtocolDecoders.h"
/* Macros: */
- /** Maximum number of TCP ports which can be open at the one time */
+ /** Maximum number of TCP ports which can be open at the one time. */
#define MAX_OPEN_TCP_PORTS 1
- /** Maximum number of TCP connections which can be sustained at the one time */
+ /** Maximum number of TCP connections which can be sustained at the one time. */
#define MAX_TCP_CONNECTIONS 3
- /** TCP window size, giving the maximum number of bytes which can be buffered at the one time */
+ /** TCP window size, giving the maximum number of bytes which can be buffered at the one time. */
#define TCP_WINDOW_SIZE 512
- /** Port number for HTTP transmissions */
+ /** Port number for HTTP transmissions. */
#define TCP_PORT_HTTP SwapEndian_16(80)
- /** Data direction indicator for a TCP application buffer, indicating data from host-to-device */
+ /** Data direction indicator for a TCP application buffer, indicating data from host-to-device. */
#define TCP_PACKETDIR_IN false
- /** Data direction indicator for a TCP application buffer, indicating data from device-to-host */
+ /** Data direction indicator for a TCP application buffer, indicating data from device-to-host. */
#define TCP_PACKETDIR_OUT true
- /** Congestion Window Reduced TCP flag mask */
+ /** Congestion Window Reduced TCP flag mask. */
#define TCP_FLAG_CWR (1 << 7)
- /** Explicit Congestion Notification TCP flag mask */
+ /** Explicit Congestion Notification TCP flag mask. */
#define TCP_FLAG_ECE (1 << 6)
- /** Urgent TCP flag mask */
+ /** Urgent TCP flag mask. */
#define TCP_FLAG_URG (1 << 5)
- /** Data Acknowledge TCP flag mask */
+ /** Data Acknowledge TCP flag mask. */
#define TCP_FLAG_ACK (1 << 4)
- /** Data Push TCP flag mask */
+ /** Data Push TCP flag mask. */
#define TCP_FLAG_PSH (1 << 3)
- /** Reset TCP flag mask */
+ /** Reset TCP flag mask. */
#define TCP_FLAG_RST (1 << 2)
- /** Synchronize TCP flag mask */
+ /** Synchronize TCP flag mask. */
#define TCP_FLAG_SYN (1 << 1)
- /** Connection Finalize TCP flag mask */
+ /** Connection Finalize TCP flag mask. */
#define TCP_FLAG_FIN (1 << 0)
/** Application macro: Determines if the given application buffer contains a packet received from the host
#define TCP_APP_CLOSECONNECTION(Connection) MACROS{ Connection->State = TCP_Connection_Closing; }MACROE
/* Enums: */
- /** Enum for possible TCP port states */
+ /** Enum for possible TCP port states. */
enum TCP_PortStates_t
{
TCP_Port_Closed = 0, /**< TCP port closed, no connections to a host may be made on this port. */
TCP_Port_Open = 1, /**< TCP port open, connections to a host may be made on this port. */
};
- /** Enum for possible TCP connection states */
+ /** Enum for possible TCP connection states. */
enum TCP_ConnectionStates_t
{
TCP_Connection_Listen = 0, /**< Listening for a connection from a host */
};
/* Type Defines: */
- /** Type define for a TCP connection buffer structure, including size, data and direction */
+ /** Type define for a TCP connection buffer structure, including size, data and direction. */
typedef struct
{
uint16_t Length; /**< Length of data in the TCP application buffer */
bool Ready; /**< If data from host, indicates buffer ready to be read, otherwise indicates
* buffer ready to be sent to the host
*/
- bool InUse; /** Indicates if the buffer is locked to to the current direction, and cannot be changed */
+ bool InUse; /**< Indicates if the buffer is locked to to the current direction, and cannot be changed */
} TCP_ConnectionBuffer_t;
- /** Type define for a TCP connection information structure */
+ /** Type define for a TCP connection information structure. */
typedef struct
{
uint32_t SequenceNumberIn; /**< Current TCP sequence number for host-to-device */
TCP_ConnectionBuffer_t Buffer; /**< Connection application data buffer */
} TCP_ConnectionInfo_t;
- /** Type define for a complete TCP connection state */
+ /** Type define for a complete TCP connection state. */
typedef struct
{
uint16_t Port; /**< Connection port number on the device */
uint8_t State; /**< Current connection state, a value from the TCP_ConnectionStates_t enum */
} TCP_ConnectionState_t;
- /** Type define for a TCP port state */
+ /** Type define for a TCP port state. */
typedef struct
{
uint16_t Port; /**< TCP port number on the device */
TCP_ConnectionBuffer_t* Buffer); /**< Port application handler */
} TCP_PortState_t;
- /** Type define for a TCP packet header */
+ /** Type define for a TCP packet header. */
typedef struct
{
uint16_t SourcePort; /**< Source port of the TCP packet */
uint16_t UrgentPointer; /**< Urgent data pointer */
} TCP_Header_t;
- /* External Variables: */
- TCP_PortState_t PortStateTable[MAX_OPEN_TCP_PORTS];
-
/* Function Prototypes: */
void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo);
void TCP_Init(void);
#include "DHCP.h"
/* Macros: */
- /** Source UDP port for a DHCP request */
+ /** Source UDP port for a DHCP request. */
#define UDP_PORT_DHCP_REQUEST 67
- /** Destination UDP port for a DHCP reply */
+ /** Destination UDP port for a DHCP reply. */
#define UDP_PORT_DHCP_REPLY 68
/* Type Defines: */
- /** Type define for a UDP packet header */
+ /** Type define for a UDP packet header. */
typedef struct
{
uint16_t SourcePort; /**< Packet source port */
/* Macros: */
/** Device control request for used in the Microsoft OS Descriptor for retrieving the OS Feature
- * descriptors of the device
+ * descriptors of the device.
*/
#define REQ_GetOSFeatureDescriptor 0x01
- /** Descriptor index for a Microsoft Proprietary Extended Device Compatibility descriptor */
+ /** Descriptor index for a Microsoft Proprietary Extended Device Compatibility descriptor. */
#define EXTENDED_COMPAT_ID_DESCRIPTOR 0x0004
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#include <LUFA/Drivers/Board/LEDs.h>
/* Macros: */
- /** Idle period indicating that reports should be sent only when the inputs have changed */
+ /** Idle period indicating that reports should be sent only when the inputs have changed. */
#define HID_IDLE_CHANGESONLY 0
/** HID Class specific request to get the next HID report from the device. */
USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length */
uint8_t Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
- uint16_t ACSpecification; /** Binary coded decimal value, indicating the supported Audio Class specification version */
- uint16_t TotalLength; /** Total length of the Audio class specific control descriptors, including this descriptor */
+ uint16_t ACSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */
+ uint16_t TotalLength; /**< Total length of the Audio class specific control descriptors, including this descriptor */
- uint8_t InCollection; /** Total number of audio class interfaces within this device */
- uint8_t InterfaceNumbers[1]; /** Interface numbers of each audio interface */
+ uint8_t InCollection; /**< Total number of audio class interfaces within this device */
+ uint8_t InterfaceNumbers[1]; /**< Interface numbers of each audio interface */
} USB_Audio_Interface_AC_t;
/** Type define for an Audio class specific MIDI streaming interface descriptor. This indicates to the host
#include <LUFA/Drivers/Board/Buttons.h>
/* Macros: */
- /** MIDI command for a note on (activation) event */
+ /** MIDI command for a note on (activation) event. */
#define MIDI_COMMAND_NOTE_ON 0x90
- /** MIDI command for a note off (deactivation) event */
+ /** MIDI command for a note off (deactivation) event. */
#define MIDI_COMMAND_NOTE_OFF 0x80
- /** Standard key press velocity value used for all note events, as no pressure sensor is mounted */
+ /** Standard key press velocity value used for all note events, as no pressure sensor is mounted. */
#define MIDI_STANDARD_VELOCITY 64
/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
{
uint32_t Signature; /**< Command block signature, must be CBW_SIGNATURE to indicate a valid Command Block */
uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper */
- uint32_t DataTransferLength; /** Length of the optional data portion of the issued command, in bytes */
+ uint32_t DataTransferLength; /**< Length of the optional data portion of the issued command, in bytes */
uint8_t Flags; /**< Command block flags, indicating command data direction */
uint8_t LUN; /**< Logical Unit number this command is issued to */
uint8_t SCSICommandLength; /**< Length of the issued SCSI command within the SCSI command data array */
#include "ProtocolDecoders.h"
/* Macros: */
- /** ARP header operation constant, indicating a request from a host for an address translation */
+ /** ARP header operation constant, indicating a request from a host for an address translation. */
#define ARP_OPERATION_REQUEST 1
- /** ARP header operation constant, indicating a reply from a host giving an address translation */
+ /** ARP header operation constant, indicating a reply from a host giving an address translation. */
#define ARP_OPERATION_REPLY 2
/* Type Defines: */
#include "ProtocolDecoders.h"
/* Macros: */
- /** DHCP operation constant, indicating a request from a host to a DHCP server */
+ /** DHCP operation constant, indicating a request from a host to a DHCP server. */
#define DHCP_OP_BOOTREQUEST 0x01
- /** DHCP operation constant, indicating a reply from a DHCP server to a host */
+ /** DHCP operation constant, indicating a reply from a DHCP server to a host. */
#define DHCP_OP_BOOTREPLY 0x02
- /** Hardware type constant, indicating Ethernet as a carrier */
+ /** Hardware type constant, indicating Ethernet as a carrier. */
#define DHCP_HTYPE_ETHERNET 0x01
- /** Magic boot protocol "cookie", inserted into all BOOTP packets (BOOTP is the carrier of DHCP) */
+ /** Magic boot protocol "cookie", inserted into all BOOTP packets (BOOTP is the carrier of DHCP). */
#define DHCP_MAGIC_COOKIE 0x63825363
- /** DHCP option list entry header, indicating that a subnet mask will follow */
+ /** DHCP option list entry header, indicating that a subnet mask will follow. */
#define DHCP_OPTION_SUBNETMASK 1
- /** DHCP option list entry header, indicating that the DHCP message type constant will follow */
+ /** DHCP option list entry header, indicating that the DHCP message type constant will follow. */
#define DHCP_OPTION_MESSAGETYPE 53
- /** DHCP option list entry header, indicating that the IP address of the DHCP server will follow */
+ /** DHCP option list entry header, indicating that the IP address of the DHCP server will follow. */
#define DHCP_OPTION_DHCPSERVER 54
- /** DHCP option list entry header, used to pad out option data */
+ /** DHCP option list entry header, used to pad out option data. */
#define DHCP_OPTION_PAD 0
- /** DHCP option list entry header, indicating the end of option data */
+ /** DHCP option list entry header, indicating the end of option data. */
#define DHCP_OPTION_END 255
- /** Message type constant, used in the DHCP option data field, requesting that a DHCP server offer an IP address */
+ /** Message type constant, used in the DHCP option data field, requesting that a DHCP server offer an IP address. */
#define DHCP_MESSAGETYPE_DISCOVER 1
- /** Message type constant, used in the DHCP option data field, indicating that a DHCP server is offering an IP address */
+ /** Message type constant, used in the DHCP option data field, indicating that a DHCP server is offering an IP address. */
#define DHCP_MESSAGETYPE_OFFER 2
- /** Message type constant, used in the DHCP option data field, requesting that a DHCP server lease a given IP address */
+ /** Message type constant, used in the DHCP option data field, requesting that a DHCP server lease a given IP address. */
#define DHCP_MESSAGETYPE_REQUEST 3
- /** Message type constant, used in the DHCP option data field, declining an offered DHCP server IP address lease */
+ /** Message type constant, used in the DHCP option data field, declining an offered DHCP server IP address lease. */
#define DHCP_MESSAGETYPE_DECLINE 4
- /** Message type constant, used in the DHCP option data field, ACKing a host IP lease request */
+ /** Message type constant, used in the DHCP option data field, ACKing a host IP lease request. */
#define DHCP_MESSAGETYPE_ACK 5
- /** Message type constant, used in the DHCP option data field, NACKing a host IP lease request */
+ /** Message type constant, used in the DHCP option data field, NACKing a host IP lease request. */
#define DHCP_MESSAGETYPE_NACK 6
- /** Message type constant, used in the DHCP option data field, indicating that a host is releasing a leased IP address */
+ /** Message type constant, used in the DHCP option data field, indicating that a host is releasing a leased IP address. */
#define DHCP_MESSAGETYPE_RELEASE 7
/* Type Defines: */
#include "IP.h"
/* Macros: */
- /** Physical MAC address of the USB RNDIS network adapter */
+ /** Physical MAC address of the USB RNDIS network adapter. */
#define ADAPTER_MAC_ADDRESS {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}
- /** Physical MAC address of the virtual server on the network */
+ /** Physical MAC address of the virtual server on the network. */
#define SERVER_MAC_ADDRESS {0x00, 0x01, 0x00, 0x01, 0x00, 0x01}
- /** Physical MAC address of the network broadcast address */
+ /** Physical MAC address of the network broadcast address. */
#define BROADCAST_MAC_ADDRESS {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
/** Performs a comparison between two MAC addresses, indicating if they are identical.
*/
#define MAC_COMPARE(MAC1, MAC2) (memcmp(MAC1, MAC2, sizeof(MAC_Address_t)) == 0)
- /** Maximum size of an incoming or outgoing Ethernet frame in bytes */
+ /** Maximum size of an incoming or outgoing Ethernet frame in bytes. */
#define ETHERNET_FRAME_SIZE_MAX 1500
- /** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard */
+ /** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard. */
#define ETHERNET_VER2_MINSIZE 0x0600
- /** Return value for all sub protocol handling routines, indicating that no response packet has been generated */
+ /** Return value for all sub protocol handling routines, indicating that no response packet has been generated. */
#define NO_RESPONSE 0
- /** Return value for all sub protocol handling routines, indicating that the packet has not yet been handled */
+ /** Return value for all sub protocol handling routines, indicating that the packet has not yet been handled. */
#define NO_PROCESS -1
/* Type Defines: */
bool FrameInBuffer; /**< Indicates if a frame is currently stored in the buffer */
} Ethernet_Frame_Info_t;
- /** Type define for an Ethernet frame header */
+ /** Type define for an Ethernet frame header. */
typedef struct
{
MAC_Address_t Destination; /**< Physical MAC address of the packet recipient */
#define PROTOCOL_SCTP 132
/* Type Defines: */
- /** Type define for a physical MAC address of a device on a network */
+ /** Type define for a physical MAC address of a device on a network. */
typedef struct
{
uint8_t Octets[6]; /**< Individual bytes of a MAC address */
} MAC_Address_t;
- /** Type define for a protocol IP address of a device on a network */
+ /** Type define for a protocol IP address of a device on a network. */
typedef struct
{
uint8_t Octets[4]; /**< Individual bytes of an IP address */
#include "ProtocolDecoders.h"
/* Macros: */
- /** ICMP message type constant, indicating an ICMP ECHO Reply message */
+ /** ICMP message type constant, indicating an ICMP ECHO Reply message. */
#define ICMP_TYPE_ECHOREPLY 0
- /** ICMP message type constant, indicating a packet destination is unreachable */
+ /** ICMP message type constant, indicating a packet destination is unreachable. */
#define ICMP_TYPE_DESTINATIONUNREACHABLE 3
- /** ICMP message type constant, indicating an ICMP Source Quench message */
+ /** ICMP message type constant, indicating an ICMP Source Quench message. */
#define ICMP_TYPE_SOURCEQUENCH 4
- /** ICMP message type constant, indicating an ICMP Redirect message */
+ /** ICMP message type constant, indicating an ICMP Redirect message. */
#define ICMP_TYPE_REDIRECTMESSAGE 5
- /** ICMP message type constant, indicating an ICMP ECHO Request message */
+ /** ICMP message type constant, indicating an ICMP ECHO Request message. */
#define ICMP_TYPE_ECHOREQUEST 8
- /** ICMP message type constant, indicating an ICMP Time Exceeded message */
+ /** ICMP message type constant, indicating an ICMP Time Exceeded message. */
#define ICMP_TYPE_TIMEEXCEEDED 11
/* Type Defines: */
#include "ProtocolDecoders.h"
/* Macros: */
- /** Protocol IP address of the host (client) machine, once assigned by DHCP */
+ /** Protocol IP address of the host (client) machine, once assigned by DHCP. */
#define CLIENT_IP_ADDRESS { 10, 0, 0, 1}
- /** Protocol IP address of the virtual server machine */
+ /** Protocol IP address of the virtual server machine. */
#define SERVER_IP_ADDRESS { 10, 0, 0, 2}
- /** Protocol IP address of the broadcast address */
+ /** Protocol IP address of the broadcast address. */
#define BROADCAST_IP_ADDRESS {0xFF, 0xFF, 0xFF, 0xFF}
- /** Default Time To Live (TTL) value for sent packets, indicating the maximum allowable hops until their destination is reached */
+ /** Default Time To Live (TTL) value for sent packets, indicating the maximum allowable hops until their destination
+ * is reached.
+ */
#define DEFAULT_TTL 128
/** Performs a comparison between two IP addresses, indicating if they are identical.
#include "Ethernet.h"
/* Macros: */
- /** Implemented RNDIS Version Major */
+ /** Implemented RNDIS Version Major. */
#define REMOTE_NDIS_VERSION_MAJOR 0x01
- /** Implemented RNDIS Version Minor */
+ /** Implemented RNDIS Version Minor. */
#define REMOTE_NDIS_VERSION_MINOR 0x00
- /** RNDIS request to issue a host-to-device NDIS command */
+ /** RNDIS request to issue a host-to-device NDIS command. */
#define REQ_SendEncapsulatedCommand 0x00
- /** RNDIS request to issue a device-to-host NDIS response */
+ /** RNDIS request to issue a device-to-host NDIS response. */
#define REQ_GetEncapsulatedResponse 0x01
/* Enums: */
RNDIS_Data_Initialized = 2, /**< Adapter currently initialized and ready for data transfers */
};
- /** Enum for the NDIS hardware states */
+ /** Enum for the NDIS hardware states. */
enum NDIS_Hardware_Status_t
{
NdisHardwareStatusReady, /**< Hardware Ready to accept commands from the host */
};
/* Type Defines: */
- /** Type define for a RNDIS message header, sent before RNDIS messages */
+ /** Type define for a RNDIS message header, sent before RNDIS messages. */
typedef struct
{
uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */
uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */
} RNDIS_Message_Header_t;
- /** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter */
+ /** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter. */
typedef struct
{
uint32_t MessageType;
uint32_t Reserved;
} RNDIS_Packet_Message_t;
- /** Type define for a RNDIS Initialize command message */
+ /** Type define for a RNDIS Initialize command message. */
typedef struct
{
uint32_t MessageType;
uint32_t MaxTransferSize;
} RNDIS_Initialize_Message_t;
- /** Type define for a RNDIS Initialize complete response message */
+ /** Type define for a RNDIS Initialize complete response message. */
typedef struct
{
uint32_t MessageType;
uint32_t AFListSize;
} RNDIS_Initialize_Complete_t;
- /** Type define for a RNDIS Keepalive command message */
+ /** Type define for a RNDIS Keepalive command message. */
typedef struct
{
uint32_t MessageType;
uint32_t RequestId;
} RNDIS_KeepAlive_Message_t;
- /** Type define for a RNDIS Keepalive complete message */
+ /** Type define for a RNDIS Keepalive complete message. */
typedef struct
{
uint32_t MessageType;
uint32_t Status;
} RNDIS_KeepAlive_Complete_t;
- /** Type define for a RNDIS Reset complete message */
+ /** Type define for a RNDIS Reset complete message. */
typedef struct
{
uint32_t MessageType;
uint32_t AddressingReset;
} RNDIS_Reset_Complete_t;
- /** Type define for a RNDIS Set command message */
+ /** Type define for a RNDIS Set command message. */
typedef struct
{
uint32_t MessageType;
uint32_t DeviceVcHandle;
} RNDIS_Set_Message_t;
- /** Type define for a RNDIS Set complete response message */
+ /** Type define for a RNDIS Set complete response message. */
typedef struct
{
uint32_t MessageType;
uint32_t Status;
} RNDIS_Set_Complete_t;
- /** Type define for a RNDIS Query command message */
+ /** Type define for a RNDIS Query command message. */
typedef struct
{
uint32_t MessageType;
uint32_t DeviceVcHandle;
} RNDIS_Query_Message_t;
- /** Type define for a RNDIS Query complete response message */
+ /** Type define for a RNDIS Query complete response message. */
typedef struct
{
uint32_t MessageType;
#include "ProtocolDecoders.h"
/* Macros: */
- /** Maximum number of TCP ports which can be open at the one time */
+ /** Maximum number of TCP ports which can be open at the one time. */
#define MAX_OPEN_TCP_PORTS 1
- /** Maximum number of TCP connections which can be sustained at the one time */
+ /** Maximum number of TCP connections which can be sustained at the one time. */
#define MAX_TCP_CONNECTIONS 3
- /** TCP window size, giving the maximum number of bytes which can be buffered at the one time */
+ /** TCP window size, giving the maximum number of bytes which can be buffered at the one time. */
#define TCP_WINDOW_SIZE 512
- /** Port number for HTTP transmissions */
+ /** Port number for HTTP transmissions. */
#define TCP_PORT_HTTP SwapEndian_16(80)
- /** Data direction indicator for a TCP application buffer, indicating data from host-to-device */
+ /** Data direction indicator for a TCP application buffer, indicating data from host-to-device. */
#define TCP_PACKETDIR_IN false
- /** Data direction indicator for a TCP application buffer, indicating data from device-to-host */
+ /** Data direction indicator for a TCP application buffer, indicating data from device-to-host. */
#define TCP_PACKETDIR_OUT true
- /** Congestion Window Reduced TCP flag mask */
+ /** Congestion Window Reduced TCP flag mask. */
#define TCP_FLAG_CWR (1 << 7)
- /** Explicit Congestion Notification TCP flag mask */
+ /** Explicit Congestion Notification TCP flag mask. */
#define TCP_FLAG_ECE (1 << 6)
- /** Urgent TCP flag mask */
+ /** Urgent TCP flag mask. */
#define TCP_FLAG_URG (1 << 5)
- /** Data Acknowledge TCP flag mask */
+ /** Data Acknowledge TCP flag mask. */
#define TCP_FLAG_ACK (1 << 4)
- /** Data Push TCP flag mask */
+ /** Data Push TCP flag mask. */
#define TCP_FLAG_PSH (1 << 3)
- /** Reset TCP flag mask */
+ /** Reset TCP flag mask. */
#define TCP_FLAG_RST (1 << 2)
- /** Synchronize TCP flag mask */
+ /** Synchronize TCP flag mask. */
#define TCP_FLAG_SYN (1 << 1)
- /** Connection Finalize TCP flag mask */
+ /** Connection Finalize TCP flag mask. */
#define TCP_FLAG_FIN (1 << 0)
/** Application macro: Determines if the given application buffer contains a packet received from the host
#define TCP_APP_CLOSECONNECTION(Connection) MACROS{ Connection->State = TCP_Connection_Closing; }MACROE
/* Enums: */
- /** Enum for possible TCP port states */
+ /** Enum for possible TCP port states. */
enum TCP_PortStates_t
{
TCP_Port_Closed = 0, /**< TCP port closed, no connections to a host may be made on this port. */
TCP_Port_Open = 1, /**< TCP port open, connections to a host may be made on this port. */
};
- /** Enum for possible TCP connection states */
+ /** Enum for possible TCP connection states. */
enum TCP_ConnectionStates_t
{
TCP_Connection_Listen = 0, /**< Listening for a connection from a host */
};
/* Type Defines: */
- /** Type define for a TCP connection buffer structure, including size, data and direction */
+ /** Type define for a TCP connection buffer structure, including size, data and direction. */
typedef struct
{
uint16_t Length; /**< Length of data in the TCP application buffer */
bool Ready; /**< If data from host, indicates buffer ready to be read, otherwise indicates
* buffer ready to be sent to the host
*/
- bool InUse; /** Indicates if the buffer is locked to to the current direction, and cannot be changed */
+ bool InUse; /**< Indicates if the buffer is locked to to the current direction, and cannot be changed */
} TCP_ConnectionBuffer_t;
- /** Type define for a TCP connection information structure */
+ /** Type define for a TCP connection information structure. */
typedef struct
{
uint32_t SequenceNumberIn; /**< Current TCP sequence number for host-to-device */
TCP_ConnectionBuffer_t Buffer; /**< Connection application data buffer */
} TCP_ConnectionInfo_t;
- /** Type define for a complete TCP connection state */
+ /** Type define for a complete TCP connection state. */
typedef struct
{
uint16_t Port; /**< Connection port number on the device */
uint8_t State; /**< Current connection state, a value from the TCP_ConnectionStates_t enum */
} TCP_ConnectionState_t;
- /** Type define for a TCP port state */
+ /** Type define for a TCP port state. */
typedef struct
{
uint16_t Port; /**< TCP port number on the device */
TCP_ConnectionBuffer_t* Buffer); /**< Port application handler */
} TCP_PortState_t;
- /** Type define for a TCP packet header */
+ /** Type define for a TCP packet header. */
typedef struct
{
uint16_t SourcePort; /**< Source port of the TCP packet */
uint16_t UrgentPointer; /**< Urgent data pointer */
} TCP_Header_t;
- /* External Variables: */
- TCP_PortState_t PortStateTable[MAX_OPEN_TCP_PORTS];
-
/* Function Prototypes: */
void TCP_Init(void);
void TCP_Task(void);
#include "DHCP.h"
/* Macros: */
- /** Source UDP port for a DHCP request */
+ /** Source UDP port for a DHCP request. */
#define UDP_PORT_DHCP_REQUEST 67
- /** Destination UDP port for a DHCP reply */
+ /** Destination UDP port for a DHCP reply. */
#define UDP_PORT_DHCP_REPLY 68
- /** Source UDP port for a DNS request/response */
+ /** Source UDP port for a DNS request/response. */
#define UDP_PORT_DNS 53
/* Type Defines: */
- /** Type define for a UDP packet header */
+ /** Type define for a UDP packet header. */
typedef struct
{
uint16_t SourcePort; /**< Packet source port */
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
- /** HID Report Descriptor Usage Page value for a toggle button */
+ /** HID Report Descriptor Usage Page value for a toggle button. */
#define USAGE_PAGE_BUTTON 0x09
- /** HID Report Descriptor Usage Page value for a Generic Desktop Control */
+ /** HID Report Descriptor Usage Page value for a Generic Desktop Control. */
#define USAGE_PAGE_GENERIC_DCTRL 0x01
- /** HID Report Descriptor Usage for a Joystick */
+ /** HID Report Descriptor Usage for a Joystick. */
#define USAGE_JOYSTICK 0x04
- /** HID Report Descriptor Usage value for a X axis movement */
+ /** HID Report Descriptor Usage value for a X axis movement. */
#define USAGE_X 0x30
- /** HID Report Descriptor Usage value for a Y axis movement */
+ /** HID Report Descriptor Usage value for a Y axis movement. */
#define USAGE_Y 0x31
/* Function Prototypes: */
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
- /** HID Report Descriptor Usage Page value for a desktop keyboard */
+ /** HID Report Descriptor Usage Page value for a desktop keyboard. */
#define USAGE_PAGE_KEYBOARD 0x07
/* Function Prototypes: */
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
- /** HID Report Descriptor Usage Page value for a toggle button */
+ /** HID Report Descriptor Usage Page value for a toggle button. */
#define USAGE_PAGE_BUTTON 0x09
- /** HID Report Descriptor Usage Page value for a Generic Desktop Control */
+ /** HID Report Descriptor Usage Page value for a Generic Desktop Control. */
#define USAGE_PAGE_GENERIC_DCTRL 0x01
- /** HID Report Descriptor Usage for a Mouse */
+ /** HID Report Descriptor Usage for a Mouse. */
#define USAGE_MOUSE 0x02
- /** HID Report Descriptor Usage value for a X axis movement */
+ /** HID Report Descriptor Usage value for a X axis movement. */
#define USAGE_X 0x30
- /** HID Report Descriptor Usage value for a Y axis movement */
+ /** HID Report Descriptor Usage value for a Y axis movement. */
#define USAGE_Y 0x31
- /** HID Report Descriptor Usage value for a Scroll Wheel movement */
+ /** HID Report Descriptor Usage value for a Scroll Wheel movement. */
#define USAGE_SCROLL_WHEEL 0x38
/* Function Prototypes: */
#include "BluetoothHost.h"
-/** Bluetooth configuration structure. This structure configures the bluetooth stack's user alterable settings. */
+/** Bluetooth configuration structure. This structure configures the Bluetooth stack's user alterable settings. */
Bluetooth_Device_t Bluetooth_DeviceConfiguration =
{
Class: (DEVICE_CLASS_SERVICE_CAPTURING | DEVICE_CLASS_MAJOR_COMPUTER | DEVICE_CLASS_MINOR_COMPUTER_PALM),
Bluetooth_State.LocalBDADDR[5], Bluetooth_State.LocalBDADDR[4], Bluetooth_State.LocalBDADDR[3],
Bluetooth_State.LocalBDADDR[2], Bluetooth_State.LocalBDADDR[1], Bluetooth_State.LocalBDADDR[0]);
- /* Reinitialize the services placed on top of the bluetooth stack ready for new connections */
+ /* Reinitialize the services placed on top of the Bluetooth stack ready for new connections */
SDP_Initialize();
RFCOMM_Initialize();
}
return ControlError;
}
- /* The bluetooth USB transport addendum mandates that the data (not streaming voice) endpoints
+ /* The Bluetooth USB transport addendum mandates that the data (not streaming voice) endpoints
be in the first interface descriptor (interface 0) */
USB_GetNextDescriptorOfType(&CurrConfigBytesRem, &CurrConfigLocation, DTYPE_Interface);
if (!(CurrConfigBytesRem))
return NoBTInterfaceFound;
- /* Get the data IN, data OUT and event notification endpoints for the bluetooth interface */
+ /* Get the data IN, data OUT and event notification endpoints for the Bluetooth interface */
while (FoundEndpoints != ((1 << BLUETOOTH_DATA_IN_PIPE) | (1 << BLUETOOTH_DATA_OUT_PIPE) |
(1 << BLUETOOTH_EVENTS_PIPE)))
{
- /* Fetch the next endpoint from the current bluetooth interface */
+ /* Fetch the next endpoint from the current Bluetooth interface */
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextInterfaceBluetoothDataEndpoint))
{
#include "BluetoothHost.h"
/* Macros: */
- /** Device Class value for the Bluetooth Device class */
+ /** Device Class value for the Bluetooth Device class. */
#define BLUETOOTH_DEVICE_CLASS 0xE0
- /** Device Subclass value for the Bluetooth Device class */
+ /** Device Subclass value for the Bluetooth Device class. */
#define BLUETOOTH_DEVICE_SUBCLASS 0x01
- /** Device Protocol value for the Bluetooth Device class */
+ /** Device Protocol value for the Bluetooth Device class. */
#define BLUETOOTH_DEVICE_PROTOCOL 0x01
/* Enums: */
return BT_SENDPACKET_NoError;
}
-/** Opens a bluetooth channel to the currently connected remote device, so that data can be exchanged.
+/** Opens a Bluetooth channel to the currently connected remote device, so that data can be exchanged.
*
* \note The channel is not immediately opened when this function returns - it must undergo a two way
* connection and configuration process first as the main Bluetooth stack processing task is
return ChannelData;
}
-/** Closes a bluetooth channel that is open to the currently connected remote device, so that no further data
+/** Closes a Bluetooth channel that is open to the currently connected remote device, so that no further data
* can be exchanged.
*
* \note The channel is not immediately closed when this function returns - it must undergo an asynchronous
#define BT_ACL_DEBUG(l, s, ...) do { if (ACL_DEBUG_LEVEL >= l) printf_P(PSTR("(ACL) " s "\r\n"), ##__VA_ARGS__); } while (0)
#define ACL_DEBUG_LEVEL 0
- /** Lowest possible channel number for L2CAP data channels */
+ /** Lowest possible channel number for L2CAP data channels. */
#define BT_CHANNELNUMBER_BASEOFFSET 0x0040
- /** Bluetooth specification defined channel number for signalling commands */
+ /** Bluetooth specification defined channel number for signalling commands. */
#define BT_CHANNEL_SIGNALING 0x0001
- /** Bluetooth specification defined channel number for connectionless data */
+ /** Bluetooth specification defined channel number for connectionless data. */
#define BT_CHANNEL_CONNECTIONLESS 0x0002
#define BT_ACL_FIRST_AUTOFLUSH (1 << 13)
uint16_t DataLength; /**< Length of the packet payload, in bytes */
} BT_ACL_Header_t;
- /** Bluetooth ACL data packet header structure, for ACL packets containing L2CAP data */
+ /** Bluetooth ACL data packet header structure, for ACL packets containing L2CAP data. */
typedef struct
{
uint16_t PayloadLength; /**< Size of the data payload, in bytes */
uint16_t DestinationChannel; /**< Destination channel in the device the data is directed to */
} BT_DataPacket_Header_t;
- /** Bluetooth signalling command header structure, for all ACL packets containing a signalling command */
+ /** Bluetooth signalling command header structure, for all ACL packets containing a signalling command. */
typedef struct
{
uint8_t Code; /**< Signal code, a BT_SIGNAL_* mask value */
ParameterLength: 0,
};
- /* Send the command to reset the bluetooth dongle controller */
+ /* Send the command to reset the Bluetooth dongle controller */
Bluetooth_SendHCICommand(&HCICommandHeader, NULL, 0);
Bluetooth_State.NextHCIState = Bluetooth_Init_ReadBufferSize;
ParameterLength: 0,
};
- /* Send the command to read the bluetooth buffer size (mandatory before device sends any data) */
+ /* Send the command to read the Bluetooth buffer size (mandatory before device sends any data) */
Bluetooth_SendHCICommand(&HCICommandHeader, NULL, 0);
Bluetooth_State.NextHCIState = Bluetooth_Init_GetBDADDR;
ParameterLength: 0,
};
- /* Send the command to retrieve the BDADDR of the inserted bluetooth dongle */
+ /* Send the command to retrieve the BDADDR of the inserted Bluetooth dongle */
Bluetooth_SendHCICommand(&HCICommandHeader, NULL, 0);
Bluetooth_State.NextHCIState = Bluetooth_Init_SetLocalName;
ParameterLength: 248,
};
- /* Send the command to set the bluetooth dongle's name for other devices to see */
+ /* Send the command to set the Bluetooth dongle's name for other devices to see */
Bluetooth_SendHCICommand(&HCICommandHeader, Bluetooth_DeviceConfiguration.Name, strlen(Bluetooth_DeviceConfiguration.Name));
Bluetooth_State.NextHCIState = Bluetooth_Init_SetDeviceClass;
#define MAXIMUM_CHANNEL_MTU 255
/* Enums: */
- /** Enum for the possible states for a bluetooth ACL channel. */
+ /** Enum for the possible states for a Bluetooth ACL channel. */
enum BT_ChannelStates_t
{
Channel_Closed = 0, /**< Channel is closed and inactive. No data may be sent or received. */
enum BT_SendPacket_ErrorCodes_t
{
BT_SENDPACKET_NoError = 0, /**< The packet was sent sucessfully. */
- BT_SENDPACKET_NotConnected = 1, /**< The bluetooth stack is not currently connected to a remote device. */
+ BT_SENDPACKET_NotConnected = 1, /**< The Bluetooth stack is not currently connected to a remote device. */
BT_SENDPACKET_ChannelNotOpen = 2, /**< The given channel is not currently in the Open state. */
};
{
uint32_t Class; /**< Class of the local device, a mask of DEVICE_CLASS_* masks. */
char PINCode[16]; /**< Pin code required to send or receive in order to authenticate with a remote device. */
- char Name[]; /**< Name of the local bluetooth device, up to 248 characters. */
+ char Name[]; /**< Name of the local Bluetooth device, up to 248 characters. */
} Bluetooth_Device_t;
/** Bluetooth stack state information structure, for the containment of the Bluetooth stack state. The values in
bool IsInitialized; /**< Indicates if the Bluetooth stack is currently initialized and ready for connections
* to or from a remote Bluetooth device.
*/
- uint8_t LocalBDADDR[6]; /**< Local bluetooth adapter's BDADDR, valid when the stack is fully initialized. */
+ uint8_t LocalBDADDR[6]; /**< Local Bluetooth adapter's BDADDR, valid when the stack is fully initialized. */
} Bluetooth_Stack_State_t;
/* Includes: */
switch (FrameHeader->FrameType & ~FRAME_POLL_FINAL)\r
{\r
case RFCOMM_Frame_SABM:\r
- BT_RFCOMM_DEBUG(1, "<< SABM Received");\r
+ RFCOMM_ProcessSABM(FrameHeader, Channel);\r
break;\r
case RFCOMM_Frame_UA:\r
- BT_RFCOMM_DEBUG(1, "<< UA Received");\r
+ RFCOMM_ProcessUA(FrameHeader, Channel);\r
break;\r
case RFCOMM_Frame_DM:\r
- BT_RFCOMM_DEBUG(1, "<< DM Received");\r
+ RFCOMM_ProcessDM(FrameHeader, Channel);\r
break;\r
case RFCOMM_Frame_DISC:\r
- BT_RFCOMM_DEBUG(1, "<< DISC Received");\r
+ RFCOMM_ProcessDISC(FrameHeader, Channel);\r
break;\r
case RFCOMM_Frame_UIH:\r
- BT_RFCOMM_DEBUG(1, "<< UIH Received");\r
+ RFCOMM_ProcessUIH(FrameHeader, Channel);\r
break;\r
}\r
}\r
\r
+static void RFCOMM_ProcessSABM(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel)\r
+{\r
+ uint8_t* CurrBufferPos = ((uint8_t*)FrameHeader + sizeof(RFCOMM_Header_t));\r
+ uint16_t DataLen = RFCOMM_GetFrameDataLength(&CurrBufferPos);\r
+\r
+ BT_RFCOMM_DEBUG(1, "<< SABM Received");\r
+ BT_RFCOMM_DEBUG(2, "-- Data Length 0x%04X", DataLen);\r
+\r
+ for (uint16_t i = 0; i < DataLen; i++)\r
+ printf("0x%02X ", CurrBufferPos[i]);\r
+ printf("\r\n");\r
+}\r
+\r
+static void RFCOMM_ProcessUA(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel)\r
+{\r
+ BT_RFCOMM_DEBUG(1, "<< UA Received");\r
+}\r
+\r
+static void RFCOMM_ProcessDM(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel)\r
+{\r
+ BT_RFCOMM_DEBUG(1, "<< DM Received");\r
+}\r
+\r
+static void RFCOMM_ProcessDISC(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel)\r
+{\r
+ BT_RFCOMM_DEBUG(1, "<< DISC Received");\r
+}\r
+\r
+static void RFCOMM_ProcessUIH(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel)\r
+{\r
+ BT_RFCOMM_DEBUG(1, "<< UIH Received");\r
+}\r
+\r
static uint16_t RFCOMM_GetFrameDataLength(void** BufferPos)\r
{\r
uint8_t FirstOctet = *((uint8_t*)*BufferPos);\r
#define FRAME_POLL_FINAL (1 << 5)\r
\r
/* Enums: */\r
+ /** Enum for the types of RFCOMM frames which can be exchanged on a Bluetooth channel. */\r
enum RFCOMM_Frame_Types_t\r
{\r
RFCOMM_Frame_SABM = 0x2F, /**< Set Asynchronous Balance Mode Field */\r
struct\r
{\r
unsigned char LogicalChannel : 6;\r
- unsigned char CommandResponse : 1;\r
+ unsigned char PollResponse : 1;\r
unsigned char LastAddressOctet : 1;\r
} Header;\r
\r
void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel);\r
\r
#if defined(INCLUDE_FROM_RFCOMM_C)\r
+ static void RFCOMM_ProcessSABM(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel);\r
+ static void RFCOMM_ProcessUA(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel);\r
+ static void RFCOMM_ProcessDM(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel);\r
+ static void RFCOMM_ProcessDISC(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel);\r
+ static void RFCOMM_ProcessUIH(const RFCOMM_Header_t* const FrameHeader, Bluetooth_Channel_t* const Channel);\r
+\r
static uint16_t RFCOMM_GetFrameDataLength(void** BufferPos);\r
#endif\r
\r
(sizeof(ItemUUID_t) + sizeof(Item8Bit_t)),\r
{\r
{(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID},\r
- {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_8Bit), 0x03},\r
+ {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_8Bit), 0x00},\r
},\r
},\r
};\r
#include "GenericHIDHost.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define HID_CLASS 0x03
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** Pipe number for the HID data IN pipe */
+ /** Pipe number for the HID data IN pipe. */
#define HID_DATA_IN_PIPE 1
- /** Pipe number for the HID data OUT pipe */
+ /** Pipe number for the HID data OUT pipe. */
#define HID_DATA_OUT_PIPE 2
/** HID Class specific request to send a HID report to the device. */
#include "HIDReport.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define JOYSTICK_CLASS 0x03
- /** Interface Protocol value for a Boot Protocol Mouse compliant device */
+ /** Interface Protocol value for a Boot Protocol Mouse compliant device. */
#define JOYSTICK_PROTOCOL 0x02
- /** Descriptor header type constant for a HID descriptor */
+ /** Descriptor header type constant for a HID descriptor. */
#define DTYPE_HID 0x21
- /** Descriptor header type constant for a HID report descriptor */
+ /** Descriptor header type constant for a HID report descriptor. */
#define DTYPE_Report 0x22
/* Enums: */
#include "JoystickHostWithParser.h"
/* Macros: */
- /** HID Report Descriptor Usage for a Joystick */
+ /** HID Report Descriptor Usage for a Joystick. */
#define USAGE_JOYSTICK 0x04
- /** HID Report Descriptor Usage Page value for a toggle button */
+ /** HID Report Descriptor Usage Page value for a toggle button. */
#define USAGE_PAGE_BUTTON 0x09
- /** HID Report Descriptor Usage Page value for a Generic Desktop Control */
+ /** HID Report Descriptor Usage Page value for a Generic Desktop Control. */
#define USAGE_PAGE_GENERIC_DCTRL 0x01
- /** HID Report Descriptor Usage value for a X axis movement */
+ /** HID Report Descriptor Usage value for a X axis movement. */
#define USAGE_X 0x30
- /** HID Report Descriptor Usage value for a Y axis movement */
+ /** HID Report Descriptor Usage value for a Y axis movement. */
#define USAGE_Y 0x31
/* Enums: */
#include "HIDReport.h"
/* Macros: */
- /** Pipe number for the joystick report data pipe */
+ /** Pipe number for the joystick report data pipe. */
#define JOYSTICK_DATAPIPE 1
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#include "KeyboardHost.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define KEYBOARD_CLASS 0x03
- /** Interface Protocol value for a Boot Protocol Keyboard compliant device */
+ /** Interface Protocol value for a Boot Protocol Keyboard compliant device. */
#define KEYBOARD_PROTOCOL 0x01
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** Pipe number for the keyboard data IN pipe */
+ /** Pipe number for the keyboard data IN pipe. */
#define KEYBOARD_DATAPIPE 1
- /** HID Class Specific request to set the report protocol mode */
+ /** HID Class Specific request to set the report protocol mode. */
#define REQ_SetProtocol 0x0B
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
/* Type Defines: */
- /** Type define for a standard Boot Protocol Keyboard report */
+ /** Type define for a standard Boot Protocol Keyboard report. */
typedef struct
{
uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (such as Shift, Control, etc.) */
#include "HIDReport.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define KEYBOARD_CLASS 0x03
- /** Interface Protocol value for a Boot Protocol Keyboard compliant device */
+ /** Interface Protocol value for a Boot Protocol Keyboard compliant device. */
#define KEYBOARD_PROTOCOL 0x01
- /** Descriptor header type constant for a HID descriptor */
+ /** Descriptor header type constant for a HID descriptor. */
#define DTYPE_HID 0x21
- /** Descriptor header type constant for a HID report descriptor */
+ /** Descriptor header type constant for a HID report descriptor. */
#define DTYPE_Report 0x22
/* Enums: */
#include "KeyboardHostWithParser.h"
/* Macros: */
- /** HID Report Descriptor Usage Page value for a desktop keyboard */
+ /** HID Report Descriptor Usage Page value for a desktop keyboard. */
#define USAGE_PAGE_KEYBOARD 0x07
/* Enums: */
#include "HIDReport.h"
/* Macros: */
- /** Pipe number for the keyboard report data pipe */
+ /** Pipe number for the keyboard report data pipe. */
#define KEYBOARD_DATAPIPE 1
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#include "MIDIHost.h"
/* Macros: */
- /** Interface Class value for the MIDI Audio class */
+ /** Interface Class value for the MIDI Audio class. */
#define MIDI_STREAMING_CLASS 0x01
- /** Interface Class value for the MIDI Audio Streaming subclass */
+ /** Interface Class value for the MIDI Audio Streaming subclass. */
#define MIDI_STREAMING_SUBCLASS 0x03
- /** Interface Class value for the MIDI Audio Streaming protocol */
+ /** Interface Class value for the MIDI Audio Streaming protocol. */
#define MIDI_STREAMING_PROTOCOL 0x00
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** MIDI command for a note on (activation) event */
+ /** MIDI command for a note on (activation) event. */
#define MIDI_COMMAND_NOTE_ON 0x90
- /** MIDI command for a note off (deactivation) event */
+ /** MIDI command for a note off (deactivation) event. */
#define MIDI_COMMAND_NOTE_OFF 0x80
- /** Standard key press velocity value used for all note events, as no pressure sensor is mounted */
+ /** Standard key press velocity value used for all note events, as no pressure sensor is mounted. */
#define MIDI_STANDARD_VELOCITY 64
/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
*/
#define MIDI_CHANNEL(channel) (channel - 1)
- /** Pipe number for the MIDI data IN pipe */
+ /** Pipe number for the MIDI data IN pipe. */
#define MIDI_DATAPIPE_IN 1
- /** Pipe number for the MIDI data OUT pipe */
+ /** Pipe number for the MIDI data OUT pipe. */
#define MIDI_DATAPIPE_OUT 2
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#include "MassStorageHost.h"
/* Macros: */
- /** Interface Class value for the Mass Storage Device class */
+ /** Interface Class value for the Mass Storage Device class. */
#define MASS_STORE_CLASS 0x08
- /** Interface Class value for the Mass Storage Device subclass */
+ /** Interface Class value for the Mass Storage Device subclass. */
#define MASS_STORE_SUBCLASS 0x06
- /** Interface Protocol value for the Bulk Only transport protocol */
+ /** Interface Protocol value for the Bulk Only transport protocol. */
#define MASS_STORE_PROTOCOL 0x50
/* Enums: */
#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
- /** Class specific request to reset the Mass Storage interface of the attached device */
+ /** Class specific request to reset the Mass Storage interface of the attached device. */
#define REQ_MassStorageReset 0xFF
- /** Class specific request to retrieve the maximum Logical Unit Number (LUN) index of the attached device */
+ /** Class specific request to retrieve the maximum Logical Unit Number (LUN) index of the attached device. */
#define REQ_GetMaxLUN 0xFE
- /** Command Block Wrapper signature byte, for verification of valid CBW blocks */
+ /** Command Block Wrapper signature byte, for verification of valid CBW blocks. */
#define CBW_SIGNATURE 0x43425355UL
- /** Command Static Wrapper signature byte, for verification of valid CSW blocks */
+ /** Command Static Wrapper signature byte, for verification of valid CSW blocks. */
#define CSW_SIGNATURE 0x53425355UL
- /** Data direction mask for the Flags field of a CBW, indicating Host-to-Device transfer direction */
+ /** Data direction mask for the Flags field of a CBW, indicating Host-to-Device transfer direction. */
#define COMMAND_DIRECTION_DATA_OUT (0 << 7)
- /** Data direction mask for the Flags field of a CBW, indicating Device-to-Host transfer direction */
+ /** Data direction mask for the Flags field of a CBW, indicating Device-to-Host transfer direction. */
#define COMMAND_DIRECTION_DATA_IN (1 << 7)
- /** Timeout period between the issuing of a CBW to a device, and the reception of the first packet */
+ /** Timeout period between the issuing of a CBW to a device, and the reception of the first packet. */
#define COMMAND_DATA_TIMEOUT_MS 10000
- /** Pipe number of the Mass Storage data IN pipe */
+ /** Pipe number of the Mass Storage data IN pipe. */
#define MASS_STORE_DATA_IN_PIPE 1
- /** Pipe number of the Mass Storage data OUT pipe */
+ /** Pipe number of the Mass Storage data OUT pipe. */
#define MASS_STORE_DATA_OUT_PIPE 2
- /** Additional error code for Mass Storage functions when a device returns a logical command failure */
+ /** Additional error code for Mass Storage functions when a device returns a logical command failure. */
#define MASS_STORE_SCSI_COMMAND_FAILED 0xC0
/* Type defines: */
} SCSI_Capacity_t;
/* Enums: */
- /** CSW status return codes, indicating the overall status of the issued CBW */
+ /** CSW status return codes, indicating the overall status of the issued CBW. */
enum MassStorageHost_CommandStatusCodes_t
{
Command_Pass = 0, /**< Command completed successfully */
#include "MouseHost.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define MOUSE_CLASS 0x03
- /** Interface Protocol value for a Boot Protocol Mouse compliant device */
+ /** Interface Protocol value for a Boot Protocol Mouse compliant device. */
#define MOUSE_PROTOCOL 0x02
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** Pipe number for the mouse data IN pipe */
+ /** Pipe number for the mouse data IN pipe. */
#define MOUSE_DATAPIPE 1
- /** HID Class Specific request to set the report protocol mode */
+ /** HID Class Specific request to set the report protocol mode. */
#define REQ_SetProtocol 0x0B
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
/* Type Defines: */
- /** Type define for a standard Boot Protocol Mouse report */
+ /** Type define for a standard Boot Protocol Mouse report. */
typedef struct
{
uint8_t Button; /**< Button mask for currently pressed buttons in the mouse */
#include "HIDReport.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define MOUSE_CLASS 0x03
- /** Interface Protocol value for a Boot Protocol Mouse compliant device */
+ /** Interface Protocol value for a Boot Protocol Mouse compliant device. */
#define MOUSE_PROTOCOL 0x02
- /** Descriptor header type constant for a HID descriptor */
+ /** Descriptor header type constant for a HID descriptor. */
#define DTYPE_HID 0x21
- /** Descriptor header type constant for a HID report descriptor */
+ /** Descriptor header type constant for a HID report descriptor. */
#define DTYPE_Report 0x22
/* Enums: */
#include "MouseHostWithParser.h"
/* Macros: */
- /** HID Report Descriptor Usage for a Mouse */
+ /** HID Report Descriptor Usage for a Mouse. */
#define USAGE_MOUSE 0x02
- /** HID Report Descriptor Usage Page value for a toggle button */
+ /** HID Report Descriptor Usage Page value for a toggle button. */
#define USAGE_PAGE_BUTTON 0x09
- /** HID Report Descriptor Usage Page value for a Generic Desktop Control */
+ /** HID Report Descriptor Usage Page value for a Generic Desktop Control. */
#define USAGE_PAGE_GENERIC_DCTRL 0x01
- /** HID Report Descriptor Usage value for a X axis movement */
+ /** HID Report Descriptor Usage value for a X axis movement. */
#define USAGE_X 0x30
- /** HID Report Descriptor Usage value for a Y axis movement */
+ /** HID Report Descriptor Usage value for a Y axis movement. */
#define USAGE_Y 0x31
- /** HID Report Descriptor Usage value for a Scroll Wheel movement */
+ /** HID Report Descriptor Usage value for a Scroll Wheel movement. */
#define USAGE_SCROLL_WHEEL 0x38
/* Enums: */
#include "HIDReport.h"
/* Macros: */
- /** Pipe number for the mouse report data pipe */
+ /** Pipe number for the mouse report data pipe. */
#define MOUSE_DATAPIPE 1
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#include "Lib/PrinterCommands.h"
/* Macros: */
- /** Interface Class value for the Printer Device class */
+ /** Interface Class value for the Printer Device class. */
#define PRINTER_CLASS 0x07
- /** Interface Subclass value for the Printer Device class */
+ /** Interface Subclass value for the Printer Device class. */
#define PRINTER_SUBCLASS 0x01
- /** Interface Protocol value for a Bidirectional communication encapsulation */
+ /** Interface Protocol value for a Bidirectional communication encapsulation. */
#define PRINTER_PROTOCOL 0x02
/* Enums: */
#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
- /** Printer class-specific request to retrieve the printer's ID string */
+ /** Printer class-specific request to retrieve the printer's ID string. */
#define REQ_GetDeviceID 0
- /** Printer class-specific request to retrieve the printer's virtual port status flags */
+ /** Printer class-specific request to retrieve the printer's virtual port status flags. */
#define REQ_GetPortStatus 1
- /** Printer class-specific request to soft-reset the device */
+ /** Printer class-specific request to soft-reset the device. */
#define REQ_SoftReset 2
- /** Pipe number of the Printer data IN pipe */
+ /** Pipe number of the Printer data IN pipe. */
#define PRINTER_DATA_IN_PIPE 1
- /** Pipe number of the Printer data OUT pipe */
+ /** Pipe number of the Printer data OUT pipe. */
#define PRINTER_DATA_OUT_PIPE 2
/* Function Prototypes: */
#include "RNDISEthernetHost.h"
/* Macros: */
- /** Interface Class value for the CDC class */
+ /** Interface Class value for the CDC class. */
#define CDC_CONTROL_CLASS 0x02
- /** Interface Class value for the CDC Communication Interface subclass */
+ /** Interface Class value for the CDC Communication Interface subclass. */
#define CDC_CONTROL_SUBCLASS 0x02
- /** Interface Class value for the CDC RNDIS vendor specific protocol */
+ /** Interface Class value for the CDC RNDIS vendor specific protocol. */
#define CDC_CONTROL_PROTOCOL 0xFF
- /** Interface Class value for the CDC data class */
+ /** Interface Class value for the CDC data class. */
#define CDC_DATA_CLASS 0x0A
- /** Interface Class value for the CDC data subclass */
+ /** Interface Class value for the CDC data subclass. */
#define CDC_DATA_SUBCLASS 0x00
- /** Interface Class value for the CDC data protocol */
+ /** Interface Class value for the CDC data protocol. */
#define CDC_DATA_PROTOCOL 0x00
/* Enums: */
#include "RNDISConstants.h"
/* Type Defines: */
- /** Type define for a RNDIS message header, sent before RNDIS messages */
+ /** Type define for a RNDIS message header, sent before RNDIS messages. */
typedef struct
{
uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */
uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */
} RNDIS_Message_Header_t;
- /** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter */
+ /** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter. */
typedef struct
{
uint32_t MessageType;
uint32_t Reserved;
} RNDIS_Packet_Message_t;
- /** Type define for a RNDIS Initialize command message */
+ /** Type define for a RNDIS Initialize command message. */
typedef struct
{
uint32_t MessageType;
uint32_t MaxTransferSize;
} RNDIS_Initialize_Message_t;
- /** Type define for a RNDIS Initialize complete response message */
+ /** Type define for a RNDIS Initialize complete response message. */
typedef struct
{
uint32_t MessageType;
uint32_t AFListSize;
} RNDIS_Initialize_Complete_t;
- /** Type define for a RNDIS Keepalive command message */
+ /** Type define for a RNDIS Keepalive command message. */
typedef struct
{
uint32_t MessageType;
uint32_t RequestId;
} RNDIS_KeepAlive_Message_t;
- /** Type define for a RNDIS Keepalive complete message */
+ /** Type define for a RNDIS Keepalive complete message. */
typedef struct
{
uint32_t MessageType;
uint32_t Status;
} RNDIS_KeepAlive_Complete_t;
- /** Type define for a RNDIS Reset complete message */
+ /** Type define for a RNDIS Reset complete message. */
typedef struct
{
uint32_t MessageType;
uint32_t AddressingReset;
} RNDIS_Reset_Complete_t;
- /** Type define for a RNDIS Set command message */
+ /** Type define for a RNDIS Set command message. */
typedef struct
{
uint32_t MessageType;
uint32_t DeviceVcHandle;
} RNDIS_Set_Message_t;
- /** Type define for a RNDIS Set complete response message */
+ /** Type define for a RNDIS Set complete response message. */
typedef struct
{
uint32_t MessageType;
uint32_t Status;
} RNDIS_Set_Complete_t;
- /** Type define for a RNDIS Query command message */
+ /** Type define for a RNDIS Query command message. */
typedef struct
{
uint32_t MessageType;
uint32_t DeviceVcHandle;
} RNDIS_Query_Message_t;
- /** Type define for a RNDIS Query complete response message */
+ /** Type define for a RNDIS Query complete response message. */
typedef struct
{
uint32_t MessageType;
} RNDIS_Query_Complete_t;
/* Macros: */
- /** RNDIS request to issue a host-to-device NDIS command */
+ /** RNDIS request to issue a host-to-device NDIS command. */
#define REQ_SendEncapsulatedCommand 0x00
- /** RNDIS request to issue a device-to-host NDIS response */
+ /** RNDIS request to issue a device-to-host NDIS response. */
#define REQ_GetEncapsulatedResponse 0x01
- /** Implemented RNDIS Version Major */
+ /** Implemented RNDIS Version Major. */
#define REMOTE_NDIS_VERSION_MAJOR 0x01
- /** Implemented RNDIS Version Minor */
+ /** Implemented RNDIS Version Minor. */
#define REMOTE_NDIS_VERSION_MINOR 0x00
- /** Pipe number for the RNDIS data IN pipe */
+ /** Pipe number for the RNDIS data IN pipe. */
#define RNDIS_DATAPIPE_IN 1
- /** Pipe number for the RNDIS data OUT pipe */
+ /** Pipe number for the RNDIS data OUT pipe. */
#define RNDIS_DATAPIPE_OUT 2
- /** Pipe number for the RNDIS notification pipe */
+ /** Pipe number for the RNDIS notification pipe. */
#define RNDIS_NOTIFICATIONPIPE 3
- /** Additional error code for RNDIS functions when a device returns a logical command failure */
+ /** Additional error code for RNDIS functions when a device returns a logical command failure. */
#define RNDIS_COMMAND_FAILED 0xC0
/* Function Prototypes: */
#include "StillImageHost.h"
/* Macros: */
- /** Interface Class value for the Still Image Device class */
+ /** Interface Class value for the Still Image Device class. */
#define SIMAGE_CLASS 0x06
- /** Interface Class value for the Still Image Device subclass */
+ /** Interface Class value for the Still Image Device subclass. */
#define SIMAGE_SUBCLASS 0x01
- /** Interface Class value for the Still Image Device protocol */
+ /** Interface Class value for the Still Image Device protocol. */
#define SIMAGE_PROTOCOL 0x01
/* Enums: */
#include "PIMACodes.h"
/* Macros: */
- /** Pipe number of the Still Image data IN pipe */
+ /** Pipe number of the Still Image data IN pipe. */
#define SIMAGE_DATA_IN_PIPE 0x01
- /** Pipe number of the Still Image data OUT pipe */
+ /** Pipe number of the Still Image data OUT pipe. */
#define SIMAGE_DATA_OUT_PIPE 0x02
- /** Pipe number of the Still Image events pipe */
+ /** Pipe number of the Still Image events pipe. */
#define SIMAGE_EVENTS_PIPE 0x03
- /** Length in bytes of a given Unicode string's character length
+ /** Length in bytes of a given Unicode string's character length.
*
* \param[in] chars Total number of Unicode characters in the string
*/
#define UNICODE_STRING_LENGTH(chars) ((chars) << 1)
- /** Timeout period between the issuing of a command to a device, and the reception of the first packet */
+ /** Timeout period between the issuing of a command to a device, and the reception of the first packet. */
#define COMMAND_DATA_TIMEOUT_MS 10000
/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
#include "VirtualSerialHost.h"
/* Macros: */
- /** Interface Class value for the CDC class */
+ /** Interface Class value for the CDC class. */
#define CDC_CONTROL_CLASS 0x02
- /** Interface Class value for the CDC Communication Interface subclass */
+ /** Interface Class value for the CDC Communication Interface subclass. */
#define CDC_CONTROL_SUBCLASS 0x02
- /** Interface Class value for the CDC protocol */
+ /** Interface Class value for the CDC protocol. */
#define CDC_CONTROL_PROTOCOL 0x01
- /** Interface Class value for the CDC data class */
+ /** Interface Class value for the CDC data class. */
#define CDC_DATA_CLASS 0x0A
- /** Interface Class value for the CDC data subclass */
+ /** Interface Class value for the CDC data subclass. */
#define CDC_DATA_SUBCLASS 0x00
- /** Interface Class value for the CDC data protocol */
+ /** Interface Class value for the CDC data protocol. */
#define CDC_DATA_PROTOCOL 0x00
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** Pipe number for the CDC data IN pipe */
+ /** Pipe number for the CDC data IN pipe. */
#define CDC_DATAPIPE_IN 1
- /** Pipe number for the CDC data OUT pipe */
+ /** Pipe number for the CDC data OUT pipe. */
#define CDC_DATAPIPE_OUT 2
- /** Pipe number for the CDC notification pipe */
+ /** Pipe number for the CDC notification pipe. */
#define CDC_NOTIFICATIONPIPE 3
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS LEDS_LED1
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
- #define LEDS_NO_LEDS 0
+ /** LED mask for the none of the board LEDs. */
+ #define LEDS_NO_LEDS 0
/* Inline Functions: */
#if !defined(__DOXYGEN__)
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (1 << 6)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS LEDS_LED1
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
/** Audio class descriptor jack type value for an external (physical) MIDI input or output jack. */
#define MIDI_JACKTYPE_EXTERNAL 0x02
- /** MIDI command for a note on (activation) event */
+ /** MIDI command for a note on (activation) event. */
#define MIDI_COMMAND_NOTE_ON 0x90
- /** MIDI command for a note off (deactivation) event */
+ /** MIDI command for a note off (deactivation) event. */
#define MIDI_COMMAND_NOTE_OFF 0x80
- /** Standard key press velocity value used for all note events */
+ /** Standard key press velocity value used for all note events. */
#define MIDI_STANDARD_VELOCITY 64
/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
{
uint32_t Signature; /**< Command block signature, must be CBW_SIGNATURE to indicate a valid Command Block */
uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper */
- uint32_t DataTransferLength; /** Length of the optional data portion of the issued command, in bytes */
+ uint32_t DataTransferLength; /**< Length of the optional data portion of the issued command, in bytes */
uint8_t Flags; /**< Command block flags, indicating command data direction */
uint8_t LUN; /**< Logical Unit number this command is issued to */
uint8_t SCSICommandLength; /**< Length of the issued SCSI command within the SCSI command data array */
#endif
/* Macros: */
- /** Implemented RNDIS Version Major */
+ /** Implemented RNDIS Version Major. */
#define REMOTE_NDIS_VERSION_MAJOR 0x01
- /** Implemented RNDIS Version Minor */
+ /** Implemented RNDIS Version Minor. */
#define REMOTE_NDIS_VERSION_MINOR 0x00
- /** RNDIS request to issue a host-to-device NDIS command */
+ /** RNDIS request to issue a host-to-device NDIS command. */
#define REQ_SendEncapsulatedCommand 0x00
- /** RNDIS request to issue a device-to-host NDIS response */
+ /** RNDIS request to issue a device-to-host NDIS response. */
#define REQ_GetEncapsulatedResponse 0x01
- /** Maximum size in bytes of a RNDIS control message which can be sent or received */
+ /** Maximum size in bytes of a RNDIS control message which can be sent or received. */
#define RNDIS_MESSAGE_BUFFER_SIZE 128
- /** Maximum size in bytes of an Ethernet frame according to the Ethernet standard */
+ /** Maximum size in bytes of an Ethernet frame according to the Ethernet standard. */
#define ETHERNET_FRAME_SIZE_MAX 1500
- /** Notification request value for a RNDIS Response Available notification */
+ /** Notification request value for a RNDIS Response Available notification. */
#define NOTIF_ResponseAvailable 1
/* Enums: */
RNDIS_Data_Initialized = 2, /**< Adapter currently initialized and ready for data transfers */
};
- /** Enum for the NDIS hardware states */
+ /** Enum for the NDIS hardware states. */
enum NDIS_Hardware_Status_t
{
NDIS_HardwareStatus_Ready, /**< Hardware Ready to accept commands from the host */
uint8_t DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */
uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */
- bool DataINEndpointDoubleBank; /** Indicates if the CDC interface's IN data endpoint should use double banking */
+ bool DataINEndpointDoubleBank; /**< Indicates if the CDC interface's IN data endpoint should use double banking */
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */
uint16_t DataOUTEndpointSize; /**< Size in bytes of the CDC interface's OUT data endpoint */
- bool DataOUTEndpointDoubleBank; /** Indicates if the CDC interface's OUT data endpoint should use double banking */
+ bool DataOUTEndpointDoubleBank; /**< Indicates if the CDC interface's OUT data endpoint should use double banking */
uint8_t NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */
uint16_t NotificationEndpointSize; /**< Size in bytes of the CDC interface's IN notification endpoint, if used */
- bool NotificationEndpointDoubleBank; /** Indicates if the CDC interface's notification endpoint should use double banking */
+ bool NotificationEndpointDoubleBank; /**< Indicates if the CDC interface's notification endpoint should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
uint8_t ReportINEndpointNumber; /**< Endpoint number of the HID interface's IN report endpoint */
uint16_t ReportINEndpointSize; /**< Size in bytes of the HID interface's IN report endpoint */
- bool ReportINEndpointDoubleBank; /** Indicates if the HID interface's IN report endpoint should use double banking */
+ bool ReportINEndpointDoubleBank; /**< Indicates if the HID interface's IN report endpoint should use double banking */
void* PrevReportINBuffer; /**< Pointer to a buffer where the previously created HID input report can be
* stored by the driver, for comparison purposes to detect report changes that
uint8_t DataINEndpointNumber; /**< Endpoint number of the incoming MIDI data, if available (zero if unused) */
uint16_t DataINEndpointSize; /**< Size in bytes of the incoming MIDI data endpoint, if available (zero if unused) */
- bool DataINEndpointDoubleBank; /** Indicates if the MIDI interface's IN data endpoint should use double banking */
+ bool DataINEndpointDoubleBank; /**< Indicates if the MIDI interface's IN data endpoint should use double banking */
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the outgoing MIDI data, if available (zero if unused) */
uint16_t DataOUTEndpointSize; /**< Size in bytes of the outgoing MIDI data endpoint, if available (zero if unused) */
- bool DataOUTEndpointDoubleBank; /** Indicates if the MIDI interface's IN data endpoint should use double banking */
+ bool DataOUTEndpointDoubleBank; /**< Indicates if the MIDI interface's IN data endpoint should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
uint8_t DataINEndpointNumber; /**< Endpoint number of the Mass Storage interface's IN data endpoint */
uint16_t DataINEndpointSize; /**< Size in bytes of the Mass Storage interface's IN data endpoint */
- bool DataINEndpointDoubleBank; /** Indicates if the Mass Storage interface's IN data endpoint should use double banking */
+ bool DataINEndpointDoubleBank; /**< Indicates if the Mass Storage interface's IN data endpoint should use double banking */
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the Mass Storage interface's OUT data endpoint */
uint16_t DataOUTEndpointSize; /**< Size in bytes of the Mass Storage interface's OUT data endpoint */
- bool DataOUTEndpointDoubleBank; /** Indicates if the Mass Storage interface's OUT data endpoint should use double banking */
+ bool DataOUTEndpointDoubleBank; /**< Indicates if the Mass Storage interface's OUT data endpoint should use double banking */
uint8_t TotalLUNs; /**< Total number of logical drives in the Mass Storage interface */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
uint8_t DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */
uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */
- bool DataINEndpointDoubleBank; /** Indicates if the RNDIS interface's IN data endpoint should use double banking */
+ bool DataINEndpointDoubleBank; /**< Indicates if the RNDIS interface's IN data endpoint should use double banking */
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */
uint16_t DataOUTEndpointSize; /**< Size in bytes of the CDC interface's OUT data endpoint */
- bool DataOUTEndpointDoubleBank; /** Indicates if the RNDIS interface's OUT data endpoint should use double banking */
+ bool DataOUTEndpointDoubleBank; /**< Indicates if the RNDIS interface's OUT data endpoint should use double banking */
uint8_t NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */
uint16_t NotificationEndpointSize; /**< Size in bytes of the CDC interface's IN notification endpoint, if used */
- bool NotificationEndpointDoubleBank; /** Indicates if the RNDIS interface's notification endpoint should use double banking */
+ bool NotificationEndpointDoubleBank; /**< Indicates if the RNDIS interface's notification endpoint should use double banking */
char* AdapterVendorDescription; /**< String description of the adapter vendor */
MAC_Address_t AdapterMACAddress; /**< MAC address of the adapter */
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the CDC interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the CDC interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the CDC interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the CDC interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the CDC interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the CDC interface's OUT data pipe should use double banking */
uint8_t NotificationPipeNumber; /**< Pipe number of the CDC interface's IN notification endpoint, if used */
- bool NotificationPipeDoubleBank; /** Indicates if the CDC interface's notification pipe should use double banking */
+ bool NotificationPipeDoubleBank; /**< Indicates if the CDC interface's notification pipe should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
* CDCDevice_LineCodingParity_t enum
*/
uint8_t DataBits; /**< Bits of data per character of the virtual serial port */
- } LineEncoding; /** Line encoding used in the virtual serial port, for the device's information. This is generally
- * only used if the virtual serial port data is to be reconstructed on a physical UART. When set
- * by the host application, the \ref CDC_Host_SetLineEncoding() function must be called to push
- * the changes to the device.
+ } LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information. This is generally
+ * only used if the virtual serial port data is to be reconstructed on a physical UART. When set
+ * by the host application, the \ref CDC_Host_SetLineEncoding() function must be called to push
+ * the changes to the device.
*/
} State; /**< State data for the USB class interface within the device. All elements in this section
* <b>may</b> be set to initial values, but may also be ignored to default to sane values when
/* Public Interface - May be used in end-application: */
/* Macros: */
- /** Error code for some HID Host functions, indicating a logical (and not hardware) error */
+ /** Error code for some HID Host functions, indicating a logical (and not hardware) error. */
#define HID_ERROR_LOGICAL 0x80
/* Type Defines: */
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the HID interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the HID interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the HID interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the HID interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the HID interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the HID interface's OUT data pipe should use double banking */
uint8_t HIDInterfaceProtocol; /**< HID interface protocol value to match against if a specific
* boot subclass protocol is required, either \ref HID_BOOT_MOUSE_PROTOCOL,
/* Public Interface - May be used in end-application: */
/* Enums: */
- /** Enum for the possible error codes in the return value of the \ref USB_ProcessHIDReport() function */
+ /** Enum for the possible error codes in the return value of the \ref USB_ProcessHIDReport() function. */
enum HID_Parse_ErrorCodes_t
{
HID_PARSE_Successful = 0, /**< Successful parse of the HID report descriptor, no error. */
*/
typedef struct
{
- uint8_t ReportID; /** Report ID of the report within the HID interface */
- uint16_t ReportSizeBits[3]; /** Total number of bits in each report type for the given Report ID,
- * indexed by the \ref HID_ReportItemTypes_t enum
+ uint8_t ReportID; /**< Report ID of the report within the HID interface */
+ uint16_t ReportSizeBits[3]; /**< Total number of bits in each report type for the given Report ID,
+ * indexed by the \ref HID_ReportItemTypes_t enum
*/
} HID_ReportSizeInfo_t;
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the MIDI interface's streaming IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the MIDI interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the MIDI interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the MIDI interface's streaming OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the MIDI interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the MIDI interface's OUT data pipe should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
/* Public Interface - May be used in end-application: */
/* Macros: */
- /** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error */
+ /** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error. */
#define MS_ERROR_LOGICAL_CMD_FAILED 0x80
/* Type Defines: */
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the Mass Storage interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the Mass Storage interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the Mass Storage interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the Mass Storage interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the Mass Storage interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the Mass Storage interface's OUT data pipe should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the Printer interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the Printer interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the Printer interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the Printer interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the Printer interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the Printer interface's OUT data pipe should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the RNDIS interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the RNDIS interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the RNDIS interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the RNDIS interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the RNDIS interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the RNDIS interface's OUT data pipe should use double banking */
uint8_t NotificationPipeNumber; /**< Pipe number of the RNDIS interface's IN notification endpoint, if used */
- bool NotificationPipeDoubleBank; /** Indicates if the RNDIS interface's notification pipe should use double banking */
+ bool NotificationPipeDoubleBank; /**< Indicates if the RNDIS interface's notification pipe should use double banking */
uint32_t HostMaxPacketSize; /**< Maximum size of a packet which can be buffered by the host */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
};
/* Macros: */
- /** Additional error code for RNDIS functions when a device returns a logical command failure */
+ /** Additional error code for RNDIS functions when a device returns a logical command failure. */
#define RNDIS_COMMAND_FAILED 0xC0
/* Function Prototypes: */
/* Public Interface - May be used in end-application: */
/* Macros: */
- /** Error code for some Still Image Host functions, indicating a logical (and not hardware) error */
+ /** Error code for some Still Image Host functions, indicating a logical (and not hardware) error. */
#define SI_ERROR_LOGICAL_CMD_FAILED 0x80
/* Type Defines: */
const struct
{
uint8_t DataINPipeNumber; /**< Pipe number of the Still Image interface's IN data pipe */
- bool DataINPipeDoubleBank; /** Indicates if the Still Image interface's IN data pipe should use double banking */
+ bool DataINPipeDoubleBank; /**< Indicates if the Still Image interface's IN data pipe should use double banking */
uint8_t DataOUTPipeNumber; /**< Pipe number of the Still Image interface's OUT data pipe */
- bool DataOUTPipeDoubleBank; /** Indicates if the Still Image interface's OUT data pipe should use double banking */
+ bool DataOUTPipeDoubleBank; /**< Indicates if the Still Image interface's OUT data pipe should use double banking */
uint8_t EventsPipeNumber; /**< Pipe number of the Still Image interface's IN events endpoint, if used */
- bool EventsPipeDoubleBank; /** Indicates if the Still Image interface's events data pipe should use double banking */
+ bool EventsPipeDoubleBank; /**< Indicates if the Still Image interface's events data pipe should use double banking */
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
*/
USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
uint8_t FirstInterfaceIndex; /**< Index of the first associated interface. */
- uint8_t TotalInterfaces; /** Total number of associated interfaces. */
+ uint8_t TotalInterfaces; /**< Total number of associated interfaces. */
uint8_t Class; /**< Interface class ID. */
uint8_t SubClass; /**< Interface subclass ID. */
* given by the specific class.
*/
uint8_t bFirstInterface; /**< Index of the first associated interface. */
- uint8_t bInterfaceCount; /** Total number of associated interfaces. */
+ uint8_t bInterfaceCount; /**< Total number of associated interfaces. */
uint8_t bFunctionClass; /**< Interface class ID. */
uint8_t bFunctionSubClass; /**< Interface subclass ID. */
uint8_t bFunctionProtocol; /**< Interface protocol ID. */
#define NO_STREAM_CALLBACK NULL
/* Enums: */
- /** Enum for the possible error return codes of a stream callback function */
+ /** Enum for the possible error return codes of a stream callback function. */
enum StreamCallback_Return_ErrorCodes_t
{
STREAMCALLBACK_Continue = 0, /**< Continue sending or receiving the stream. */
#endif
/* Macros: */
- /** Mask for the reading or writing of the high byte in a FLASH word when issuing a low-level programming command */
+ /** Mask for the reading or writing of the high byte in a FLASH word when issuing a low-level programming command. */
#define READ_WRITE_HIGH_BYTE_MASK (1 << 3)
#define PROG_MODE_PAGED_WRITES_MASK (1 << 0)
#endif
/* Macros: */
- /** Total number of allowable ISP programming speeds supported by the device */
+ /** Total number of allowable ISP programming speeds supported by the device. */
#define TOTAL_ISP_PROGRAMMING_SPEEDS 7
+ /** Low level device command to issue an extended FLASH address, for devices with other 128KB of FLASH. */
#define LOAD_EXTENDED_ADDRESS_CMD 0x4D
/* Function Prototypes: */
#define _GETADCMUXMASK(x, y) _GETADCMUXMASK2(x, y)
#endif
- /** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing */
+ /** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing. */
#define PROGRAMMER_ID "AVRISP_MK2"
- /** Timeout period for each issued command from the host before it is aborted */
+ /** Timeout period for each issued command from the host before it is aborted. */
#define COMMAND_TIMEOUT_MS 200
- /** Command timeout counter register, GPIOR for speed */
+ /** Command timeout counter register, GPIOR for speed. */
#define TimeoutMSRemaining GPIOR0
- /** MUX mask for the VTARGET ADC channel number */
+ /** MUX mask for the VTARGET ADC channel number. */
#define VTARGET_ADC_CHANNEL_MASK _GETADCMUXMASK(ADC_CHANNEL, VTARGET_ADC_CHANNEL)
#if !defined(WIN_AVRDUDE_COMPAT)
#include "ISP/ISPTarget.h"
/* Macros: */
- /** Parameter privilege mask to allow the host PC to read the parameter's value */
+ /** Parameter privilege mask to allow the host PC to read the parameter's value. */
#define PARAM_PRIV_READ (1 << 0)
- /** Parameter privilege mask to allow the host PC to change the parameter's value */
+ /** Parameter privilege mask to allow the host PC to change the parameter's value. */
#define PARAM_PRIV_WRITE (1 << 1)
/** Total number of parameters in the parameter table */
#endif
#endif
- /** Serial carrier TPI/PDI speed when hardware TPI/PDI mode is used */
+ /** Serial carrier TPI/PDI speed when hardware TPI/PDI mode is used. */
#define XPROG_HARDWARE_SPEED 1000000
- /** Total number of bits in a single USART frame */
+ /** Total number of bits in a single USART frame. */
#define BITS_IN_USART_FRAME 12
#define PDI_CMD_LDS 0x00
#include <stdbool.h>\r
\r
/* Defines: */\r
- /** Size of each ring buffer, in bytes */\r
+ /** Size of each ring buffer, in bytes. */\r
#define BUFFER_SIZE 128\r
\r
- /** Type of data to store into the buffer */\r
+ /** Type of data to store into the buffer. */\r
#define RingBuff_Data_t uint8_t\r
\r
/* Type Defines: */\r
/** LED mask for all the LEDs on the board. */
#define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2 | LEDS_LED3)
- /** LED mask for the none of the board LEDs */
+ /** LED mask for the none of the board LEDs. */
#define LEDS_NO_LEDS 0
/* Inline Functions: */
#include "MissileLauncher.h"
/* Macros: */
- /** Interface Class value for the Human Interface Device class */
+ /** Interface Class value for the Human Interface Device class. */
#define HID_CLASS 0x03
/* Enums: */
#include "ConfigDescriptor.h"
/* Macros: */
- /** Pipe number for the HID data IN pipe */
+ /** Pipe number for the HID data IN pipe. */
#define HID_DATA_IN_PIPE 1
- /** Pipe number for the HID data OUT pipe */
+ /** Pipe number for the HID data OUT pipe. */
#define HID_DATA_OUT_PIPE 2
/** HID Class specific request to send a HID report to the device. */
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
- /** Size of the Launcher report command buffer */
+ /** Size of the Launcher report command buffer. */
#define LAUNCHER_CMD_BUFFER_SIZE 64
/* Function Prototypes: */
/** Filename for the log data when written to the dataflash FAT filesystem. */
#define LOG_FILENAME "TEMPLOG.txt"
- /** Data log interval between samples, in tens of milliseconds */
+ /** Data log interval between samples, in tens of milliseconds. */
#define LOG_INTERVAL_10MS 1000
/* Type Defines: */
#include "../Webserver.h"
/* Macros: */
- /** UDP listen port for a BOOTP server */
+ /** UDP listen port for a BOOTP server. */
#define DHCPC_SERVER_PORT 67
- /** UDP listen port for a BOOTP client */
+ /** UDP listen port for a BOOTP client. */
#define DHCPC_CLIENT_PORT 68
- /** BOOTP message type for a BOOTP REQUEST message */
+ /** BOOTP message type for a BOOTP REQUEST message. */
#define DHCP_OP_BOOTREQUEST 0x01
- /** BOOTP message type for a BOOTP REPLY message */
+ /** BOOTP message type for a BOOTP REPLY message. */
#define DHCP_OP_BOOTREPLY 0x02
- /** BOOTP flag for a BOOTP broadcast message */
+ /** BOOTP flag for a BOOTP broadcast message. */
#define BOOTP_BROADCAST 0x8000
- /** Magic DHCP cookie for a BOOTP message to identify it as a DHCP message */
+ /** Magic DHCP cookie for a BOOTP message to identify it as a DHCP message. */
#define DHCP_MAGIC_COOKIE 0x63538263
- /** Unique transaction ID used to identify DHCP responses to the client */
+ /** Unique transaction ID used to identify DHCP responses to the client. */
#define DHCP_TRANSACTION_ID 0x13245466
- /** DHCP message type for a DISCOVER message */
+ /** DHCP message type for a DISCOVER message. */
#define DHCP_DISCOVER 1
- /** DHCP message type for an OFFER message */
+ /** DHCP message type for an OFFER message. */
#define DHCP_OFFER 2
- /** DHCP message type for a REQUEST message */
+ /** DHCP message type for a REQUEST message. */
#define DHCP_REQUEST 3
- /** DHCP message type for a DECLINE message */
+ /** DHCP message type for a DECLINE message. */
#define DHCP_DECLINE 4
- /** DHCP message type for an ACK message */
+ /** DHCP message type for an ACK message. */
#define DHCP_ACK 5
- /** DHCP message type for a NAK message */
+ /** DHCP message type for a NAK message. */
#define DHCP_NAK 6
- /** DHCP message type for a RELEASE message */
+ /** DHCP message type for a RELEASE message. */
#define DHCP_RELEASE 7
- /** DHCP medium type for standard Ethernet */
+ /** DHCP medium type for standard Ethernet. */
#define DHCP_HTYPE_ETHERNET 1
- /** DHCP message option for the network subnet mask */
+ /** DHCP message option for the network subnet mask. */
#define DHCP_OPTION_SUBNET_MASK 1
- /** DHCP message option for the network gateway IP */
+ /** DHCP message option for the network gateway IP. */
#define DHCP_OPTION_ROUTER 3
- /** DHCP message option for the network DNS server */
+ /** DHCP message option for the network DNS server. */
#define DHCP_OPTION_DNS_SERVER 6
- /** DHCP message option for the requested client IP address */
+ /** DHCP message option for the requested client IP address. */
#define DHCP_OPTION_REQ_IPADDR 50
- /** DHCP message option for the IP address lease time */
+ /** DHCP message option for the IP address lease time. */
#define DHCP_OPTION_LEASE_TIME 51
- /** DHCP message option for the DHCP message type */
+ /** DHCP message option for the DHCP message type. */
#define DHCP_OPTION_MSG_TYPE 53
- /** DHCP message option for the DHCP server IP */
+ /** DHCP message option for the DHCP server IP. */
#define DHCP_OPTION_SERVER_ID 54
- /** DHCP message option for the list of required options from the server */
+ /** DHCP message option for the list of required options from the server. */
#define DHCP_OPTION_REQ_LIST 55
- /** DHCP message option for the options list terminator */
+ /** DHCP message option for the options list terminator. */
#define DHCP_OPTION_END 255
/* Type Defines: */
uint32_t Cookie; /**< Magic BOOTP protocol cookie to indicate a valid packet */
- uint8_t Options[]; /** DHCP message options */
+ uint8_t Options[]; /**< DHCP message options */
} DHCP_Header_t;
/* Enums: */
} MIME_Type_t;
/* Macros: */
- /** TCP listen port for incoming HTTP traffic */
+ /** TCP listen port for incoming HTTP traffic. */
#define HTTP_SERVER_PORT 80
/* Function Prototypes: */
#include <uip.h>
/* Macros: */
- /** TCP listen port for incoming TELNET traffic */
+ /** TCP listen port for incoming TELNET traffic. */
#define TELNET_SERVER_PORT 23
/* Enums: */
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_USB_BUSY (LEDS_LED1 | LEDS_LED3 | LEDS_LED4)
- /** LED mask for the uIP stack idling with no IP configuration */
+ /** LED mask for the uIP stack idling with no IP configuration. */
#define LEDMASK_UIP_READY_NOCONFIG LEDS_LED3
- /** LED mask for the uIP stack idling with a valid IP configuration */
+ /** LED mask for the uIP stack idling with a valid IP configuration. */
#define LEDMASK_UIP_READY_CONFIG LEDS_LED4
/* Function Prototypes: */
#include <stdbool.h>\r
\r
/* Defines: */\r
- /** Size of each ring buffer, in bytes */\r
+ /** Size of each ring buffer, in bytes. */\r
#define BUFFER_SIZE 128\r
\r
- /** Type of data to store into the buffer */\r
+ /** Type of data to store into the buffer. */\r
#define RingBuff_Data_t uint8_t\r
\r
/* Type Defines: */\r