Update all demos, projects and bootloaders to indent all function parameters, one per line, for better readability.

Add missing const qualifiers to the demos.
pull/1469/head
Dean Camera 14 years ago
parent 83e293a6ec
commit 6bda628718

@ -201,7 +201,9 @@ USB_Descriptor_String_t ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -140,7 +140,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -143,7 +143,9 @@ USB_Descriptor_String_t ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -166,7 +166,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -271,7 +271,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -76,7 +76,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -271,7 +271,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -76,7 +76,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -338,7 +338,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -96,7 +96,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -189,7 +189,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -66,7 +66,8 @@
#define GENERIC_REPORT_SIZE 8 #define GENERIC_REPORT_SIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -143,8 +143,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
if (HIDReportEcho.ReportID) if (HIDReportEcho.ReportID)
*ReportID = HIDReportEcho.ReportID; *ReportID = HIDReportEcho.ReportID;
@ -163,8 +166,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
HIDReportEcho.ReportID = ReportID; HIDReportEcho.ReportID = ReportID;
HIDReportEcho.ReportSize = ReportSize; HIDReportEcho.ReportSize = ReportSize;

@ -72,9 +72,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -63,7 +63,9 @@
#define JOYSTICK_EPSIZE 8 #define JOYSTICK_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -137,8 +137,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData; USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData;
@ -173,8 +176,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
// Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports
} }

@ -85,9 +85,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -63,7 +63,8 @@
#define KEYBOARD_EPSIZE 8 #define KEYBOARD_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -178,8 +178,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
uint8_t LEDMask = LEDS_NO_LEDS; uint8_t LEDMask = LEDS_NO_LEDS;
uint8_t* LEDReport = (uint8_t*)ReportData; uint8_t* LEDReport = (uint8_t*)ReportData;

@ -75,9 +75,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -275,7 +275,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -69,7 +69,8 @@
#define HID_EPSIZE 8 #define HID_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -165,8 +165,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
uint8_t JoyStatus_LCL = Joystick_GetStatus(); uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus(); uint8_t ButtonStatus_LCL = Buttons_GetStatus();
@ -232,8 +235,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
if (HIDInterfaceInfo == &Keyboard_HID_Interface) if (HIDInterfaceInfo == &Keyboard_HID_Interface)
{ {

@ -70,9 +70,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -283,7 +283,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -75,7 +75,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -174,7 +174,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -66,7 +66,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -47,7 +47,9 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -181,7 +183,9 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -289,7 +293,9 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInf
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -388,7 +394,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -67,13 +67,17 @@
#define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE) #define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE)
/* Function Prototypes: */ /* Function Prototypes: */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);
bool DataflashManager_CheckDataflashOperation(void); bool DataflashManager_CheckDataflashOperation(void);

@ -247,7 +247,8 @@ static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
* \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with * \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with
* \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE) * \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE)
*/ */
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead) static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead)
{ {
uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]); uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]);
uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]); uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]);

@ -80,7 +80,8 @@
static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead); static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead);
#endif #endif
#endif #endif

@ -254,7 +254,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -47,7 +47,9 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -181,7 +183,9 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -289,7 +293,9 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInf
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -388,7 +394,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -70,13 +70,17 @@
#define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS) #define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS)
/* Function Prototypes: */ /* Function Prototypes: */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);

@ -300,7 +300,8 @@ static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
* *
* \return Boolean true if the command completed successfully, false otherwise. * \return Boolean true if the command completed successfully, false otherwise.
*/ */
static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead) static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead)
{ {
uint32_t BlockAddress; uint32_t BlockAddress;
uint16_t TotalBlocks; uint16_t TotalBlocks;

@ -81,7 +81,8 @@
static bool SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static bool SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static bool SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static bool SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead); static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead);
#endif #endif
#endif #endif

@ -185,8 +185,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData; USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
@ -223,8 +226,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
uint8_t LEDMask = LEDS_NO_LEDS; uint8_t LEDMask = LEDS_NO_LEDS;
uint8_t* LEDReport = (uint8_t*)ReportData; uint8_t* LEDReport = (uint8_t*)ReportData;

@ -86,10 +86,15 @@
bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -63,7 +63,8 @@
#define MOUSE_EPSIZE 8 #define MOUSE_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -137,8 +137,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData; USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;
@ -173,8 +176,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
// Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports
} }

@ -76,9 +76,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -212,7 +212,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -46,7 +46,8 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t ARP_ProcessARPPacket(void* InDataStart, void* OutDataStart) int16_t ARP_ProcessARPPacket(void* InDataStart,
void* OutDataStart)
{ {
DecodeARPHeader(InDataStart); DecodeARPHeader(InDataStart);

@ -69,6 +69,7 @@
} ARP_Header_t; } ARP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t ARP_ProcessARPPacket(void* InDataStart, void* OutDataStart); int16_t ARP_ProcessARPPacket(void* InDataStart,
void* OutDataStart);
#endif #endif

@ -46,7 +46,9 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, void* DHCPHeaderInStart, void* DHCPHeaderOutStart) int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart,
void* DHCPHeaderInStart,
void* DHCPHeaderOutStart)
{ {
IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart; IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart;
DHCP_Header_t* DHCPHeaderIN = (DHCP_Header_t*)DHCPHeaderInStart; DHCP_Header_t* DHCPHeaderIN = (DHCP_Header_t*)DHCPHeaderInStart;

@ -120,6 +120,8 @@
} DHCP_Header_t; } DHCP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, void* DHCPHeaderInStart, void* DHCPHeaderOutStart); int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart,
void* DHCPHeaderInStart,
void* DHCPHeaderOutStart);
#endif #endif

@ -56,7 +56,8 @@ const IP_Address_t ClientIPAddress = {CLIENT_IP_ADDRESS};
/** Processes an incoming Ethernet frame, and writes the appropriate response to the output Ethernet /** Processes an incoming Ethernet frame, and writes the appropriate response to the output Ethernet
* frame buffer if the sub protocol handlers create a valid response. * frame buffer if the sub protocol handlers create a valid response.
*/ */
void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_t* FrameOUT) void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* const FrameIN,
Ethernet_Frame_Info_t* const FrameOUT)
{ {
DecodeEthernetFrameHeader(FrameIN); DecodeEthernetFrameHeader(FrameIN);
@ -115,7 +116,8 @@ void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_
* *
* \return A 16-bit Ethernet checksum value * \return A 16-bit Ethernet checksum value
*/ */
uint16_t Ethernet_Checksum16(void* Data, uint16_t Bytes) uint16_t Ethernet_Checksum16(void* Data,
uint16_t Bytes)
{ {
uint16_t* Words = (uint16_t*)Data; uint16_t* Words = (uint16_t*)Data;
uint32_t Checksum = 0; uint32_t Checksum = 0;

@ -96,7 +96,9 @@
extern const IP_Address_t ClientIPAddress; extern const IP_Address_t ClientIPAddress;
/* Function Prototypes: */ /* Function Prototypes: */
void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_t* FrameOUT); void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* const FrameIN,
uint16_t Ethernet_Checksum16(void* Data, uint16_t Bytes); Ethernet_Frame_Info_t* const FrameOUT);
uint16_t Ethernet_Checksum16(void* Data,
uint16_t Bytes);
#endif #endif

@ -46,7 +46,9 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t ICMP_ProcessICMPPacket(Ethernet_Frame_Info_t* FrameIN, void* InDataStart, void* OutDataStart) int16_t ICMP_ProcessICMPPacket(Ethernet_Frame_Info_t* const FrameIN,
void* InDataStart,
void* OutDataStart)
{ {
ICMP_Header_t* ICMPHeaderIN = (ICMP_Header_t*)InDataStart; ICMP_Header_t* ICMPHeaderIN = (ICMP_Header_t*)InDataStart;
ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart; ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart;

@ -75,6 +75,8 @@
} ICMP_Header_t; } ICMP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t ICMP_ProcessICMPPacket(Ethernet_Frame_Info_t* FrameIN, void* InDataStart, void* OutDataStart); int16_t ICMP_ProcessICMPPacket(Ethernet_Frame_Info_t* const FrameIN,
void* InDataStart,
void* OutDataStart);
#endif #endif

@ -47,7 +47,9 @@
* response was generated, NO_PROCESS if the packet processing was deferred until the * response was generated, NO_PROCESS if the packet processing was deferred until the
* next Ethernet packet handler iteration * next Ethernet packet handler iteration
*/ */
int16_t IP_ProcessIPPacket(Ethernet_Frame_Info_t* FrameIN, void* InDataStart, void* OutDataStart) int16_t IP_ProcessIPPacket(Ethernet_Frame_Info_t* const FrameIN,
void* InDataStart,
void* OutDataStart)
{ {
DecodeIPHeader(InDataStart); DecodeIPHeader(InDataStart);

@ -90,6 +90,8 @@
} IP_Header_t; } IP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t IP_ProcessIPPacket(Ethernet_Frame_Info_t* FrameIN, void* InDataStart, void* OutDataStart); int16_t IP_ProcessIPPacket(Ethernet_Frame_Info_t* const FrameIN,
void* InDataStart,
void* OutDataStart);
#endif #endif

@ -53,7 +53,7 @@
* *
* \param[in] FrameINData Pointer to the start of an Ethernet frame information structure * \param[in] FrameINData Pointer to the start of an Ethernet frame information structure
*/ */
void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* FrameINData) void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* const FrameINData)
{ {
#if !defined(NO_DECODE_ETHERNET) #if !defined(NO_DECODE_ETHERNET)
Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)FrameINData->FrameData; Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)FrameINData->FrameData;

@ -48,7 +48,7 @@
#include "Ethernet.h" #include "Ethernet.h"
/* Function Prototypes: */ /* Function Prototypes: */
void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* FrameINData); void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* const FrameINData);
void DecodeARPHeader(void* InDataStart); void DecodeARPHeader(void* InDataStart);
void DecodeIPHeader(void* InDataStart); void DecodeIPHeader(void* InDataStart);
void DecodeICMPHeader(void* InDataStart); void DecodeICMPHeader(void* InDataStart);

@ -55,7 +55,7 @@ TCP_ConnectionState_t ConnectionStateTable[MAX_TCP_CONNECTIONS];
* level. If an application produces a response, this task constructs the appropriate Ethernet frame and places it into the Ethernet OUT * level. If an application produces a response, this task constructs the appropriate Ethernet frame and places it into the Ethernet OUT
* buffer for later transmission. * buffer for later transmission.
*/ */
void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo) void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)
{ {
/* Run each application in sequence, to process incoming and generate outgoing packets */ /* Run each application in sequence, to process incoming and generate outgoing packets */
for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++) for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)
@ -178,7 +178,9 @@ void TCP_Init(void)
* *
* \return Boolean true if the port state was set, false otherwise (no more space in the port state table) * \return Boolean true if the port state was set, false otherwise (no more space in the port state table)
*/ */
bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)) bool TCP_SetPortState(const uint16_t Port,
const uint8_t State,
void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*))
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -225,7 +227,7 @@ bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_Connecti
* *
* \return A value from the TCP_PortStates_t enum * \return A value from the TCP_PortStates_t enum
*/ */
uint8_t TCP_GetPortState(uint16_t Port) uint8_t TCP_GetPortState(const uint16_t Port)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -250,7 +252,10 @@ uint8_t TCP_GetPortState(uint16_t Port)
* *
* \return Boolean true if the connection was updated or created, false otherwise (no more space in the connection state table) * \return Boolean true if the connection was updated or created, false otherwise (no more space in the connection state table)
*/ */
bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State) bool TCP_SetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort,
const uint8_t State)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -290,7 +295,9 @@ bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t
* *
* \return A value from the TCP_ConnectionStates_t enum * \return A value from the TCP_ConnectionStates_t enum
*/ */
uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort) uint8_t TCP_GetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -317,7 +324,9 @@ uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16
* *
* \return ConnectionInfo structure of the connection if found, NULL otherwise * \return ConnectionInfo structure of the connection if found, NULL otherwise
*/ */
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort) TCP_ConnectionInfo_t* TCP_GetConnectionInfo(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -346,7 +355,9 @@ TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAd
* response was generated, NO_PROCESS if the packet processing was deferred until the * response was generated, NO_PROCESS if the packet processing was deferred until the
* next Ethernet packet handler iteration * next Ethernet packet handler iteration
*/ */
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void* TCPHeaderOutStart) int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart,
void* TCPHeaderInStart,
void* TCPHeaderOutStart)
{ {
IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart; IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart;
TCP_Header_t* TCPHeaderIN = (TCP_Header_t*)TCPHeaderInStart; TCP_Header_t* TCPHeaderIN = (TCP_Header_t*)TCPHeaderInStart;
@ -593,8 +604,10 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
* *
* \return A 16-bit TCP checksum value * \return A 16-bit TCP checksum value
*/ */
static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddress, static uint16_t TCP_Checksum16(void* TCPHeaderOutStart,
IP_Address_t DestinationAddress, uint16_t TCPOutSize) const IP_Address_t SourceAddress,
const IP_Address_t DestinationAddress,
const uint16_t TCPOutSize)
{ {
uint32_t Checksum = 0; uint32_t Checksum = 0;

@ -228,18 +228,31 @@
} TCP_Header_t; } TCP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo); void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo);
void TCP_Init(void); void TCP_Init(void);
bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)); bool TCP_SetPortState(const uint16_t Port,
uint8_t TCP_GetPortState(uint16_t Port); const uint8_t State,
bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State); void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*));
uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); uint8_t TCP_GetPortState(const uint16_t Port);
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); bool TCP_SetConnectionState(const uint16_t Port,
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void* TCPHeaderOutStart); const IP_Address_t RemoteAddress,
const uint16_t RemotePort,
const uint8_t State);
uint8_t TCP_GetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort);
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort);
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart,
void* TCPHeaderInStart,
void* TCPHeaderOutStart);
#if defined(INCLUDE_FROM_TCP_C) #if defined(INCLUDE_FROM_TCP_C)
static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddress, static uint16_t TCP_Checksum16(void* TCPHeaderOutStart,
IP_Address_t DestinationAddress, uint16_t TCPOutSize); const IP_Address_t SourceAddress,
const IP_Address_t DestinationAddress,
uint16_t TCPOutSize);
#endif #endif
#endif #endif

@ -46,7 +46,9 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void* UDPHeaderOutStart) int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart,
void* UDPHeaderInStart,
void* UDPHeaderOutStart)
{ {
UDP_Header_t* UDPHeaderIN = (UDP_Header_t*)UDPHeaderInStart; UDP_Header_t* UDPHeaderIN = (UDP_Header_t*)UDPHeaderInStart;
UDP_Header_t* UDPHeaderOUT = (UDP_Header_t*)UDPHeaderOutStart; UDP_Header_t* UDPHeaderOUT = (UDP_Header_t*)UDPHeaderOutStart;

@ -62,6 +62,8 @@
} UDP_Header_t; } UDP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void* UDPHeaderOutStart); int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart,
void* UDPHeaderInStart,
void* UDPHeaderOutStart);
#endif #endif

@ -90,7 +90,8 @@ void Webserver_Init(void)
* *
* \return Boolean true if the command matches the request, false otherwise * \return Boolean true if the command matches the request, false otherwise
*/ */
static bool IsHTTPCommand(uint8_t* RequestHeader, char* Command) static bool IsHTTPCommand(uint8_t* RequestHeader,
char* Command)
{ {
/* Returns true if the non null terminated string in RequestHeader matches the null terminated string Command */ /* Returns true if the non null terminated string in RequestHeader matches the null terminated string Command */
return (strncmp((char*)RequestHeader, Command, strlen(Command)) == 0); return (strncmp((char*)RequestHeader, Command, strlen(Command)) == 0);
@ -102,7 +103,8 @@ static bool IsHTTPCommand(uint8_t* RequestHeader, char* Command)
* \param[in] ConnectionState Pointer to a TCP Connection State structure giving connection information * \param[in] ConnectionState Pointer to a TCP Connection State structure giving connection information
* \param[in,out] Buffer Pointer to the application's send/receive packet buffer * \param[in,out] Buffer Pointer to the application's send/receive packet buffer
*/ */
void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_ConnectionBuffer_t* Buffer) void Webserver_ApplicationCallback(TCP_ConnectionState_t* const ConnectionState,
TCP_ConnectionBuffer_t* const Buffer)
{ {
char* BufferDataStr = (char*)Buffer->Data; char* BufferDataStr = (char*)Buffer->Data;
static uint8_t PageBlock = 0; static uint8_t PageBlock = 0;

@ -50,6 +50,7 @@
/* Function Prototypes: */ /* Function Prototypes: */
void Webserver_Init(void); void Webserver_Init(void);
void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_ConnectionBuffer_t* Buffer); void Webserver_ApplicationCallback(TCP_ConnectionState_t* const ConnectionState,
TCP_ConnectionBuffer_t* const Buffer);
#endif #endif

@ -224,7 +224,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -311,7 +311,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -88,7 +88,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -199,8 +199,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData; USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;
@ -235,8 +238,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
// Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports
} }

@ -76,8 +76,14 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -154,7 +154,9 @@ USB_OSCompatibleIDDescriptor_t PROGMEM DevCompatIDs =
SubCompatibleID: "UNIV1"} SubCompatibleID: "UNIV1"}
}; };
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);
@ -207,11 +209,12 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex,
return Size; return Size;
} }
bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex, uint16_t USB_GetOSFeatureDescriptor(const uint16_t wValue,
void** const DescriptorAddress, uint16_t* const DescriptorSize) const uint8_t wIndex,
void** const DescriptorAddress)
{ {
void* Address = NULL; void* Address = NULL;
uint16_t Size = 0; uint16_t Size = NO_DESCRIPTOR;
/* Check if a device level OS feature descriptor is being requested */ /* Check if a device level OS feature descriptor is being requested */
if (wValue == 0x0000) if (wValue == 0x0000)
@ -224,13 +227,6 @@ bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex,
} }
} }
if (Address != NULL)
{
*DescriptorAddress = Address; *DescriptorAddress = Address;
*DescriptorSize = Size; return Size;
return true;
}
return false;
} }

@ -85,11 +85,12 @@
} USB_OSCompatibleIDDescriptor_t; } USB_OSCompatibleIDDescriptor_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex, uint16_t USB_GetOSFeatureDescriptor(const uint16_t wValue,
void** const DescriptorAddress, uint16_t* const DescriptorSize) const uint8_t wIndex,
ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3) ATTR_NON_NULL_PTR_ARG(4); void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -44,7 +44,7 @@ SideShow_Application_t* SideShow_GetFreeApplication(void)
return NULL; return NULL;
} }
SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID) SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* const GUID)
{ {
for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++) for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)
{ {

@ -57,6 +57,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
SideShow_Application_t* SideShow_GetFreeApplication(void); SideShow_Application_t* SideShow_GetFreeApplication(void);
SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID); SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* const GUID);
#endif #endif

@ -280,7 +280,8 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
return; return;
} }
static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, void* const UnicodeStruct) static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader,
void* const UnicodeStruct)
{ {
Endpoint_ClearOUT(); Endpoint_ClearOUT();

@ -151,7 +151,8 @@
static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* const PacketHeader);
static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* const PacketHeader);
static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader);
static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, void* const UnicodeStruct); static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader,
void* const UnicodeStruct);
static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader);
static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* const PacketHeader);
static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader); static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader);

@ -30,7 +30,8 @@
#include "SideshowCommon.h" #include "SideshowCommon.h"
uint16_t SideShow_Read_Unicode_String(void* const UnicodeString, const uint16_t MaxBytes) uint16_t SideShow_Read_Unicode_String(void* const UnicodeString,
const uint16_t MaxBytes)
{ {
Unicode_String_t* const UnicodeStruct = (Unicode_String_t*)UnicodeString; Unicode_String_t* const UnicodeStruct = (Unicode_String_t*)UnicodeString;
uint32_t UnicodeCharsToRead; uint32_t UnicodeCharsToRead;

@ -96,7 +96,8 @@
} SideShow_PacketHeader_t; } SideShow_PacketHeader_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t SideShow_Read_Unicode_String(void* UnicodeString, const uint16_t MaxBytes); uint16_t SideShow_Read_Unicode_String(void* UnicodeString,
const uint16_t MaxBytes);
void SideShow_Write_Unicode_String(void* UnicodeString); void SideShow_Write_Unicode_String(void* UnicodeString);
void SideShow_Discard_Byte_Stream(void); void SideShow_Discard_Byte_Stream(void);

@ -31,7 +31,8 @@
#define INCLUDE_FROM_SIDESHOWCONTENT_C #define INCLUDE_FROM_SIDESHOWCONTENT_C
#include "SideshowContent.h" #include "SideshowContent.h"
bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader, SideShow_Application_t* const Application) bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader,
SideShow_Application_t* const Application)
{ {
uint32_t ContentSize; uint32_t ContentSize;
uint32_t ContentID; uint32_t ContentID;
@ -69,7 +70,8 @@ bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader, Side
return true; return true;
} }
static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize) static void SideShow_ProcessXMLContent(void* ContentData,
uint32_t ContentSize)
{ {
printf(" XML"); printf(" XML");
Endpoint_Discard_Stream(ContentSize); Endpoint_Discard_Stream(ContentSize);

@ -116,10 +116,12 @@
#define XML_END_TAG "</body>" #define XML_END_TAG "</body>"
/* Function Prototypes: */ /* Function Prototypes: */
bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader, SideShow_Application_t* const Application); bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader,
SideShow_Application_t* const Application);
#if defined(INCLUDE_FROM_SIDESHOWCONTENT_C) #if defined(INCLUDE_FROM_SIDESHOWCONTENT_C)
static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize); static void SideShow_ProcessXMLContent(void* ContentData,
uint32_t ContentSize);
#endif #endif
#endif #endif

@ -122,13 +122,11 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE)) if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE))
{ {
void* DescriptorPointer; void* DescriptorPointer;
uint16_t DescriptorSize; uint16_t DescriptorSize = USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
&DescriptorPointer, &DescriptorSize);
if (!(USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, if (DescriptorSize == NO_DESCRIPTOR)
&DescriptorPointer, &DescriptorSize)))
{
return; return;
}
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();

@ -272,7 +272,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -312,7 +312,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -272,7 +272,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -312,7 +312,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -338,7 +338,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -110,7 +110,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -94,7 +94,8 @@
#define DTYPE_Report 0x22 #define DTYPE_Report 0x22
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -87,7 +87,8 @@
#define DTYPE_Report 0x22 #define DTYPE_Report 0x22
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -141,7 +141,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
* *
* \return Boolean true if the new report differs from the last report, false otherwise * \return Boolean true if the new report differs from the last report, false otherwise
*/ */
bool GetNextReport(USB_JoystickReport_Data_t* ReportData) bool GetNextReport(USB_JoystickReport_Data_t* const ReportData)
{ {
static uint8_t PrevJoyStatus = 0; static uint8_t PrevJoyStatus = 0;
static uint8_t PrevButtonStatus = 0; static uint8_t PrevButtonStatus = 0;

@ -87,6 +87,6 @@
void EVENT_USB_Device_ConfigurationChanged(void); void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
bool GetNextReport(USB_JoystickReport_Data_t* ReportData); bool GetNextReport(USB_JoystickReport_Data_t* const ReportData);
#endif #endif

@ -216,7 +216,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -92,7 +92,8 @@
#define DTYPE_Report 0x22 #define DTYPE_Report 0x22
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -257,7 +257,7 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \param[out] ReportData Pointer to a HID report data structure to be filled * \param[out] ReportData Pointer to a HID report data structure to be filled
*/ */
void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData) void CreateKeyboardReport(USB_KeyboardReport_Data_t* const ReportData)
{ {
uint8_t JoyStatus_LCL = Joystick_GetStatus(); uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus(); uint8_t ButtonStatus_LCL = Buttons_GetStatus();
@ -291,7 +291,7 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
* *
* \param[in] LEDReport LED status report from the host * \param[in] LEDReport LED status report from the host
*/ */
void ProcessLEDReport(uint8_t LEDReport) void ProcessLEDReport(const uint8_t LEDReport)
{ {
uint8_t LEDMask = LEDS_LED2; uint8_t LEDMask = LEDS_LED2;

@ -144,8 +144,8 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData); void CreateKeyboardReport(USB_KeyboardReport_Data_t* const ReportData);
void ProcessLEDReport(uint8_t LEDReport); void ProcessLEDReport(const uint8_t LEDReport);
void SendNextReport(void); void SendNextReport(void);
void ReceiveNextReport(void); void ReceiveNextReport(void);

@ -286,7 +286,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -98,7 +98,8 @@
#define DTYPE_Report 0x22 #define DTYPE_Report 0x22
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -283,7 +283,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -183,7 +183,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -174,7 +174,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -65,7 +65,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -46,7 +46,8 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -179,7 +180,8 @@ void DataflashManager_WriteBlocks(const uint32_t BlockAddress, uint16_t TotalBlo
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -287,7 +289,9 @@ void DataflashManager_ReadBlocks(const uint32_t BlockAddress, uint16_t TotalBloc
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -386,7 +390,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -74,11 +74,15 @@
#define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS) #define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS)
/* Function Prototypes: */ /* Function Prototypes: */
void DataflashManager_WriteBlocks(const uint32_t BlockAddress, uint16_t TotalBlocks); void DataflashManager_WriteBlocks(const uint32_t BlockAddress,
void DataflashManager_ReadBlocks(const uint32_t BlockAddress, uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks(const uint32_t BlockAddress,
uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);
bool DataflashManager_CheckDataflashOperation(void); bool DataflashManager_CheckDataflashOperation(void);

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -87,7 +87,8 @@
#define DTYPE_Report 0x22 #define DTYPE_Report 0x22
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -226,7 +226,7 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \param[out] ReportData Pointer to a HID report data structure to be filled * \param[out] ReportData Pointer to a HID report data structure to be filled
*/ */
void CreateMouseReport(USB_MouseReport_Data_t* ReportData) void CreateMouseReport(USB_MouseReport_Data_t* const ReportData)
{ {
uint8_t JoyStatus_LCL = Joystick_GetStatus(); uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus(); uint8_t ButtonStatus_LCL = Buttons_GetStatus();

@ -107,6 +107,6 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
void CreateMouseReport(USB_MouseReport_Data_t* ReportData); void CreateMouseReport(USB_MouseReport_Data_t* const ReportData);
#endif #endif

@ -212,7 +212,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -91,7 +91,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -46,7 +46,8 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t ARP_ProcessARPPacket(void* InDataStart, void* OutDataStart) int16_t ARP_ProcessARPPacket(void* InDataStart,
void* OutDataStart)
{ {
DecodeARPHeader(InDataStart); DecodeARPHeader(InDataStart);

@ -69,6 +69,7 @@
} ARP_Header_t; } ARP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t ARP_ProcessARPPacket(void* InDataStart, void* OutDataStart); int16_t ARP_ProcessARPPacket(void* InDataStart,
void* OutDataStart);
#endif #endif

@ -46,7 +46,9 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, void* DHCPHeaderInStart, void* DHCPHeaderOutStart) int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart,
void* DHCPHeaderInStart,
void* DHCPHeaderOutStart)
{ {
IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart; IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart;
DHCP_Header_t* DHCPHeaderIN = (DHCP_Header_t*)DHCPHeaderInStart; DHCP_Header_t* DHCPHeaderIN = (DHCP_Header_t*)DHCPHeaderInStart;

@ -120,6 +120,8 @@
} DHCP_Header_t; } DHCP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, void* DHCPHeaderInStart, void* DHCPHeaderOutStart); int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart,
void* DHCPHeaderInStart,
void* DHCPHeaderOutStart);
#endif #endif

@ -120,7 +120,8 @@ void Ethernet_ProcessPacket(void)
* *
* \return A 16-bit Ethernet checksum value * \return A 16-bit Ethernet checksum value
*/ */
uint16_t Ethernet_Checksum16(void* Data, uint16_t Bytes) uint16_t Ethernet_Checksum16(void* Data,
uint16_t Bytes)
{ {
uint16_t* Words = (uint16_t*)Data; uint16_t* Words = (uint16_t*)Data;
uint32_t Checksum = 0; uint32_t Checksum = 0;

@ -109,6 +109,7 @@
/* Function Prototypes: */ /* Function Prototypes: */
void Ethernet_ProcessPacket(void); void Ethernet_ProcessPacket(void);
uint16_t Ethernet_Checksum16(void* Data, uint16_t Bytes); uint16_t Ethernet_Checksum16(void* Data,
uint16_t Bytes);
#endif #endif

@ -45,7 +45,8 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t ICMP_ProcessICMPPacket(void* InDataStart, void* OutDataStart) int16_t ICMP_ProcessICMPPacket(void* InDataStart,
void* OutDataStart)
{ {
ICMP_Header_t* ICMPHeaderIN = (ICMP_Header_t*)InDataStart; ICMP_Header_t* ICMPHeaderIN = (ICMP_Header_t*)InDataStart;
ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart; ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart;

@ -75,6 +75,7 @@
} ICMP_Header_t; } ICMP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t ICMP_ProcessICMPPacket(void* InDataStart, void* OutDataStart); int16_t ICMP_ProcessICMPPacket(void* InDataStart,
void* OutDataStart);
#endif #endif

@ -46,7 +46,8 @@
* response was generated, NO_PROCESS if the packet processing was deferred until the * response was generated, NO_PROCESS if the packet processing was deferred until the
* next Ethernet packet handler iteration * next Ethernet packet handler iteration
*/ */
int16_t IP_ProcessIPPacket(void* InDataStart, void* OutDataStart) int16_t IP_ProcessIPPacket(void* InDataStart,
void* OutDataStart)
{ {
DecodeIPHeader(InDataStart); DecodeIPHeader(InDataStart);

@ -90,6 +90,7 @@
} IP_Header_t; } IP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t IP_ProcessIPPacket(void* InDataStart, void* OutDataStart); int16_t IP_ProcessIPPacket(void* InDataStart,
void* OutDataStart);
#endif #endif

@ -239,7 +239,7 @@ void ProcessRNDISControlMessage(void)
* *
* \return Boolean true if the query was handled, false otherwise * \return Boolean true if the query was handled, false otherwise
*/ */
static bool ProcessNDISQuery(uint32_t OId, void* QueryData, uint16_t QuerySize, static bool ProcessNDISQuery(const uint32_t OId, void* QueryData, uint16_t QuerySize,
void* ResponseData, uint16_t* ResponseSize) void* ResponseData, uint16_t* ResponseSize)
{ {
/* Handler for REMOTE_NDIS_QUERY_MSG messages */ /* Handler for REMOTE_NDIS_QUERY_MSG messages */

@ -215,9 +215,14 @@
void ProcessRNDISControlMessage(void); void ProcessRNDISControlMessage(void);
#if defined(INCLUDE_FROM_RNDIS_C) #if defined(INCLUDE_FROM_RNDIS_C)
static bool ProcessNDISQuery(uint32_t OId, void* QueryData, uint16_t QuerySize, static bool ProcessNDISQuery(const uint32_t OId,
void* ResponseData, uint16_t* ResponseSize); void* QueryData,
static bool ProcessNDISSet(uint32_t OId, void* SetData, uint16_t SetSize); uint16_t QuerySize,
void* ResponseData,
uint16_t* ResponseSize);
static bool ProcessNDISSet(const uint32_t OId,
void* SetData,
uint16_t SetSize);
#endif #endif
#endif #endif

@ -175,7 +175,9 @@ void TCP_Init(void)
* *
* \return Boolean true if the port state was set, false otherwise (no more space in the port state table) * \return Boolean true if the port state was set, false otherwise (no more space in the port state table)
*/ */
bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)) bool TCP_SetPortState(const uint16_t Port,
const uint8_t State,
void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*))
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -222,7 +224,7 @@ bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_Connecti
* *
* \return A value from the TCP_PortStates_t enum * \return A value from the TCP_PortStates_t enum
*/ */
uint8_t TCP_GetPortState(uint16_t Port) uint8_t TCP_GetPortState(const uint16_t Port)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -247,7 +249,10 @@ uint8_t TCP_GetPortState(uint16_t Port)
* *
* \return Boolean true if the connection was updated or created, false otherwise (no more space in the connection state table) * \return Boolean true if the connection was updated or created, false otherwise (no more space in the connection state table)
*/ */
bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State) bool TCP_SetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort,
const uint8_t State)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -287,7 +292,9 @@ bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t
* *
* \return A value from the TCP_ConnectionStates_t enum * \return A value from the TCP_ConnectionStates_t enum
*/ */
uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort) uint8_t TCP_GetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -314,7 +321,9 @@ uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16
* *
* \return ConnectionInfo structure of the connection if found, NULL otherwise * \return ConnectionInfo structure of the connection if found, NULL otherwise
*/ */
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort) TCP_ConnectionInfo_t* TCP_GetConnectionInfo(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort)
{ {
/* Note, Port number should be specified in BIG endian to simplify network code */ /* Note, Port number should be specified in BIG endian to simplify network code */
@ -343,7 +352,9 @@ TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAd
* response was generated, NO_PROCESS if the packet processing was deferred until the * response was generated, NO_PROCESS if the packet processing was deferred until the
* next Ethernet packet handler iteration * next Ethernet packet handler iteration
*/ */
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void* TCPHeaderOutStart) int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart,
void* TCPHeaderInStart,
void* TCPHeaderOutStart)
{ {
IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart; IP_Header_t* IPHeaderIN = (IP_Header_t*)IPHeaderInStart;
TCP_Header_t* TCPHeaderIN = (TCP_Header_t*)TCPHeaderInStart; TCP_Header_t* TCPHeaderIN = (TCP_Header_t*)TCPHeaderInStart;
@ -590,8 +601,10 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
* *
* \return A 16-bit TCP checksum value * \return A 16-bit TCP checksum value
*/ */
static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddress, static uint16_t TCP_Checksum16(void* TCPHeaderOutStart,
IP_Address_t DestinationAddress, uint16_t TCPOutSize) const IP_Address_t SourceAddress,
const IP_Address_t DestinationAddress,
uint16_t TCPOutSize)
{ {
uint32_t Checksum = 0; uint32_t Checksum = 0;

@ -231,16 +231,29 @@
/* Function Prototypes: */ /* Function Prototypes: */
void TCP_Init(void); void TCP_Init(void);
void TCP_Task(void); void TCP_Task(void);
bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)); bool TCP_SetPortState(const uint16_t Port,
uint8_t TCP_GetPortState(uint16_t Port); const uint8_t State,
bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State); void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*));
uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); uint8_t TCP_GetPortState(const uint16_t Port);
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); bool TCP_SetConnectionState(const uint16_t Port,
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void* TCPHeaderOutStart); const IP_Address_t RemoteAddress,
const uint16_t RemotePort,
const uint8_t State);
uint8_t TCP_GetConnectionState(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort);
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(const uint16_t Port,
const IP_Address_t RemoteAddress,
const uint16_t RemotePort);
int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart,
void* TCPHeaderInStart,
void* TCPHeaderOutStart);
#if defined(INCLUDE_FROM_TCP_C) #if defined(INCLUDE_FROM_TCP_C)
static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddress, static uint16_t TCP_Checksum16(void* TCPHeaderOutStart,
IP_Address_t DestinationAddress, uint16_t TCPOutSize); const IP_Address_t SourceAddress,
const IP_Address_t DestinationAddress,
uint16_t TCPOutSize);
#endif #endif
#endif #endif

@ -46,7 +46,9 @@
* *
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise * \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
*/ */
int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void* UDPHeaderOutStart) int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart,
void* UDPHeaderInStart,
void* UDPHeaderOutStart)
{ {
UDP_Header_t* UDPHeaderIN = (UDP_Header_t*)UDPHeaderInStart; UDP_Header_t* UDPHeaderIN = (UDP_Header_t*)UDPHeaderInStart;
UDP_Header_t* UDPHeaderOUT = (UDP_Header_t*)UDPHeaderOutStart; UDP_Header_t* UDPHeaderOUT = (UDP_Header_t*)UDPHeaderOutStart;

@ -65,6 +65,8 @@
} UDP_Header_t; } UDP_Header_t;
/* Function Prototypes: */ /* Function Prototypes: */
int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void* UDPHeaderOutStart); int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart,
void* UDPHeaderInStart,
void* UDPHeaderOutStart);
#endif #endif

@ -90,7 +90,8 @@ void Webserver_Init(void)
* *
* \return Boolean true if the command matches the request, false otherwise * \return Boolean true if the command matches the request, false otherwise
*/ */
static bool IsHTTPCommand(uint8_t* RequestHeader, char* Command) static bool IsHTTPCommand(uint8_t* RequestHeader,
char* Command)
{ {
/* Returns true if the non null terminated string in RequestHeader matches the null terminated string Command */ /* Returns true if the non null terminated string in RequestHeader matches the null terminated string Command */
return (strncmp((char*)RequestHeader, Command, strlen(Command)) == 0); return (strncmp((char*)RequestHeader, Command, strlen(Command)) == 0);
@ -102,7 +103,8 @@ static bool IsHTTPCommand(uint8_t* RequestHeader, char* Command)
* \param[in] ConnectionState Pointer to a TCP Connection State structure giving connection information * \param[in] ConnectionState Pointer to a TCP Connection State structure giving connection information
* \param[in,out] Buffer Pointer to the application's send/receive packet buffer * \param[in,out] Buffer Pointer to the application's send/receive packet buffer
*/ */
void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_ConnectionBuffer_t* Buffer) void Webserver_ApplicationCallback(TCP_ConnectionState_t* const ConnectionState,
TCP_ConnectionBuffer_t* const Buffer)
{ {
char* BufferDataStr = (char*)Buffer->Data; char* BufferDataStr = (char*)Buffer->Data;
static uint8_t PageBlock = 0; static uint8_t PageBlock = 0;

@ -50,6 +50,7 @@
/* Function Prototypes: */ /* Function Prototypes: */
void Webserver_Init(void); void Webserver_Init(void);
void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_ConnectionBuffer_t* Buffer); void Webserver_ApplicationCallback(TCP_ConnectionState_t* const ConnectionState,
TCP_ConnectionBuffer_t* const Buffer);
#endif #endif

@ -224,7 +224,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -91,7 +91,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -199,7 +199,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -63,7 +63,8 @@
#define MOUSE_EPSIZE 8 #define MOUSE_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -104,8 +104,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData; USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;
@ -140,8 +143,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
// Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports
} }

@ -43,10 +43,16 @@
extern USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface; extern USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface;
/* Function Prototypes: */ /* Function Prototypes: */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
void EVENT_USB_Device_Connect(void); void EVENT_USB_Device_Connect(void);
void EVENT_USB_Device_Disconnect(void); void EVENT_USB_Device_Disconnect(void);

@ -93,7 +93,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -48,7 +48,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -231,7 +231,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -250,7 +251,7 @@ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
bool IsJoystick = false; bool IsJoystick = false;

@ -85,9 +85,10 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -211,7 +211,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -70,7 +70,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -237,7 +237,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -256,7 +257,7 @@ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
/* Check the attributes of the current item - see if we are interested in it or not; /* Check the attributes of the current item - see if we are interested in it or not;
* only store KEYBOARD usage page items into the Processed HID Report structure to * only store KEYBOARD usage page items into the Processed HID Report structure to

@ -73,9 +73,10 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -252,7 +252,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -73,7 +73,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -289,7 +289,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -74,7 +74,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -207,7 +207,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -70,7 +70,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -240,7 +240,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -259,7 +260,7 @@ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
bool IsMouse = false; bool IsMouse = false;

@ -88,9 +88,10 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -211,7 +211,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -73,7 +73,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -236,7 +236,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -74,7 +74,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -205,7 +205,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -70,7 +70,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -182,7 +182,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -70,7 +70,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -123,7 +123,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -79,7 +79,8 @@
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
/* Function Prototypes: */ /* Function Prototypes: */
void SetupHardware(void); void SetupHardware(void);

@ -211,7 +211,8 @@ static void Bluetooth_ProcessIncomingACLPackets(void)
* *
* \return Pointer to the matching channel information structure in the channel table if found, NULL otherwise * \return Pointer to the matching channel information structure in the channel table if found, NULL otherwise
*/ */
Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue, const uint8_t SearchKey) Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue,
const uint8_t SearchKey)
{ {
for (uint8_t i = 0; i < BLUETOOTH_MAX_OPEN_CHANNELS; i++) for (uint8_t i = 0; i < BLUETOOTH_MAX_OPEN_CHANNELS; i++)
{ {
@ -253,7 +254,9 @@ Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue, const
* *
* \return A value from the \ref BT_SendPacket_ErrorCodes_t enum * \return A value from the \ref BT_SendPacket_ErrorCodes_t enum
*/ */
uint8_t Bluetooth_SendPacket(void* Data, const uint16_t DataLen, Bluetooth_Channel_t* const ACLChannel) uint8_t Bluetooth_SendPacket(void* Data,
const uint16_t DataLen,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_ACL_Header_t ACLPacketHeader; BT_ACL_Header_t ACLPacketHeader;
BT_DataPacket_Header_t DataHeader; BT_DataPacket_Header_t DataHeader;

@ -374,7 +374,9 @@ void Bluetooth_HCITask(void)
* *
* \return A value from the USB_Host_SendControlErrorCodes_t enum. * \return A value from the USB_Host_SendControlErrorCodes_t enum.
*/ */
static uint8_t Bluetooth_SendHCICommand(const BT_HCICommand_Header_t* const HCICommandHeader, const void* Parameters, const uint16_t ParameterLength) static uint8_t Bluetooth_SendHCICommand(const BT_HCICommand_Header_t* const HCICommandHeader,
const void* Parameters,
const uint16_t ParameterLength)
{ {
/* Need to reserve the amount of bytes given in the header for the complete payload */ /* Need to reserve the amount of bytes given in the header for the complete payload */
uint8_t CommandBuffer[sizeof(BT_HCICommand_Header_t) + HCICommandHeader->ParameterLength]; uint8_t CommandBuffer[sizeof(BT_HCICommand_Header_t) + HCICommandHeader->ParameterLength];

@ -204,7 +204,8 @@
void Bluetooth_HCITask(void); void Bluetooth_HCITask(void);
#if defined(INCLUDE_FROM_BLUETOOTHHCICOMMANDS_C) #if defined(INCLUDE_FROM_BLUETOOTHHCICOMMANDS_C)
static uint8_t Bluetooth_SendHCICommand(const BT_HCICommand_Header_t* const HCICommandHeader, const void* Parameters, static uint8_t Bluetooth_SendHCICommand(const BT_HCICommand_Header_t* const HCICommandHeader,
const void* Parameters,
const uint16_t ParameterLength); const uint16_t ParameterLength);
#endif #endif

@ -155,13 +155,17 @@
void Bluetooth_ConnectionComplete(void); void Bluetooth_ConnectionComplete(void);
void Bluetooth_DisconnectionComplete(void); void Bluetooth_DisconnectionComplete(void);
bool Bluetooth_ChannelConnectionRequest(const uint16_t PSM); bool Bluetooth_ChannelConnectionRequest(const uint16_t PSM);
void Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const ACLChannel); void Bluetooth_PacketReceived(void* Data, uint16_t DataLen,
Bluetooth_Channel_t* const ACLChannel);
void Bluetooth_ChannelOpened(Bluetooth_Channel_t* const ACLChannel); void Bluetooth_ChannelOpened(Bluetooth_Channel_t* const ACLChannel);
Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue, const uint8_t SearchKey); Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue,
const uint8_t SearchKey);
Bluetooth_Channel_t* Bluetooth_OpenChannel(const uint16_t PSM); Bluetooth_Channel_t* Bluetooth_OpenChannel(const uint16_t PSM);
void Bluetooth_CloseChannel(Bluetooth_Channel_t* const ACLChannel); void Bluetooth_CloseChannel(Bluetooth_Channel_t* const ACLChannel);
uint8_t Bluetooth_SendPacket(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const ACLChannel); uint8_t Bluetooth_SendPacket(void* Data,
uint16_t DataLen,
Bluetooth_Channel_t* const ACLChannel);
/* External Variables: */ /* External Variables: */
extern Bluetooth_Device_t Bluetooth_DeviceConfiguration; extern Bluetooth_Device_t Bluetooth_DeviceConfiguration;

@ -118,7 +118,8 @@ void RFCOMM_ServiceChannels(Bluetooth_Channel_t* const ACLChannel)
* \param[in] Data Incoming packet data containing the RFCOMM packet * \param[in] Data Incoming packet data containing the RFCOMM packet
* \param[in] ACLChannel ACL channel the request was issued to by the remote device * \param[in] ACLChannel ACL channel the request was issued to by the remote device
*/ */
void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const ACLChannel) void RFCOMM_ProcessPacket(void* Data,
Bluetooth_Channel_t* const ACLChannel)
{ {
const RFCOMM_Header_t* FrameHeader = (const RFCOMM_Header_t*)Data; const RFCOMM_Header_t* FrameHeader = (const RFCOMM_Header_t*)Data;
const uint8_t* FrameData = (const uint8_t*)Data + sizeof(RFCOMM_Header_t); const uint8_t* FrameData = (const uint8_t*)Data + sizeof(RFCOMM_Header_t);
@ -154,7 +155,8 @@ void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const ACLChannel)
* \param[in] RFCOMMChannel RFCOMM logical channel whose local terminal signals have changed * \param[in] RFCOMMChannel RFCOMM logical channel whose local terminal signals have changed
* \param[in] ACLChannel ACL channel which has been opened to carry RFCOMM traffic between devices * \param[in] ACLChannel ACL channel which has been opened to carry RFCOMM traffic between devices
*/ */
void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel, Bluetooth_Channel_t* const ACLChannel) void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, ">> MSC Command"); BT_RFCOMM_DEBUG(1, ">> MSC Command");
BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", RFCOMMChannel->DLCI); BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", RFCOMMChannel->DLCI);
@ -184,7 +186,9 @@ void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel, Blue
* \param[in] RFCOMMChannel RFCOMM logical channel which is to be transmitted to * \param[in] RFCOMMChannel RFCOMM logical channel which is to be transmitted to
* \param[in] ACLChannel ACL channel which has been opened to carry RFCOMM traffic between devices * \param[in] ACLChannel ACL channel which has been opened to carry RFCOMM traffic between devices
*/ */
void RFCOMM_SendData(const uint16_t DataLen, const uint8_t* Data, const RFCOMM_Channel_t* const RFCOMMChannel, void RFCOMM_SendData(const uint16_t DataLen,
const uint8_t* Data,
const RFCOMM_Channel_t* const RFCOMMChannel,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
if (RFCOMMChannel->State != RFCOMM_Channel_Open) if (RFCOMMChannel->State != RFCOMM_Channel_Open)
@ -263,8 +267,12 @@ uint16_t RFCOMM_GetVariableFieldValue(const uint8_t** BufferPos)
return (((uint16_t)SecondOctet << 7) | FirstOctet >> 1); return (((uint16_t)SecondOctet << 7) | FirstOctet >> 1);
} }
void RFCOMM_SendFrame(const uint8_t DLCI, const bool CommandResponse, const uint8_t Control, const uint16_t DataLen, void RFCOMM_SendFrame(const uint8_t DLCI,
const void* Data, Bluetooth_Channel_t* const ACLChannel) const bool CommandResponse,
const uint8_t Control,
const uint16_t DataLen,
const void* Data,
Bluetooth_Channel_t* const ACLChannel)
{ {
struct struct
{ {
@ -304,7 +312,8 @@ void RFCOMM_SendFrame(const uint8_t DLCI, const bool CommandResponse, const uint
Bluetooth_SendPacket(&ResponsePacket, sizeof(ResponsePacket), ACLChannel); Bluetooth_SendPacket(&ResponsePacket, sizeof(ResponsePacket), ACLChannel);
} }
static uint8_t RFCOMM_GetFCSValue(const void* FrameStart, uint8_t Length) static uint8_t RFCOMM_GetFCSValue(const void* FrameStart,
uint8_t Length)
{ {
uint8_t FCS = 0xFF; uint8_t FCS = 0xFF;
@ -315,13 +324,15 @@ static uint8_t RFCOMM_GetFCSValue(const void* FrameStart, uint8_t Length)
return ~FCS; return ~FCS;
} }
static void RFCOMM_ProcessDM(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel) static void RFCOMM_ProcessDM(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< DM Received"); BT_RFCOMM_DEBUG(1, "<< DM Received");
BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI); BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI);
} }
static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel) static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< DISC Received"); BT_RFCOMM_DEBUG(1, "<< DISC Received");
BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI); BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI);
@ -336,7 +347,8 @@ static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress, Bluet
RFCOMM_SendFrame(FrameAddress->DLCI, true, (RFCOMM_Frame_UA | FRAME_POLL_FINAL), 0, NULL, ACLChannel); RFCOMM_SendFrame(FrameAddress->DLCI, true, (RFCOMM_Frame_UA | FRAME_POLL_FINAL), 0, NULL, ACLChannel);
} }
static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel) static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< SABM Received"); BT_RFCOMM_DEBUG(1, "<< SABM Received");
BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI); BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI);
@ -375,14 +387,17 @@ static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress, Bluet
} }
} }
static void RFCOMM_ProcessUA(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel) static void RFCOMM_ProcessUA(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< UA Received"); BT_RFCOMM_DEBUG(1, "<< UA Received");
BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI); BT_RFCOMM_DEBUG(2, "-- DLCI 0x%02X", FrameAddress->DLCI);
} }
static void RFCOMM_ProcessUIH(const RFCOMM_Address_t* const FrameAddress, const uint16_t FrameLength, static void RFCOMM_ProcessUIH(const RFCOMM_Address_t* const FrameAddress,
const uint8_t* FrameData, Bluetooth_Channel_t* const ACLChannel) const uint16_t FrameLength,
const uint8_t* FrameData,
Bluetooth_Channel_t* const ACLChannel)
{ {
if (FrameAddress->DLCI == RFCOMM_CONTROL_DLCI) if (FrameAddress->DLCI == RFCOMM_CONTROL_DLCI)
{ {

@ -102,33 +102,48 @@
/* Function Prototypes: */ /* Function Prototypes: */
void RFCOMM_Initialize(void); void RFCOMM_Initialize(void);
void RFCOMM_ServiceChannels(Bluetooth_Channel_t* const ACLChannel); void RFCOMM_ServiceChannels(Bluetooth_Channel_t* const ACLChannel);
void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const ACLChannel); void RFCOMM_ProcessPacket(void* Data,
Bluetooth_Channel_t* const ACLChannel);
void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel, void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
void RFCOMM_SendData(const uint16_t DataLen, const uint8_t* Data, void RFCOMM_SendData(const uint16_t DataLen,
const uint8_t* Data,
const RFCOMM_Channel_t* const RFCOMMChannel, const RFCOMM_Channel_t* const RFCOMMChannel,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
void RFCOMM_ChannelOpened(RFCOMM_Channel_t* const RFCOMMChannel); void RFCOMM_ChannelOpened(RFCOMM_Channel_t* const RFCOMMChannel);
void RFCOMM_DataReceived(RFCOMM_Channel_t* const RFCOMMChannel, uint16_t DataLen, const uint8_t* Data); void RFCOMM_DataReceived(RFCOMM_Channel_t* const RFCOMMChannel,
uint16_t DataLen,
const uint8_t* Data);
void RFCOMM_ChannelSignalsReceived(RFCOMM_Channel_t* const RFCOMMChannel); void RFCOMM_ChannelSignalsReceived(RFCOMM_Channel_t* const RFCOMMChannel);
RFCOMM_Channel_t* RFCOMM_GetFreeChannelEntry(const uint8_t DLCI); RFCOMM_Channel_t* RFCOMM_GetFreeChannelEntry(const uint8_t DLCI);
RFCOMM_Channel_t* RFCOMM_GetChannelData(const uint8_t DLCI); RFCOMM_Channel_t* RFCOMM_GetChannelData(const uint8_t DLCI);
uint16_t RFCOMM_GetVariableFieldValue(const uint8_t** BufferPos); uint16_t RFCOMM_GetVariableFieldValue(const uint8_t** BufferPos);
void RFCOMM_SendFrame(const uint8_t DLCI, const bool CommandResponse, const uint8_t Control, void RFCOMM_SendFrame(const uint8_t DLCI,
const uint16_t DataLen, const void* Data, Bluetooth_Channel_t* const ACLChannel); const bool CommandResponse,
const uint8_t Control,
const uint16_t DataLen,
const void* Data,
Bluetooth_Channel_t* const ACLChannel);
#if defined(INCLUDE_FROM_RFCOMM_C) #if defined(INCLUDE_FROM_RFCOMM_C)
static uint8_t RFCOMM_GetFCSValue(const void* FrameStart, uint8_t Length); static uint8_t RFCOMM_GetFCSValue(const void* FrameStart,
uint8_t Length);
static void RFCOMM_ProcessDM(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel); static void RFCOMM_ProcessDM(const RFCOMM_Address_t* const FrameAddress,
static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessUA(const RFCOMM_Address_t* const FrameAddress, Bluetooth_Channel_t* const ACLChannel); static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress,
static void RFCOMM_ProcessUIH(const RFCOMM_Address_t* const FrameAddress, const uint16_t FrameLength, Bluetooth_Channel_t* const ACLChannel);
const uint8_t* FrameData, Bluetooth_Channel_t* const ACLChannel); static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessUA(const RFCOMM_Address_t* const FrameAddress,
Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessUIH(const RFCOMM_Address_t* const FrameAddress,
const uint16_t FrameLength,
const uint8_t* FrameData,
Bluetooth_Channel_t* const ACLChannel);
#endif #endif
#endif #endif

@ -38,7 +38,8 @@
#define INCLUDE_FROM_RFCOMM_CONTROL_C #define INCLUDE_FROM_RFCOMM_CONTROL_C
#include "RFCOMMControl.h" #include "RFCOMMControl.h"
void RFCOMM_ProcessControlCommand(const uint8_t* Command, Bluetooth_Channel_t* const ACLChannel) void RFCOMM_ProcessControlCommand(const uint8_t* Command,
Bluetooth_Channel_t* const ACLChannel)
{ {
const RFCOMM_Command_t* CommandHeader = (const RFCOMM_Command_t*)Command; const RFCOMM_Command_t* CommandHeader = (const RFCOMM_Command_t*)Command;
const uint8_t* CommandData = (const uint8_t*)Command + sizeof(RFCOMM_Command_t); const uint8_t* CommandData = (const uint8_t*)Command + sizeof(RFCOMM_Command_t);
@ -73,8 +74,10 @@ void RFCOMM_ProcessControlCommand(const uint8_t* Command, Bluetooth_Channel_t* c
} }
} }
static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t CommandDataLen, static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData, Bluetooth_Channel_t* const ACLChannel) const uint8_t CommandDataLen,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel)
{ {
const uint8_t* Params = (const uint8_t*)CommandData; const uint8_t* Params = (const uint8_t*)CommandData;
@ -98,20 +101,24 @@ static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t* const CommandHeade
RFCOMM_SendFrame(RFCOMM_CONTROL_DLCI, false, RFCOMM_Frame_UIH, sizeof(TestResponse), &TestResponse, ACLChannel); RFCOMM_SendFrame(RFCOMM_CONTROL_DLCI, false, RFCOMM_Frame_UIH, sizeof(TestResponse), &TestResponse, ACLChannel);
} }
static void RFCOMM_ProcessFCECommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessFCECommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< FCE Command"); BT_RFCOMM_DEBUG(1, "<< FCE Command");
} }
static void RFCOMM_ProcessFCDCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessFCDCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< FCD Command"); BT_RFCOMM_DEBUG(1, "<< FCD Command");
} }
static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t CommandDataLen, static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData, Bluetooth_Channel_t* const ACLChannel) const uint8_t CommandDataLen,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel)
{ {
const RFCOMM_MSC_Parameters_t* Params = (const RFCOMM_MSC_Parameters_t*)CommandData; const RFCOMM_MSC_Parameters_t* Params = (const RFCOMM_MSC_Parameters_t*)CommandData;
@ -168,19 +175,22 @@ static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t* const CommandHeader
} }
} }
static void RFCOMM_ProcessRPNCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessRPNCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< RPN Command"); BT_RFCOMM_DEBUG(1, "<< RPN Command");
} }
static void RFCOMM_ProcessRLSCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessRLSCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
BT_RFCOMM_DEBUG(1, "<< RLS Command"); BT_RFCOMM_DEBUG(1, "<< RLS Command");
} }
static void RFCOMM_ProcessDPNCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessDPNCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel) Bluetooth_Channel_t* const ACLChannel)
{ {
const RFCOMM_DPN_Parameters_t* Params = (const RFCOMM_DPN_Parameters_t*)CommandData; const RFCOMM_DPN_Parameters_t* Params = (const RFCOMM_DPN_Parameters_t*)CommandData;

@ -115,22 +115,32 @@
} RFCOMM_MSC_Parameters_t; } RFCOMM_MSC_Parameters_t;
/* Function Prototypes: */ /* Function Prototypes: */
void RFCOMM_ProcessControlCommand(const uint8_t* Command, Bluetooth_Channel_t* const Channel); void RFCOMM_ProcessControlCommand(const uint8_t* Command,
Bluetooth_Channel_t* const Channel);
#if defined(INCLUDE_FROM_RFCOMM_CONTROL_C) #if defined(INCLUDE_FROM_RFCOMM_CONTROL_C)
static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t CommandDataLen, static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData, Bluetooth_Channel_t* const ACLChannel); const uint8_t CommandDataLen,
static void RFCOMM_ProcessFCECommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessFCDCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessFCECommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t CommandDataLen, static void RFCOMM_ProcessFCDCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData, Bluetooth_Channel_t* const ACLChannel); const uint8_t* CommandData,
static void RFCOMM_ProcessRPNCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessRLSCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t CommandDataLen,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessDPNCommand(const RFCOMM_Command_t* const CommandHeader, const uint8_t* CommandData, static void RFCOMM_ProcessRPNCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessRLSCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel);
static void RFCOMM_ProcessDPNCommand(const RFCOMM_Command_t* const CommandHeader,
const uint8_t* CommandData,
Bluetooth_Channel_t* const ACLChannel); Bluetooth_Channel_t* const ACLChannel);
#endif #endif

@ -88,7 +88,8 @@ void SDP_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel)
* \param[in] SDPHeader Pointer to the start of the issued SDP request * \param[in] SDPHeader Pointer to the start of the issued SDP request
* \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to * \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to
*/ */
static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel) static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader,
Bluetooth_Channel_t* const Channel)
{ {
const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t)); const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t));
@ -169,7 +170,8 @@ static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader, Blu
* \param[in] SDPHeader Pointer to the start of the issued SDP request * \param[in] SDPHeader Pointer to the start of the issued SDP request
* \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to * \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to
*/ */
static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel) static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader,
Bluetooth_Channel_t* const Channel)
{ {
const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t)); const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t));
@ -259,7 +261,8 @@ static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader,
* \param[in] SDPHeader Pointer to the start of the issued SDP request * \param[in] SDPHeader Pointer to the start of the issued SDP request
* \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to * \param[in] Channel Pointer to the Bluetooth channel structure the request was issued to
*/ */
static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel) static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader,
Bluetooth_Channel_t* const Channel)
{ {
const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t)); const void* CurrentParameter = ((const void*)SDPHeader + sizeof(SDP_PDUHeader_t));
@ -348,8 +351,10 @@ static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHe
* *
* \return Number of bytes added to the output buffer * \return Number of bytes added to the output buffer
*/ */
static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable, uint16_t AttributeList[][2], static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable,
const uint8_t TotalAttributes, void** const BufferPos) uint16_t AttributeList[][2],
const uint8_t TotalAttributes,
void** const BufferPos)
{ {
uint16_t TotalResponseSize; uint16_t TotalResponseSize;
@ -396,7 +401,9 @@ static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t*
* *
* \return Number of bytes added to the response buffer * \return Number of bytes added to the response buffer
*/ */
static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, const void* AttributeValue, void** ResponseBuffer) static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID,
const void* AttributeValue,
void** ResponseBuffer)
{ {
/* Retrieve the size of the attribute value from its container header */ /* Retrieve the size of the attribute value from its container header */
uint8_t AttributeHeaderLength; uint8_t AttributeHeaderLength;
@ -424,7 +431,8 @@ static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, const voi
* *
* \return Pointer to the start of the Attribute's value if found within the table, NULL otherwise * \return Pointer to the start of the Attribute's value if found within the table, NULL otherwise
*/ */
static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable, const uint16_t AttributeID) static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable,
const uint16_t AttributeID)
{ {
void* CurrTableItemData; void* CurrTableItemData;
@ -449,7 +457,8 @@ static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable
* *
* \return True if all the UUIDs given in the UUID list appear in the given attribute table, false otherwise * \return True if all the UUIDs given in the UUID list appear in the given attribute table, false otherwise
*/ */
static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES],
const uint8_t TotalUUIDs,
const ServiceAttributeTable_t* CurrAttributeTable) const ServiceAttributeTable_t* CurrAttributeTable)
{ {
const void* CurrAttribute; const void* CurrAttribute;
@ -481,8 +490,10 @@ static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES], const ui
* *
* \return True if all the UUIDs given in the UUID list appear in the given attribute table, false otherwise * \return True if all the UUIDs given in the UUID list appear in the given attribute table, false otherwise
*/ */
static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES],
uint16_t* const UUIDMatchFlags, const void* CurrAttribute) const uint8_t TotalUUIDs,
uint16_t* const UUIDMatchFlags,
const void* CurrAttribute)
{ {
uint8_t CurrAttributeType = (pgm_read_byte(CurrAttribute) & ~0x07); uint8_t CurrAttributeType = (pgm_read_byte(CurrAttribute) & ~0x07);
@ -536,7 +547,8 @@ static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_
* *
* \return Total number of Attribute ranges stored in the Data Element Sequence * \return Total number of Attribute ranges stored in the Data Element Sequence
*/ */
static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2], const void** const CurrentParameter) static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2],
const void** const CurrentParameter)
{ {
uint8_t ElementHeaderSize; uint8_t ElementHeaderSize;
uint8_t TotalAttributes = 0; uint8_t TotalAttributes = 0;
@ -578,7 +590,8 @@ static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2], const void** co
* *
* \return Total number of UUIDs stored in the Data Element Sequence * \return Total number of UUIDs stored in the Data Element Sequence
*/ */
static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], const void** const CurrentParameter) static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES],
const void** const CurrentParameter)
{ {
uint8_t ElementHeaderSize; uint8_t ElementHeaderSize;
uint8_t TotalUUIDs = 0; uint8_t TotalUUIDs = 0;
@ -629,7 +642,8 @@ static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], const void**
* *
* \return Size in bytes of the entire attribute container, including the header * \return Size in bytes of the entire attribute container, including the header
*/ */
static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData, uint8_t* const HeaderSize) static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData,
uint8_t* const HeaderSize)
{ {
/* Fetch the size of the Data Element structure from the header */ /* Fetch the size of the Data Element structure from the header */
uint8_t SizeIndex = (pgm_read_byte(AttributeData) & 0x07); uint8_t SizeIndex = (pgm_read_byte(AttributeData) & 0x07);
@ -668,7 +682,8 @@ static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeDa
* *
* \return Size in bytes of the Data Element container's contents, minus the header * \return Size in bytes of the Data Element container's contents, minus the header
*/ */
static uint32_t SDP_GetDataElementSize(const void** const DataElementHeader, uint8_t* const ElementHeaderSize) static uint32_t SDP_GetDataElementSize(const void** const DataElementHeader,
uint8_t* const ElementHeaderSize)
{ {
/* Fetch the size of the Data Element structure from the header, increment the current buffer pos */ /* Fetch the size of the Data Element structure from the header, increment the current buffer pos */
uint8_t SizeIndex = (SDP_ReadData8(DataElementHeader) & 0x07); uint8_t SizeIndex = (SDP_ReadData8(DataElementHeader) & 0x07);

@ -110,7 +110,8 @@
* \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in, out] BufferPos Current position in the buffer where the data is to be written to
* \param[in] Data Data to write to the buffer * \param[in] Data Data to write to the buffer
*/ */
static inline void SDP_WriteData8(void** BufferPos, uint8_t Data) static inline void SDP_WriteData8(void** BufferPos,
const uint8_t Data)
{ {
*((uint8_t*)*BufferPos) = Data; *((uint8_t*)*BufferPos) = Data;
*BufferPos += sizeof(uint8_t); *BufferPos += sizeof(uint8_t);
@ -121,7 +122,8 @@
* \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in, out] BufferPos Current position in the buffer where the data is to be written to
* \param[in] Data Data to write to the buffer * \param[in] Data Data to write to the buffer
*/ */
static inline void SDP_WriteData16(void** BufferPos, uint16_t Data) static inline void SDP_WriteData16(void** BufferPos,
const uint16_t Data)
{ {
*((uint16_t*)*BufferPos) = SwapEndian_16(Data); *((uint16_t*)*BufferPos) = SwapEndian_16(Data);
*BufferPos += sizeof(uint16_t); *BufferPos += sizeof(uint16_t);
@ -132,7 +134,8 @@
* \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in, out] BufferPos Current position in the buffer where the data is to be written to
* \param[in] Data Data to write to the buffer * \param[in] Data Data to write to the buffer
*/ */
static inline void SDP_WriteData32(void** BufferPos, uint32_t Data) static inline void SDP_WriteData32(void** BufferPos,
const uint32_t Data)
{ {
*((uint32_t*)*BufferPos) = SwapEndian_32(Data); *((uint32_t*)*BufferPos) = SwapEndian_32(Data);
*BufferPos += sizeof(uint32_t); *BufferPos += sizeof(uint32_t);
@ -203,28 +206,44 @@
} }
/* Function Prototypes: */ /* Function Prototypes: */
void SDP_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel); void SDP_ProcessPacket(void* Data,
Bluetooth_Channel_t* const Channel);
#if defined(INCLUDE_FROM_SERVICEDISCOVERYPROTOCOL_C) #if defined(INCLUDE_FROM_SERVICEDISCOVERYPROTOCOL_C)
static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader,
static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); Bluetooth_Channel_t* const Channel);
static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader,
Bluetooth_Channel_t* const Channel);
static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable, uint16_t AttributeList[][2], static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader,
const uint8_t TotalAttributes, void** const BufferPos); Bluetooth_Channel_t* const Channel);
static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, const void* AttributeValue, void** ResponseBuffer);
static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable, const uint16_t AttributeID); static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable,
uint16_t AttributeList[][2],
static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, const uint8_t TotalAttributes,
void** const BufferPos);
static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID,
const void* AttributeValue,
void** ResponseBuffer);
static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable,
const uint16_t AttributeID);
static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES],
const uint8_t TotalUUIDs,
const ServiceAttributeTable_t* CurrAttributeTable); const ServiceAttributeTable_t* CurrAttributeTable);
static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES],
uint16_t* const UUIDMatchFlags, const void* CurrAttribute); const uint8_t TotalUUIDs,
uint16_t* const UUIDMatchFlags,
static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2], const void** const CurrentParameter); const void* CurrAttribute);
static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], const void** const CurrentParameter);
static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2],
static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData, uint8_t* const HeaderSize); const void** const CurrentParameter);
static uint32_t SDP_GetDataElementSize(const void** const AttributeHeader, uint8_t* const ElementHeaderSize); static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES],
const void** const CurrentParameter);
static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData,
uint8_t* const HeaderSize);
static uint32_t SDP_GetDataElementSize(const void** const AttributeHeader,
uint8_t* const ElementHeaderSize);
#endif #endif
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -169,7 +170,10 @@ void ReadNextReport(void)
* \param[in] ReportType Type of report to send, either REPORT_TYPE_OUT or REPORT_TYPE_FEATURE * \param[in] ReportType Type of report to send, either REPORT_TYPE_OUT or REPORT_TYPE_FEATURE
* \param[in] ReportLength Length of the report to send * \param[in] ReportLength Length of the report to send
*/ */
void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t ReportType, uint16_t ReportLength) void WriteNextReport(uint8_t* ReportOUTData,
const uint8_t ReportIndex,
const uint8_t ReportType,
uint16_t ReportLength)
{ {
/* Select the HID data OUT pipe */ /* Select the HID data OUT pipe */
Pipe_SelectPipe(HID_DATA_OUT_PIPE); Pipe_SelectPipe(HID_DATA_OUT_PIPE);

@ -90,10 +90,14 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ReadNextReport(void); void ReadNextReport(void);
void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t ReportType, uint16_t ReportLength); void WriteNextReport(uint8_t* ReportOUTData,
const uint8_t ReportIndex,
const uint8_t ReportType,
uint16_t ReportLength);
#endif #endif

@ -79,7 +79,7 @@ uint8_t GetHIDReportData(void)
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
bool IsJoystick = false; bool IsJoystick = false;

@ -89,6 +89,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t GetHIDReportData(void); uint8_t GetHIDReportData(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -76,7 +76,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ProcessJoystickReport(uint8_t* JoystickReport); void ProcessJoystickReport(uint8_t* JoystickReport);

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -87,7 +87,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ReadNextReport(void); void ReadNextReport(void);

@ -79,7 +79,7 @@ uint8_t GetHIDReportData(void)
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
/* Check the attributes of the current item - see if we are interested in it or not; /* Check the attributes of the current item - see if we are interested in it or not;
* only store KEYBOARD usage page items into the Processed HID Report structure to * only store KEYBOARD usage page items into the Processed HID Report structure to

@ -77,6 +77,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t GetHIDReportData(void); uint8_t GetHIDReportData(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -71,7 +71,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ProcessKeyboardReport(uint8_t* KeyboardReport); void ProcessKeyboardReport(uint8_t* KeyboardReport);

@ -114,7 +114,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -108,7 +108,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -63,7 +63,8 @@ static uint32_t MassStore_Tag = 1;
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/ */
static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* SCSICommandBlock, void* BufferPtr) static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
void* BufferPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -178,7 +179,8 @@ static uint8_t MassStore_WaitForDataReceived(void)
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/ */
static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* SCSICommandBlock, void* BufferPtr) static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
void* BufferPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
uint16_t BytesRem = SCSICommandBlock->DataTransferLength; uint16_t BytesRem = SCSICommandBlock->DataTransferLength;
@ -233,7 +235,7 @@ static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* SCSICommandBlock
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* SCSICommandStatus) static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -334,7 +336,8 @@ uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex)
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_Inquiry(const uint8_t LUNIndex, SCSI_Inquiry_Response_t* const InquiryPtr) uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
SCSI_Inquiry_Response_t* const InquiryPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -384,7 +387,8 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex, SCSI_Inquiry_Response_t* const
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_RequestSense(const uint8_t LUNIndex, SCSI_Request_Sense_Response_t* const SensePtr) uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
SCSI_Request_Sense_Response_t* const SensePtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -437,8 +441,11 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex, SCSI_Request_Sense_Respon
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress, uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
const uint8_t Blocks, const uint16_t BlockSize, void* BufferPtr) const uint32_t BlockAddress,
const uint8_t Blocks,
const uint16_t BlockSize,
void* BufferPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -495,8 +502,11 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAd
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress, uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
const uint8_t Blocks, const uint16_t BlockSize, void* BufferPtr) const uint32_t BlockAddress,
const uint8_t Blocks,
const uint16_t BlockSize,
void* BufferPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -599,7 +609,8 @@ uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex, SCSI_Capacity_t* const CapacityPtr) uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
SCSI_Capacity_t* const CapacityPtr)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@ -658,7 +669,8 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex, SCSI_Capacity_t* const Ca
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
*/ */
uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex, const bool PreventRemoval) uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
const bool PreventRemoval)
{ {
uint8_t ErrorCode = PIPE_RWSTREAM_NoError; uint8_t ErrorCode = PIPE_RWSTREAM_NoError;

@ -185,25 +185,34 @@
/* Function Prototypes: */ /* Function Prototypes: */
#if defined(INCLUDE_FROM_MASSSTORE_COMMANDS_C) #if defined(INCLUDE_FROM_MASSSTORE_COMMANDS_C)
static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* SCSICommandBlock, void* BufferPtr); static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
void* BufferPtr);
static uint8_t MassStore_WaitForDataReceived(void); static uint8_t MassStore_WaitForDataReceived(void);
static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* SCSICommandBlock, void* BufferPtr) ATTR_NON_NULL_PTR_ARG(1); static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* SCSICommandStatus) ATTR_NON_NULL_PTR_ARG(1); void* BufferPtr) ATTR_NON_NULL_PTR_ARG(1);
static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus) ATTR_NON_NULL_PTR_ARG(1);
#endif #endif
uint8_t MassStore_MassStorageReset(void); uint8_t MassStore_MassStorageReset(void);
uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex); uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex);
uint8_t MassStore_RequestSense(const uint8_t LUNIndex, SCSI_Request_Sense_Response_t* const SensePtr) uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
ATTR_NON_NULL_PTR_ARG(2); SCSI_Request_Sense_Response_t* const SensePtr) ATTR_NON_NULL_PTR_ARG(2);
uint8_t MassStore_Inquiry(const uint8_t LUNIndex, SCSI_Inquiry_Response_t* const InquiryPtr) uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
ATTR_NON_NULL_PTR_ARG(2); SCSI_Inquiry_Response_t* const InquiryPtr) ATTR_NON_NULL_PTR_ARG(2);
uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress, uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
const uint8_t Blocks, const uint16_t BlockSize, void* BufferPtr) ATTR_NON_NULL_PTR_ARG(5); const uint32_t BlockAddress,
uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress, const uint8_t Blocks,
const uint8_t Blocks, const uint16_t BlockSize, void* BufferPtr) ATTR_NON_NULL_PTR_ARG(5); const uint16_t BlockSize,
uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex, SCSI_Capacity_t* const CapacityPtr) void* BufferPtr) ATTR_NON_NULL_PTR_ARG(5);
ATTR_NON_NULL_PTR_ARG(2); uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
const uint32_t BlockAddress,
const uint8_t Blocks,
const uint16_t BlockSize,
void* BufferPtr) ATTR_NON_NULL_PTR_ARG(5);
uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
SCSI_Capacity_t* const CapacityPtr) ATTR_NON_NULL_PTR_ARG(2);
uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex); uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex);
uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex, const bool PreventRemoval); uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
const bool PreventRemoval);
#endif #endif

@ -117,7 +117,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -373,7 +374,8 @@ void MassStorage_Task(void)
* \param[in] CommandString ASCII string located in PROGMEM space indicating what operation failed * \param[in] CommandString ASCII string located in PROGMEM space indicating what operation failed
* \param[in] ErrorCode Error code of the function which failed to complete successfully * \param[in] ErrorCode Error code of the function which failed to complete successfully
*/ */
void ShowDiskReadError(char* CommandString, uint8_t ErrorCode) void ShowDiskReadError(char* CommandString,
const uint8_t ErrorCode)
{ {
if (ErrorCode == MASS_STORE_SCSI_COMMAND_FAILED) if (ErrorCode == MASS_STORE_SCSI_COMMAND_FAILED)
{ {

@ -80,9 +80,11 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ShowDiskReadError(char* CommandString, uint8_t ErrorCode); void ShowDiskReadError(char* CommandString,
const uint8_t ErrorCode);
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -87,7 +87,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ReadNextReport(void); void ReadNextReport(void);

@ -79,7 +79,7 @@ uint8_t GetHIDReportData(void)
* *
* \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded * \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded
*/ */
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem) bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem)
{ {
bool IsMouse = false; bool IsMouse = false;

@ -92,6 +92,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t GetHIDReportData(void); uint8_t GetHIDReportData(void);
bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem); bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* const CurrentItem);
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -76,7 +76,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void ProcessMouseReport(uint8_t* MouseReport); void ProcessMouseReport(uint8_t* MouseReport);

@ -44,7 +44,8 @@
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/ */
uint8_t Printer_SendData(const void* const PrinterCommands, const uint16_t CommandSize) uint8_t Printer_SendData(const void* const PrinterCommands,
const uint16_t CommandSize)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;
@ -74,7 +75,8 @@ uint8_t Printer_SendData(const void* const PrinterCommands, const uint16_t Comma
* *
* \return A value from the USB_Host_SendControlErrorCodes_t enum * \return A value from the USB_Host_SendControlErrorCodes_t enum
*/ */
uint8_t Printer_GetDeviceID(char* DeviceIDString, const uint16_t BufferSize) uint8_t Printer_GetDeviceID(char* DeviceIDString,
const uint16_t BufferSize)
{ {
uint8_t ErrorCode = HOST_SENDCONTROL_Successful; uint8_t ErrorCode = HOST_SENDCONTROL_Successful;
uint16_t DeviceIDStringLength = 0; uint16_t DeviceIDStringLength = 0;

@ -59,9 +59,11 @@
#define PRINTER_DATA_OUT_PIPE 2 #define PRINTER_DATA_OUT_PIPE 2
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t Printer_SendData(const void* const PrinterCommands, const uint16_t CommandSize); uint8_t Printer_SendData(const void* const PrinterCommands,
uint8_t Printer_GetDeviceID(char* DeviceIDString, const uint16_t BufferSize); const uint16_t CommandSize);
uint8_t Printer_GetPortStatus(uint8_t* PortStatus); uint8_t Printer_GetDeviceID(char* DeviceIDString,
const uint16_t BufferSize);
uint8_t Printer_GetPortStatus(uint8_t* const PortStatus);
uint8_t Printer_SoftReset(void); uint8_t Printer_SoftReset(void);
#endif #endif

@ -98,7 +98,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
} }
/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ /** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
void EVENT_USB_Host_HostError(uint8_t ErrorCode) void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
{ {
USB_ShutDown(); USB_ShutDown();
@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(uint8_t ErrorCode, uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -74,8 +74,9 @@
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void EVENT_USB_Host_HostError(uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceEnumerationFailed(uint8_t ErrorCode, uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void SetupHardware(void); void SetupHardware(void);

@ -47,7 +47,8 @@ uint32_t RequestID = 0;
* *
* \return A value from the USB_Host_SendControlErrorCodes_t enum * \return A value from the USB_Host_SendControlErrorCodes_t enum
*/ */
uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer, const uint16_t Length) uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer,
const uint16_t Length)
{ {
USB_ControlRequest = (USB_Request_Header_t) USB_ControlRequest = (USB_Request_Header_t)
{ {
@ -71,7 +72,8 @@ uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer, const uint16_t Length)
* *
* \return A value from the USB_Host_SendControlErrorCodes_t enum * \return A value from the USB_Host_SendControlErrorCodes_t enum
*/ */
uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer, const uint16_t Length) uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer,
const uint16_t Length)
{ {
USB_ControlRequest = (USB_Request_Header_t) USB_ControlRequest = (USB_Request_Header_t)
{ {
@ -128,7 +130,8 @@ uint8_t RNDIS_SendKeepAlive(void)
* \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a * \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a
* logical command failure * logical command failure
*/ */
uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize, uint16_t* const DeviceMaxPacketSize) uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize,
uint16_t* const DeviceMaxPacketSize)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;
@ -172,7 +175,9 @@ uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize, uint16_t* const
* \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a * \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a
* logical command failure * logical command failure
*/ */
uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid, void* Buffer, const uint16_t Length) uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid,
void* Buffer,
const uint16_t Length)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;
@ -222,7 +227,9 @@ uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid, void* Buffer, const uint16_t
* \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a * \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a
* logical command failure * logical command failure
*/ */
uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid, void* Buffer, const uint16_t MaxLength) uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid,
void* Buffer,
const uint16_t MaxLength)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;

@ -200,13 +200,20 @@
#define RNDIS_COMMAND_FAILED 0xC0 #define RNDIS_COMMAND_FAILED 0xC0
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer, const uint16_t Length); uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer,
uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer, const uint16_t Length); const uint16_t Length);
uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer,
const uint16_t Length);
uint8_t RNDIS_SendKeepAlive(void); uint8_t RNDIS_SendKeepAlive(void);
uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize, uint16_t* const DeviceMaxPacketSize); uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize,
uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid, void* Buffer, const uint16_t Length); uint16_t* const DeviceMaxPacketSize);
uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid, void* Buffer, const uint16_t MaxLength); uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid,
void* Buffer,
const uint16_t Length);
uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid,
void* Buffer,
const uint16_t MaxLength);
uint8_t RNDIS_GetPacketLength(uint16_t* const PacketLength); uint8_t RNDIS_GetPacketLength(uint16_t* const PacketLength);
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -91,7 +91,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -198,7 +198,8 @@ uint8_t SImage_ReceiveBlockHeader(void)
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/ */
uint8_t SImage_SendData(void* const Buffer, const uint16_t Bytes) uint8_t SImage_SendData(void* const Buffer,
const uint16_t Bytes)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;
@ -225,7 +226,8 @@ uint8_t SImage_SendData(void* const Buffer, const uint16_t Bytes)
* *
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
*/ */
uint8_t SImage_ReadData(void* const Buffer, const uint16_t Bytes) uint8_t SImage_ReadData(void* const Buffer,
const uint16_t Bytes)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;

@ -108,8 +108,10 @@
void SImage_SendBlockHeader(void); void SImage_SendBlockHeader(void);
uint8_t SImage_ReceiveBlockHeader(void); uint8_t SImage_ReceiveBlockHeader(void);
uint8_t SImage_ReceiveEventHeader(void); uint8_t SImage_ReceiveEventHeader(void);
uint8_t SImage_SendData(void* const Buffer, const uint16_t Bytes); uint8_t SImage_SendData(void* const Buffer,
uint8_t SImage_ReadData(void* const Buffer, const uint16_t Bytes); const uint16_t Bytes);
uint8_t SImage_ReadData(void* const Buffer,
const uint16_t Bytes);
bool SImage_IsEventReceived(void); bool SImage_IsEventReceived(void);
#endif #endif

@ -113,7 +113,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"
@ -339,7 +340,8 @@ void StillImage_Task(void)
* \param[in] UnicodeString Pointer to a Unicode encoded input string * \param[in] UnicodeString Pointer to a Unicode encoded input string
* \param[out] Buffer Pointer to a buffer where the converted ASCII string should be stored * \param[out] Buffer Pointer to a buffer where the converted ASCII string should be stored
*/ */
void UnicodeToASCII(uint8_t* UnicodeString, char* Buffer) void UnicodeToASCII(uint8_t* UnicodeString,
char* Buffer)
{ {
/* Get the number of characters in the string, skip to the start of the string data */ /* Get the number of characters in the string, skip to the start of the string data */
uint8_t CharactersRemaining = *(UnicodeString++); uint8_t CharactersRemaining = *(UnicodeString++);
@ -363,7 +365,8 @@ void UnicodeToASCII(uint8_t* UnicodeString, char* Buffer)
* \param[in] ErrorCode Error code of the function which failed to complete successfully * \param[in] ErrorCode Error code of the function which failed to complete successfully
* \param[in] ResponseCodeError Indicates if the error is due to a command failed indication from the device, or a communication failure * \param[in] ResponseCodeError Indicates if the error is due to a command failed indication from the device, or a communication failure
*/ */
void ShowCommandError(uint8_t ErrorCode, bool ResponseCodeError) void ShowCommandError(uint8_t ErrorCode,
bool ResponseCodeError)
{ {
char* FailureType = ((ResponseCodeError) ? PSTR("Response Code != OK") : PSTR("Transaction Fail")); char* FailureType = ((ResponseCodeError) ? PSTR("Response Code != OK") : PSTR("Transaction Fail"));

@ -76,10 +76,13 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void UnicodeToASCII(uint8_t* restrict UnicodeString, char* restrict Buffer); void UnicodeToASCII(uint8_t* UnicodeString,
void ShowCommandError(uint8_t ErrorCode, bool ResponseCodeError); char* Buffer);
void ShowCommandError(uint8_t ErrorCode,
bool ResponseCodeError);
#endif #endif

@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n" " -- Error Code %d\r\n"

@ -81,7 +81,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -172,7 +172,9 @@ USB_Descriptor_String_t PROGMEM SerialString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -73,7 +73,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -109,8 +109,11 @@ void ISPTarget_ChangeTargetResetLine(const bool ResetTarget)
* \return V2 Protocol status \ref STATUS_CMD_OK if the no timeout occurred, \ref STATUS_RDY_BSY_TOUT or * \return V2 Protocol status \ref STATUS_CMD_OK if the no timeout occurred, \ref STATUS_RDY_BSY_TOUT or
* \ref STATUS_CMD_TOUT otherwise * \ref STATUS_CMD_TOUT otherwise
*/ */
uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress, const uint8_t PollValue, uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
const uint8_t DelayMS, const uint8_t ReadMemCommand) const uint16_t PollAddress,
const uint8_t PollValue,
const uint8_t DelayMS,
const uint8_t ReadMemCommand)
{ {
uint8_t ProgrammingStatus = STATUS_CMD_OK; uint8_t ProgrammingStatus = STATUS_CMD_OK;

@ -65,8 +65,10 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint8_t ISPTarget_GetSPIPrescalerMask(void); uint8_t ISPTarget_GetSPIPrescalerMask(void);
void ISPTarget_ChangeTargetResetLine(const bool ResetTarget); void ISPTarget_ChangeTargetResetLine(const bool ResetTarget);
uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress, uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
const uint8_t PollValue, const uint8_t DelayMS, const uint16_t PollAddress,
const uint8_t PollValue,
const uint8_t DelayMS,
const uint8_t ReadMemCommand); const uint8_t ReadMemCommand);
uint8_t ISPTarget_WaitWhileTargetBusy(void); uint8_t ISPTarget_WaitWhileTargetBusy(void);
void ISPTarget_LoadExtendedAddress(void); void ISPTarget_LoadExtendedAddress(void);

@ -151,7 +151,8 @@ uint8_t V2Params_GetParameterValue(const uint8_t ParamID)
* *
* \return Pointer to the associated parameter information from the parameter table if found, NULL otherwise * \return Pointer to the associated parameter information from the parameter table if found, NULL otherwise
*/ */
void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value) void V2Params_SetParameterValue(const uint8_t ParamID,
const uint8_t Value)
{ {
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID); ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);

@ -75,7 +75,8 @@
uint8_t V2Params_GetParameterPrivileges(const uint8_t ParamID); uint8_t V2Params_GetParameterPrivileges(const uint8_t ParamID);
uint8_t V2Params_GetParameterValue(const uint8_t ParamID); uint8_t V2Params_GetParameterValue(const uint8_t ParamID);
void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value); void V2Params_SetParameterValue(const uint8_t ParamID,
const uint8_t Value);
#if defined(INCLUDE_FROM_V2PROTOCOL_PARAMS_C) #if defined(INCLUDE_FROM_V2PROTOCOL_PARAMS_C)
static ParameterItem_t* V2Params_GetParamFromTable(const uint8_t ParamID); static ParameterItem_t* V2Params_GetParamFromTable(const uint8_t ParamID);

@ -127,7 +127,9 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
* *
* \return Boolean true if the command sequence complete successfully * \return Boolean true if the command sequence complete successfully
*/ */
bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize) bool TINYNVM_ReadMemory(const uint16_t ReadAddress,
uint8_t* ReadBuffer,
uint16_t ReadSize)
{ {
/* Wait until the NVM controller is no longer busy */ /* Wait until the NVM controller is no longer busy */
if (!(TINYNVM_WaitWhileNVMControllerBusy())) if (!(TINYNVM_WaitWhileNVMControllerBusy()))
@ -158,7 +160,9 @@ bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_
* *
* \return Boolean true if the command sequence complete successfully * \return Boolean true if the command sequence complete successfully
*/ */
bool TINYNVM_WriteMemory(const uint16_t WriteAddress, uint8_t* WriteBuffer, uint16_t WriteLength) bool TINYNVM_WriteMemory(const uint16_t WriteAddress,
uint8_t* WriteBuffer,
uint16_t WriteLength)
{ {
/* Wait until the NVM controller is no longer busy */ /* Wait until the NVM controller is no longer busy */
if (!(TINYNVM_WaitWhileNVMControllerBusy())) if (!(TINYNVM_WaitWhileNVMControllerBusy()))
@ -203,7 +207,8 @@ bool TINYNVM_WriteMemory(const uint16_t WriteAddress, uint8_t* WriteBuffer, uint
* *
* \return Boolean true if the command sequence complete successfully * \return Boolean true if the command sequence complete successfully
*/ */
bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint16_t Address) bool TINYNVM_EraseMemory(const uint8_t EraseCommand,
const uint16_t Address)
{ {
/* Wait until the NVM controller is no longer busy */ /* Wait until the NVM controller is no longer busy */
if (!(TINYNVM_WaitWhileNVMControllerBusy())) if (!(TINYNVM_WaitWhileNVMControllerBusy()))

@ -64,9 +64,14 @@
/* Function Prototypes: */ /* Function Prototypes: */
bool TINYNVM_WaitWhileNVMBusBusy(void); bool TINYNVM_WaitWhileNVMBusBusy(void);
bool TINYNVM_WaitWhileNVMControllerBusy(void); bool TINYNVM_WaitWhileNVMControllerBusy(void);
bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadLength); bool TINYNVM_ReadMemory(const uint16_t ReadAddress,
bool TINYNVM_WriteMemory(const uint16_t WriteAddress, uint8_t* WriteBuffer, uint16_t WriteLength); uint8_t* ReadBuffer,
bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint16_t Address); uint16_t ReadLength);
bool TINYNVM_WriteMemory(const uint16_t WriteAddress,
uint8_t* WriteBuffer,
uint16_t WriteLength);
bool TINYNVM_EraseMemory(const uint8_t EraseCommand,
const uint16_t Address);
#if (defined(INCLUDE_FROM_TINYNVM_C) && defined(ENABLE_XPROG_PROTOCOL)) #if (defined(INCLUDE_FROM_TINYNVM_C) && defined(ENABLE_XPROG_PROTOCOL))
static void TINYNVM_SendReadNVMRegister(const uint8_t Address); static void TINYNVM_SendReadNVMRegister(const uint8_t Address);

@ -212,7 +212,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -100,7 +100,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{ {
@ -141,7 +142,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_Insert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_Insert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
*Buffer->In = Data; *Buffer->In = Data;

@ -283,7 +283,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -75,7 +75,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -176,7 +176,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -82,7 +82,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -48,7 +48,9 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -182,7 +184,9 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -290,7 +294,9 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInf
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, const uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -389,7 +395,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -67,13 +67,17 @@
/* Function Prototypes: */ /* Function Prototypes: */
#if defined(USB_CAN_BE_DEVICE) #if defined(USB_CAN_BE_DEVICE)
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);
bool DataflashManager_CheckDataflashOperation(void); bool DataflashManager_CheckDataflashOperation(void);

@ -248,7 +248,8 @@ static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
* \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with * \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with
* \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE) * \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE)
*/ */
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead) static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead)
{ {
uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]); uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]);
uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]); uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]);

@ -80,7 +80,8 @@
static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead); static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead);
#endif #endif
#endif #endif

@ -87,7 +87,8 @@
PORTC = (PORTC & ~LEDS_ALL_LEDS) | LEDMask; PORTC = (PORTC & ~LEDS_ALL_LEDS) | LEDMask;
} }
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask)
{ {
PORTC = (PORTC & ~LEDMask) | ActiveMask; PORTC = (PORTC & ~LEDMask) | ActiveMask;
} }

@ -224,7 +224,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -196,7 +196,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -64,7 +64,8 @@
#define KEYBOARD_EPSIZE 8 #define KEYBOARD_EPSIZE 8
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -50,7 +50,8 @@ void BitBuffer_Init(BitBuffer_t* const Buffer)
} }
/** Function to store the given bit into the given bit buffer. */ /** Function to store the given bit into the given bit buffer. */
void BitBuffer_StoreNextBit(BitBuffer_t* const Buffer, const bool Bit) void BitBuffer_StoreNextBit(BitBuffer_t* const Buffer,
const bool Bit)
{ {
/* If the bit to store is true, set the next bit in the buffer */ /* If the bit to store is true, set the next bit in the buffer */
if (Bit) if (Bit)

@ -82,7 +82,8 @@
* \param[in,out] Buffer Bit buffer to store a bit into * \param[in,out] Buffer Bit buffer to store a bit into
* \param[in] Bit Bit to store into the buffer * \param[in] Bit Bit to store into the buffer
*/ */
void BitBuffer_StoreNextBit(BitBuffer_t* const Buffer, const bool Bit) ATTR_NON_NULL_PTR_ARG(1); void BitBuffer_StoreNextBit(BitBuffer_t* const Buffer,
const bool Bit) ATTR_NON_NULL_PTR_ARG(1);
/** Retrieves a bit from the next location inside a given bit buffer. /** Retrieves a bit from the next location inside a given bit buffer.
* *

@ -171,8 +171,11 @@ void EVENT_USB_Device_StartOfFrame(void)
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData; USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
@ -210,8 +213,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to the report buffer where the received report is stored * \param[in] ReportData Pointer to the report buffer where the received report is stored
* \param[in] ReportSize Size in bytes of the report received from the host * \param[in] ReportSize Size in bytes of the report received from the host
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
// Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports
} }

@ -75,9 +75,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
void EVENT_USB_Device_StartOfFrame(void); void EVENT_USB_Device_StartOfFrame(void);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -151,7 +151,8 @@ void Read_Joystick_Status(void)
* \param[in] Report Report data to send. * \param[in] Report Report data to send.
* \param[in] ReportSize Report length in bytes. * \param[in] ReportSize Report length in bytes.
*/ */
void Send_Command_Report(uint8_t* const Report, const uint16_t ReportSize) void Send_Command_Report(uint8_t* const Report,
const uint16_t ReportSize)
{ {
memcpy(CmdBuffer, Report, 8); memcpy(CmdBuffer, Report, 8);
WriteNextReport(CmdBuffer, ReportSize); WriteNextReport(CmdBuffer, ReportSize);
@ -212,7 +213,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device. * enumerating an attached USB device.
*/ */
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_ERROR); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
} }
@ -245,7 +247,8 @@ void DiscardNextReport(void)
* \param[in] ReportOUTData Buffer containing the report to send to the device * \param[in] ReportOUTData Buffer containing the report to send to the device
* \param[in] ReportLength Length of the report to send * \param[in] ReportLength Length of the report to send
*/ */
void WriteNextReport(uint8_t* const ReportOUTData, const uint16_t ReportLength) void WriteNextReport(uint8_t* const ReportOUTData,
const uint16_t ReportLength)
{ {
/* Select and unfreeze HID data OUT pipe */ /* Select and unfreeze HID data OUT pipe */
Pipe_SelectPipe(HID_DATA_OUT_PIPE); Pipe_SelectPipe(HID_DATA_OUT_PIPE);

@ -82,7 +82,8 @@
void SetupHardware(void); void SetupHardware(void);
void Read_Joystick_Status(void); void Read_Joystick_Status(void);
void Send_Command_Report(uint8_t* const Report, const uint16_t ReportSize); void Send_Command_Report(uint8_t* const Report,
const uint16_t ReportSize);
void Send_Command(uint8_t* const Command); void Send_Command(uint8_t* const Command);
void HID_Host_Task(void); void HID_Host_Task(void);
@ -90,10 +91,12 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
void DiscardNextReport(void); void DiscardNextReport(void);
void WriteNextReport(uint8_t* const ReportOUTData, const uint16_t ReportLength); void WriteNextReport(uint8_t* const ReportOUTData,
const uint16_t ReportLength);
#endif #endif

@ -153,7 +153,9 @@ USB_Descriptor_String_t PROGMEM RelayBoard_SerialString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -54,6 +54,8 @@
} RelayBoard_USB_Descriptor_Configuration_t; } RelayBoard_USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress); uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress);
#endif #endif

@ -237,7 +237,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -54,7 +54,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -7,7 +7,9 @@
#include "DS1307.h" #include "DS1307.h"
void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year) void DS1307_SetDate(const uint8_t Day,
const uint8_t Month,
const uint8_t Year)
{ {
#if defined(DUMMY_RTC) #if defined(DUMMY_RTC)
return; return;
@ -32,7 +34,9 @@ void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year)
} }
} }
void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second) void DS1307_SetTime(const uint8_t Hour,
const uint8_t Minute,
const uint8_t Second)
{ {
#if defined(DUMMY_RTC) #if defined(DUMMY_RTC)
return; return;
@ -59,7 +63,9 @@ void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second)
} }
} }
void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year) void DS1307_GetDate(uint8_t* const Day,
uint8_t* const Month,
uint8_t* const Year)
{ {
#if defined(DUMMY_RTC) #if defined(DUMMY_RTC)
*Day = 1; *Day = 1;
@ -91,7 +97,9 @@ void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year)
*Year = (CurrentRTCDate.Byte3.Fields.TenYear * 10) + CurrentRTCDate.Byte3.Fields.Year; *Year = (CurrentRTCDate.Byte3.Fields.TenYear * 10) + CurrentRTCDate.Byte3.Fields.Year;
} }
void DS1307_GetTime(uint8_t* Hour, uint8_t* Minute, uint8_t* Second) void DS1307_GetTime(uint8_t* const Hour,
uint8_t* const Minute,
uint8_t* const Second)
{ {
#if defined(DUMMY_RTC) #if defined(DUMMY_RTC)
*Hour = 1; *Hour = 1;

@ -100,10 +100,17 @@
#define DS1307_ADDRESS_WRITE 0b11010000 #define DS1307_ADDRESS_WRITE 0b11010000
/* Function Prototypes: */ /* Function Prototypes: */
void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year); void DS1307_SetDate(const uint8_t Day,
void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second); const uint8_t Month,
const uint8_t Year);
void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year); void DS1307_SetTime(const uint8_t Hour,
void DS1307_GetTime(uint8_t* Hour, uint8_t* Minute, uint8_t* Second); const uint8_t Minute,
const uint8_t Second);
void DS1307_GetDate(uint8_t* const Day,
uint8_t* const Month,
uint8_t* const Year);
void DS1307_GetTime(uint8_t* const Hour,
uint8_t* const Minute,
uint8_t* const Second);
#endif #endif

@ -47,7 +47,9 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -181,7 +183,9 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -289,7 +293,9 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInf
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, const uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -388,7 +394,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -67,13 +67,17 @@
#define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE) #define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE)
/* Function Prototypes: */ /* Function Prototypes: */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);
bool DataflashManager_CheckDataflashOperation(void); bool DataflashManager_CheckDataflashOperation(void);

@ -247,7 +247,8 @@ static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
* \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with * \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with
* \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE) * \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE)
*/ */
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead) static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead)
{ {
uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]); uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]);
uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]); uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]);

@ -80,7 +80,8 @@
static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead); static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead);
#endif #endif
#endif #endif

@ -279,8 +279,11 @@ bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSI
* *
* \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
*/ */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{ {
Device_Report_t* ReportParams = (Device_Report_t*)ReportData; Device_Report_t* ReportParams = (Device_Report_t*)ReportData;
@ -301,8 +304,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
* \param[in] ReportData Pointer to a buffer where the created report has been stored * \param[in] ReportData Pointer to a buffer where the created report has been stored
* \param[in] ReportSize Size in bytes of the received HID report * \param[in] ReportSize Size in bytes of the received HID report
*/ */
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize) const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{ {
Device_Report_t* ReportParams = (Device_Report_t*)ReportData; Device_Report_t* ReportParams = (Device_Report_t*)ReportData;

@ -105,9 +105,15 @@
void EVENT_USB_Device_UnhandledControlRequest(void); void EVENT_USB_Device_UnhandledControlRequest(void);
bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize); uint8_t* const ReportID,
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType,
const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize); void* ReportData,
uint16_t* const ReportSize);
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize);
#endif #endif

@ -224,7 +224,9 @@ USB_Descriptor_String_t PROGMEM ProductString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,7 +77,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -100,7 +100,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{ {
@ -141,7 +142,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_Insert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_Insert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
*Buffer->In = Data; *Buffer->In = Data;

@ -66,7 +66,8 @@
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -176,7 +176,9 @@ void DHCPClientApp_Callback(void)
* *
* \return Size in bytes of the created DHCP packet * \return Size in bytes of the created DHCP packet
*/ */
static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* const DHCPHeader, const uint8_t DHCPMessageType, uip_udp_appstate_t* AppState) static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* const DHCPHeader,
const uint8_t DHCPMessageType,
uip_udp_appstate_t* const AppState)
{ {
/* Erase existing packet data so that we start will all 0x00 DHCP header data */ /* Erase existing packet data so that we start will all 0x00 DHCP header data */
memset(DHCPHeader, 0, sizeof(DHCP_Header_t)); memset(DHCPHeader, 0, sizeof(DHCP_Header_t));
@ -215,7 +217,10 @@ static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* const DHCPHeader, co
* *
* \return Number of bytes added to the DHCP packet * \return Number of bytes added to the DHCP packet
*/ */
static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData) static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList,
const uint8_t Option,
const uint8_t DataLen,
void* const OptionData)
{ {
/* Skip through the DHCP options list until the terminator option is found */ /* Skip through the DHCP options list until the terminator option is found */
while (*DHCPOptionList != DHCP_OPTION_END) while (*DHCPOptionList != DHCP_OPTION_END)
@ -239,7 +244,9 @@ static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option,
* *
* \return Boolean true if the option was found in the DHCP packet's options list, false otherwise * \return Boolean true if the option was found in the DHCP packet's options list, false otherwise
*/ */
static bool DHCPClientApp_GetOption(const uint8_t* DHCPOptionList, const uint8_t Option, void* const Destination) static bool DHCPClientApp_GetOption(const uint8_t* DHCPOptionList,
const uint8_t Option,
void* const Destination)
{ {
/* Look through the incoming DHCP packet's options list for the requested option */ /* Look through the incoming DHCP packet's options list for the requested option */
while (*DHCPOptionList != DHCP_OPTION_END) while (*DHCPOptionList != DHCP_OPTION_END)

@ -160,10 +160,15 @@
void DHCPClientApp_Callback(void); void DHCPClientApp_Callback(void);
#if defined(INCLUDE_FROM_DHCPCLIENTAPP_C) #if defined(INCLUDE_FROM_DHCPCLIENTAPP_C)
static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* const DHCPHeader, const uint8_t DHCPMessageType, static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* const DHCPHeader,
uip_udp_appstate_t* AppState); const uint8_t DHCPMessageType,
static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, uip_udp_appstate_t* const AppState);
void* OptionData); static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList,
static bool DHCPClientApp_GetOption(const uint8_t* DHCPOptionList, const uint8_t Option, void* const Destination); const uint8_t Option,
const uint8_t DataLen,
void* const OptionData);
static bool DHCPClientApp_GetOption(const uint8_t* DHCPOptionList,
const uint8_t Option,
void* const Destination);
#endif #endif
#endif #endif

@ -47,7 +47,9 @@
* \param[in] BlockAddress Data block starting address for the write sequence * \param[in] BlockAddress Data block starting address for the write sequence
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
*/ */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -181,7 +183,9 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceIn
* \param[in] BlockAddress Data block starting address for the read sequence * \param[in] BlockAddress Data block starting address for the read sequence
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
*/ */
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, uint16_t TotalBlocks) void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -289,7 +293,9 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInf
* \param[in] TotalBlocks Number of blocks of data to write * \param[in] TotalBlocks Number of blocks of data to write
* \param[in] BufferPtr Pointer to the data source RAM buffer * \param[in] BufferPtr Pointer to the data source RAM buffer
*/ */
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, const uint8_t* BufferPtr) void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);
@ -388,7 +394,9 @@ void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t Tota
* \param[in] TotalBlocks Number of blocks of data to read * \param[in] TotalBlocks Number of blocks of data to read
* \param[out] BufferPtr Pointer to the data destination RAM buffer * \param[out] BufferPtr Pointer to the data destination RAM buffer
*/ */
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, uint8_t* BufferPtr) void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr)
{ {
uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE); uint16_t CurrDFPage = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) / DATAFLASH_PAGE_SIZE);
uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE); uint16_t CurrDFPageByte = ((BlockAddress * VIRTUAL_MEMORY_BLOCK_SIZE) % DATAFLASH_PAGE_SIZE);

@ -66,13 +66,17 @@
#define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE) #define VIRTUAL_MEMORY_BLOCKS (VIRTUAL_MEMORY_BYTES / VIRTUAL_MEMORY_BLOCK_SIZE)
/* Function Prototypes: */ /* Function Prototypes: */
void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const uint32_t BlockAddress, void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const uint32_t BlockAddress,
uint16_t TotalBlocks); uint16_t TotalBlocks);
void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_WriteBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); const uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress, uint16_t TotalBlocks, void DataflashManager_ReadBlocks_RAM(const uint32_t BlockAddress,
uint16_t TotalBlocks,
uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3); uint8_t* BufferPtr) ATTR_NON_NULL_PTR_ARG(3);
void DataflashManager_ResetDataflashProtections(void); void DataflashManager_ResetDataflashProtections(void);
bool DataflashManager_CheckDataflashOperation(void); bool DataflashManager_CheckDataflashOperation(void);

@ -247,7 +247,8 @@ static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
* \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with * \param[in] MSInterfaceInfo Pointer to the Mass Storage class interface structure that the command is associated with
* \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE) * \param[in] IsDataRead Indicates if the command is a READ (10) command or WRITE (10) command (DATA_READ or DATA_WRITE)
*/ */
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead) static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead)
{ {
uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]); uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[2]);
uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]); uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&MSInterfaceInfo->State.CommandBlock.SCSICommandData[7]);

@ -79,7 +79,8 @@
static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); static void SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, const bool IsDataRead); static void SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo,
const bool IsDataRead);
#endif #endif
#endif #endif

@ -52,7 +52,8 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode); void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void); void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif #endif

@ -172,7 +172,9 @@ USB_Descriptor_String_t PROGMEM AVRISP_SerialString =
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*/ */
uint16_t AVRISP_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t AVRISP_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -73,6 +73,8 @@
} AVRISP_USB_Descriptor_Configuration_t; } AVRISP_USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t AVRISP_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress); uint16_t AVRISP_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress);
#endif #endif

@ -100,7 +100,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_AtomicInsert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{ {
@ -141,7 +142,8 @@
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
* \param[in] Data Data element to insert into the buffer * \param[in] Data Data element to insert into the buffer
*/ */
static inline void RingBuffer_Insert(RingBuff_t* const Buffer, RingBuff_Data_t Data) static inline void RingBuffer_Insert(RingBuff_t* const Buffer,
const RingBuff_Data_t Data)
{ {
*Buffer->In = Data; *Buffer->In = Data;

@ -221,7 +221,9 @@ USB_Descriptor_String_t PROGMEM USART_ProductString =
/** Descriptor retrieval function for the USART Bridge descriptors. This function is in turn called by the GetDescriptor /** Descriptor retrieval function for the USART Bridge descriptors. This function is in turn called by the GetDescriptor
* callback function in the main source file, to retrieve the device's descriptors when in USART bridge mode. * callback function in the main source file, to retrieve the device's descriptors when in USART bridge mode.
*/ */
uint16_t USART_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t USART_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF); const uint8_t DescriptorNumber = (wValue & 0xFF);

@ -77,6 +77,8 @@
} USART_USB_Descriptor_Configuration_t; } USART_USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t USART_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress); uint16_t USART_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress);
#endif #endif

@ -240,8 +240,16 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
* USB host. * USB host.
*
* \param[in] wValue Descriptor type and index to retrieve
* \param[in] wIndex Sub-index to retrieve (such as a localized string language)
* \param[out] DescriptorAddress Address of the retrieved descriptor
*
* \return Length of the retrieved descriptor in bytes, or NO_DESCRIPTOR if the descriptor was not found
*/ */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
{ {
/* Return the correct descriptors based on the selected mode */ /* Return the correct descriptors based on the selected mode */
if (CurrentFirmwareMode == MODE_USART_BRIDGE) if (CurrentFirmwareMode == MODE_USART_BRIDGE)

@ -93,6 +93,8 @@
void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress); uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

Loading…
Cancel
Save