Build options complete & tested:

- Implement SCSI WP flag in mode parameter header
 - Refactor #ifdef names
 - #ifdef out more HID code
USG_1.0
Robert Fisk 7 years ago
parent 2cd86a7201
commit cf1d5da8e8

@ -1,5 +1,5 @@
/* /*
* options.h * build_config.h
* *
* Created on: Jun 20, 2017 * Created on: Jun 20, 2017
* Author: Robert Fisk * Author: Robert Fisk
@ -9,16 +9,15 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. * file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/ */
#ifndef INC_OPTIONS_H_ #ifndef INC_BUILD_CONFIG_H_
#define INC_OPTIONS_H_ #define INC_BUILD_CONFIG_H_
#define ENABLE_MASS_STORAGE #define CONFIG_MASS_STORAGE_ENABLED
#define ENABLE_KEYBOARD #define CONFIG_MASS_STORAGE_WRITES_PERMITTED
#define ENABLE_MOUSE
#define MASS_STORAGE_WRITES_PERMITTED #define CONFIG_KEYBOARD_ENABLED
#define CONFIG_MOUSE_ENABLED
#endif /* INC_BUILD_CONFIG_H_ */
#endif /* INC_OPTIONS_H_ */

@ -43,10 +43,10 @@
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbh_hid.h" #include "usbh_hid.h"
#include "options.h" #include "build_config.h"
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
/** @addtogroup USBH_LIB /** @addtogroup USBH_LIB
* @{ * @{
@ -161,14 +161,14 @@ static USBH_StatusTypeDef USBH_HID_InterfaceInit (USBH_HandleTypeDef *phost)
HID_Handle->state = HID_ERROR; HID_Handle->state = HID_ERROR;
/*Decode Bootclass Protocol: Mouse or Keyboard*/ /*Decode Bootclass Protocol: Mouse or Keyboard*/
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol == HID_KEYBRD_BOOT_CODE) if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol == HID_KEYBRD_BOOT_CODE)
{ {
USBH_UsrLog ("KeyBoard device found!"); USBH_UsrLog ("KeyBoard device found!");
} }
else else
#endif #endif
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol == HID_MOUSE_BOOT_CODE) if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol == HID_MOUSE_BOOT_CODE)
{ {
USBH_UsrLog ("Mouse device found!"); USBH_UsrLog ("Mouse device found!");
@ -844,7 +844,7 @@ __weak void USBH_HID_EventCallback(USBH_HandleTypeDef *phost)
} }
#endif //#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #endif //#if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
/** /**
* @} * @}

@ -46,10 +46,10 @@
#include "usbh_msc_bot.h" #include "usbh_msc_bot.h"
#include "usbh_msc_scsi.h" #include "usbh_msc_scsi.h"
#include "interrupts.h" #include "interrupts.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup USBH_LIB /** @addtogroup USBH_LIB
* @{ * @{
*/ */
@ -496,7 +496,7 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
error = USBH_OK; error = USBH_OK;
break; break;
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
case MSC_WRITE: case MSC_WRITE:
#endif #endif
case MSC_READ: case MSC_READ:
@ -574,7 +574,7 @@ static USBH_StatusTypeDef USBH_MSC_RdWrProcess(USBH_HandleTypeDef *phost, uint8_
#endif #endif
break; break;
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
case MSC_WRITE: case MSC_WRITE:
scsi_status = USBH_MSC_SCSI_Write(phost,lun, 0, 0) ; scsi_status = USBH_MSC_SCSI_Write(phost,lun, 0, 0) ;
@ -596,7 +596,7 @@ static USBH_StatusTypeDef USBH_MSC_RdWrProcess(USBH_HandleTypeDef *phost, uint8_
osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0); osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0);
#endif #endif
break; break;
#endif //#ifdef MASS_STORAGE_WRITES_PERMITTED #endif //#ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
case MSC_REQUEST_SENSE: case MSC_REQUEST_SENSE:
scsi_status = USBH_MSC_SCSI_RequestSense(phost, lun, &MSC_Handle->unit[lun].sense); scsi_status = USBH_MSC_SCSI_RequestSense(phost, lun, &MSC_Handle->unit[lun].sense);
@ -762,7 +762,7 @@ USBH_StatusTypeDef USBH_MSC_Read(USBH_HandleTypeDef *phost,
* @param length: number of sector to write * @param length: number of sector to write
* @retval USBH Status * @retval USBH Status
*/ */
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost, USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost,
uint8_t lun, uint8_t lun,
uint32_t address, uint32_t address,
@ -791,9 +791,9 @@ USBH_StatusTypeDef USBH_MSC_Write(USBH_HandleTypeDef *phost,
length); length);
return USBH_OK; return USBH_OK;
} }
#endif //#ifdef MASS_STORAGE_WRITES_PERMITTED #endif //#ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}

@ -34,10 +34,10 @@
#include "downstream_spi.h" #include "downstream_spi.h"
#include "downstream_msc.h" #include "downstream_msc.h"
#include "downstream_statemachine.h" #include "downstream_statemachine.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
static USBH_StatusTypeDef USBH_MSC_BOT_Abort(USBH_HandleTypeDef *phost, uint8_t lun, uint8_t dir); static USBH_StatusTypeDef USBH_MSC_BOT_Abort(USBH_HandleTypeDef *phost, uint8_t lun, uint8_t dir);
static BOT_CSWStatusTypeDef USBH_MSC_DecodeCSW(USBH_HandleTypeDef *phost); static BOT_CSWStatusTypeDef USBH_MSC_DecodeCSW(USBH_HandleTypeDef *phost);
@ -301,7 +301,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
MSC_Handle->OutPipe, MSC_Handle->OutPipe,
1); 1);
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
else else
{ {
//Asynchronous multi-packet operation: get first packet //Asynchronous multi-packet operation: get first packet
@ -330,7 +330,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
//Simple single-buffer operation: everything must fit in one URB //Simple single-buffer operation: everything must fit in one URB
MSC_Handle->hbot.state = BOT_RECEIVE_CSW; MSC_Handle->hbot.state = BOT_RECEIVE_CSW;
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
else else
{ {
//Asynchronous multi-packet operation //Asynchronous multi-packet operation
@ -372,7 +372,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
{ {
MSC_Handle->hbot.state = BOT_DATA_OUT; MSC_Handle->hbot.state = BOT_DATA_OUT;
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
else else
{ {
//Increment counters by the amount of data actually transferred during the NAK'd URB //Increment counters by the amount of data actually transferred during the NAK'd URB
@ -522,7 +522,7 @@ void USBH_MSC_BOT_Read_Multipacket_PrepareURB(USBH_HandleTypeDef *phost)
MSC_Handle->InPipe); MSC_Handle->InPipe);
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDef* receivedPacket, void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDef* receivedPacket,
uint16_t dataLength) uint16_t dataLength)
{ {
@ -709,7 +709,7 @@ static BOT_CSWStatusTypeDef USBH_MSC_DecodeCSW(USBH_HandleTypeDef *phost)
return status; return status;
} }
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}

@ -32,10 +32,10 @@
#include "usbh_msc.h" #include "usbh_msc.h"
#include "usbh_msc_scsi.h" #include "usbh_msc_scsi.h"
#include "usbh_msc_bot.h" #include "usbh_msc_bot.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup USBH_LIB /** @addtogroup USBH_LIB
* @{ * @{
@ -325,7 +325,7 @@ USBH_StatusTypeDef USBH_MSC_SCSI_RequestSense (USBH_HandleTypeDef *phost,
* @param length: number of sector to write * @param length: number of sector to write
* @retval USBH Status * @retval USBH Status
*/ */
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
USBH_StatusTypeDef USBH_MSC_SCSI_Write(USBH_HandleTypeDef *phost, USBH_StatusTypeDef USBH_MSC_SCSI_Write(USBH_HandleTypeDef *phost,
uint8_t lun, uint8_t lun,
uint32_t address, uint32_t address,
@ -431,7 +431,7 @@ USBH_StatusTypeDef USBH_MSC_SCSI_Read(USBH_HandleTypeDef *phost,
return error; return error;
} }
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}

@ -15,10 +15,10 @@
#include "downstream_statemachine.h" #include "downstream_statemachine.h"
#include "usbh_hid.h" #include "usbh_hid.h"
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
#include "options.h" #include "build_config.h"
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
extern USBH_HandleTypeDef hUsbHostFS; //Hard-link ourselves to usb_host.c extern USBH_HandleTypeDef hUsbHostFS; //Hard-link ourselves to usb_host.c
extern InterfaceCommandClassTypeDef ConfiguredDeviceClass; //Do a cheap hard-link to downstream_statemachine.c, rather than keep a duplicate here extern InterfaceCommandClassTypeDef ConfiguredDeviceClass; //Do a cheap hard-link to downstream_statemachine.c, rather than keep a duplicate here
@ -54,7 +54,7 @@ InterfaceCommandClassTypeDef Downstream_HID_ApproveConnectedDevice(void)
{ {
HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData; HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
if (HID_Handle->Protocol == HID_MOUSE_BOOT_CODE) if (HID_Handle->Protocol == HID_MOUSE_BOOT_CODE)
{ {
if (Downstream_HID_Mouse_ParseReportDescriptor() == HAL_OK) if (Downstream_HID_Mouse_ParseReportDescriptor() == HAL_OK)
@ -63,7 +63,7 @@ InterfaceCommandClassTypeDef Downstream_HID_ApproveConnectedDevice(void)
} }
} }
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
if (HID_Handle->Protocol == HID_KEYBRD_BOOT_CODE) if (HID_Handle->Protocol == HID_KEYBRD_BOOT_CODE)
{ {
return COMMAND_CLASS_HID_KEYBOARD; //success! return COMMAND_CLASS_HID_KEYBOARD; //success!
@ -75,7 +75,7 @@ InterfaceCommandClassTypeDef Downstream_HID_ApproveConnectedDevice(void)
} }
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
static HAL_StatusTypeDef Downstream_HID_Mouse_ParseReportDescriptor(void) static HAL_StatusTypeDef Downstream_HID_Mouse_ParseReportDescriptor(void)
{ {
uint32_t currentReportBitIndex = 0; uint32_t currentReportBitIndex = 0;
@ -229,7 +229,6 @@ static HAL_StatusTypeDef Downstream_HID_Mouse_ParseReportDescriptor(void)
return HAL_OK; return HAL_OK;
} }
#endif
//Retrieves the next item in the HID report, and at most one of its associated data bytes. //Retrieves the next item in the HID report, and at most one of its associated data bytes.
@ -269,6 +268,7 @@ static HAL_StatusTypeDef Downstream_HID_GetNextReportItem(void)
ReportDataPointer += itemLength; ReportDataPointer += itemLength;
return HAL_OK; return HAL_OK;
} }
#endif
@ -286,6 +286,7 @@ void Downstream_HID_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
return; return;
} }
#ifdef CONFIG_KEYBOARD_ENABLED
if (receivedPacket->Command == COMMAND_HID_SET_REPORT) if (receivedPacket->Command == COMMAND_HID_SET_REPORT)
{ {
if ((ConfiguredDeviceClass != COMMAND_CLASS_HID_KEYBOARD) || if ((ConfiguredDeviceClass != COMMAND_CLASS_HID_KEYBOARD) ||
@ -304,6 +305,7 @@ void Downstream_HID_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
Downstream_PacketProcessor_NotifyDisconnectReplyRequired(); Downstream_PacketProcessor_NotifyDisconnectReplyRequired();
return; return;
} }
#endif
//else: //else:
Downstream_PacketProcessor_FreakOut(); Downstream_PacketProcessor_FreakOut();
@ -319,7 +321,7 @@ void Downstream_HID_InterruptReportCallback(USBH_StatusTypeDef result)
if (result == USBH_OK) if (result == USBH_OK)
{ {
//Data received from device //Data received from device
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
if (ConfiguredDeviceClass == COMMAND_CLASS_HID_MOUSE) if (ConfiguredDeviceClass == COMMAND_CLASS_HID_MOUSE)
{ {
Downstream_HID_Mouse_ExtractDataFromReport(freePacket); Downstream_HID_Mouse_ExtractDataFromReport(freePacket);
@ -327,7 +329,7 @@ void Downstream_HID_InterruptReportCallback(USBH_StatusTypeDef result)
} }
else else
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
if (ConfiguredDeviceClass == COMMAND_CLASS_HID_KEYBOARD) if (ConfiguredDeviceClass == COMMAND_CLASS_HID_KEYBOARD)
{ {
Downstream_HID_Keyboard_ExtractDataFromReport(freePacket); Downstream_HID_Keyboard_ExtractDataFromReport(freePacket);
@ -354,7 +356,7 @@ void Downstream_HID_InterruptReportCallback(USBH_StatusTypeDef result)
} }
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
static void Downstream_HID_Mouse_ExtractDataFromReport(DownstreamPacketTypeDef* packetToSend) static void Downstream_HID_Mouse_ExtractDataFromReport(DownstreamPacketTypeDef* packetToSend)
{ {
HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData; HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
@ -403,7 +405,7 @@ static uint8_t Downstream_HID_Mouse_Extract8BitValue(HID_HandleTypeDef* hidHandl
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
static void Downstream_HID_Keyboard_ExtractDataFromReport(DownstreamPacketTypeDef* packetToSend) static void Downstream_HID_Keyboard_ExtractDataFromReport(DownstreamPacketTypeDef* packetToSend)
{ {
HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData; HID_HandleTypeDef* HID_Handle = (HID_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
@ -441,5 +443,5 @@ void Downstream_HID_SendReportCallback(USBH_StatusTypeDef result)
} }
#endif //#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #endif //#if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)

@ -15,10 +15,10 @@
#include "downstream_statemachine.h" #include "downstream_statemachine.h"
#include "downstream_spi.h" #include "downstream_spi.h"
#include "usbh_msc.h" #include "usbh_msc.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
extern USBH_HandleTypeDef hUsbHostFS; //Hard-link ourselves to usb_host.c extern USBH_HandleTypeDef hUsbHostFS; //Hard-link ourselves to usb_host.c
@ -80,7 +80,7 @@ void Downstream_MSC_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
Downstream_MSC_PacketProcessor_BeginRead(receivedPacket); Downstream_MSC_PacketProcessor_BeginRead(receivedPacket);
break; break;
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
case COMMAND_MSC_WRITE: case COMMAND_MSC_WRITE:
Downstream_MSC_PacketProcessor_BeginWrite(receivedPacket); Downstream_MSC_PacketProcessor_BeginWrite(receivedPacket);
break; break;
@ -172,7 +172,7 @@ void Downstream_MSC_PacketProcessor_RdWrCompleteCallback(USBH_StatusTypeDef resu
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* receivedPacket) void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* receivedPacket)
{ {
uint64_t writeBlockAddress; uint64_t writeBlockAddress;
@ -238,7 +238,7 @@ HAL_StatusTypeDef Downstream_MSC_PutStreamDataPacket(DownstreamPacketTypeDef* pa
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
//Used by USB MSC host driver //Used by USB MSC host driver
HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacketTypeDef callback) HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacketTypeDef callback)
{ {
@ -290,7 +290,7 @@ void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* receive
} }
} }
#endif //#ifdef MASS_STORAGE_WRITES_PERMITTED #endif //#ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED

@ -19,7 +19,7 @@
#include "usbh_msc.h" #include "usbh_msc.h"
#include "usbh_hid.h" #include "usbh_hid.h"
#include "led.h" #include "led.h"
#include "options.h" #include "build_config.h"
DownstreamStateTypeDef DownstreamState = STATE_DEVICE_NOT_READY; DownstreamStateTypeDef DownstreamState = STATE_DEVICE_NOT_READY;
@ -89,17 +89,17 @@ void Downstream_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
switch (ConfiguredDeviceClass) switch (ConfiguredDeviceClass)
{ {
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
case COMMAND_CLASS_MASS_STORAGE: case COMMAND_CLASS_MASS_STORAGE:
Downstream_MSC_PacketProcessor(receivedPacket); Downstream_MSC_PacketProcessor(receivedPacket);
break; break;
#endif #endif
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
case COMMAND_CLASS_HID_MOUSE: case COMMAND_CLASS_HID_MOUSE:
Downstream_HID_PacketProcessor(receivedPacket); Downstream_HID_PacketProcessor(receivedPacket);
break; break;
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
case COMMAND_CLASS_HID_KEYBOARD: case COMMAND_CLASS_HID_KEYBOARD:
Downstream_HID_PacketProcessor(receivedPacket); Downstream_HID_PacketProcessor(receivedPacket);
break; break;
@ -242,12 +242,12 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
{ {
switch (phost->pActiveClass->ClassCode) switch (phost->pActiveClass->ClassCode)
{ {
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
case USB_MSC_CLASS: case USB_MSC_CLASS:
newActiveClass = Downstream_MSC_ApproveConnectedDevice(); newActiveClass = Downstream_MSC_ApproveConnectedDevice();
break; break;
#endif #endif
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
case USB_HID_CLASS: case USB_HID_CLASS:
newActiveClass = Downstream_HID_ApproveConnectedDevice(); newActiveClass = Downstream_HID_ApproveConnectedDevice();
break; break;

@ -40,7 +40,8 @@
#include "usbh_msc.h" #include "usbh_msc.h"
#include "usbh_hid.h" #include "usbh_hid.h"
#include "downstream_statemachine.h" #include "downstream_statemachine.h"
#include "options.h" #include "build_config.h"
/* USB Host Core handle declaration */ /* USB Host Core handle declaration */
USBH_HandleTypeDef hUsbHostFS; USBH_HandleTypeDef hUsbHostFS;
@ -52,10 +53,10 @@ void USB_Host_Init(void)
/* Init Host Library,Add Supported Class and Start the library*/ /* Init Host Library,Add Supported Class and Start the library*/
USBH_Init(&hUsbHostFS, Downstream_HostUserCallback, HOST_FS); USBH_Init(&hUsbHostFS, Downstream_HostUserCallback, HOST_FS);
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS); USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS);
#endif #endif
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
USBH_RegisterClass(&hUsbHostFS, USBH_HID_CLASS); USBH_RegisterClass(&hUsbHostFS, USBH_HID_CLASS);
#endif #endif

@ -1,5 +1,5 @@
/* /*
* options.h * build_config.h
* *
* Created on: Jun 20, 2017 * Created on: Jun 20, 2017
* Author: Robert Fisk * Author: Robert Fisk
@ -9,16 +9,15 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. * file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/ */
#ifndef INC_OPTIONS_H_ #ifndef INC_BUILD_CONFIG_H_
#define INC_OPTIONS_H_ #define INC_BUILD_CONFIG_H_
#define ENABLE_MASS_STORAGE #define CONFIG_MASS_STORAGE_ENABLED
#define ENABLE_KEYBOARD //#define CONFIG_MASS_STORAGE_WRITES_PERMITTED
#define ENABLE_MOUSE
#define MASS_STORAGE_WRITES_PERMITTED #define CONFIG_KEYBOARD_ENABLED
//#define CONFIG_MOUSE_ENABLED
#endif /* INC_BUILD_CONFIG_H_ */
#endif /* INC_OPTIONS_H_ */

@ -52,10 +52,10 @@
#include "usbd_hid.h" #include "usbd_hid.h"
#include "usbd_ctlreq.h" #include "usbd_ctlreq.h"
#include "upstream_hid.h" #include "upstream_hid.h"
#include "options.h" #include "build_config.h"
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
@ -79,10 +79,10 @@ static uint8_t USBD_HID_SendReport (uint8_t *report,
static uint8_t USBD_HID_EP0RxReady(USBD_HandleTypeDef *pdev); static uint8_t USBD_HID_EP0RxReady(USBD_HandleTypeDef *pdev);
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
#define USBD_PID_MOUSE 0x0002 #define USBD_PID_MOUSE 0x0002
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
#define USBD_PID_KEYBOARD 0x0003 #define USBD_PID_KEYBOARD 0x0003
#endif #endif
@ -194,7 +194,7 @@ __ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_
0x00, 0x00,
}; };
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END = __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{ {
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
@ -239,7 +239,7 @@ __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] _
}; };
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
__ALIGN_BEGIN static uint8_t HID_KEYBOARD_ReportDesc[HID_KEYBOARD_REPORT_DESC_SIZE] __ALIGN_END = { __ALIGN_BEGIN static uint8_t HID_KEYBOARD_ReportDesc[HID_KEYBOARD_REPORT_DESC_SIZE] __ALIGN_END = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard) 0x09, 0x06, // USAGE (Keyboard)
@ -301,7 +301,7 @@ uint8_t OutReportSize;
* @param cfgidx: Configuration index * @param cfgidx: Configuration index
* @retval status * @retval status
*/ */
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
void USBD_HID_PreinitMouse(void) void USBD_HID_PreinitMouse(void)
{ {
ActiveReportDescriptor = HID_MOUSE_ReportDesc; ActiveReportDescriptor = HID_MOUSE_ReportDesc;
@ -318,7 +318,7 @@ void USBD_HID_PreinitMouse(void)
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
void USBD_HID_PreinitKeyboard(void) void USBD_HID_PreinitKeyboard(void)
{ {
ActiveReportDescriptor = HID_KEYBOARD_ReportDesc; ActiveReportDescriptor = HID_KEYBOARD_ReportDesc;
@ -617,7 +617,7 @@ static uint8_t USBD_HID_EP0RxReady(USBD_HandleTypeDef *pdev)
while(1); while(1);
} }
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
Upstream_HID_RequestSendControlReport(OutReportPacket, OutReportSize); Upstream_HID_RequestSendControlReport(OutReportPacket, OutReportSize);
Upstream_ReleasePacket(OutReportPacket); Upstream_ReleasePacket(OutReportPacket);
OutReportPacket = NULL; OutReportPacket = NULL;
@ -625,7 +625,7 @@ static uint8_t USBD_HID_EP0RxReady(USBD_HandleTypeDef *pdev)
return USBD_OK; return USBD_OK;
} }
#endif //#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #endif //#if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
/** /**
* @} * @}

@ -46,10 +46,10 @@
#include <upstream_interface_def.h> #include <upstream_interface_def.h>
#include <upstream_spi.h> #include <upstream_spi.h>
#include "usbd_msc.h" #include "usbd_msc.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup STM32_USB_DEVICE_LIBRARY /** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ * @{
@ -609,7 +609,7 @@ uint8_t *USBD_MSC_GetDeviceQualifierDescriptor (uint16_t *length)
return USBD_MSC_DeviceQualifierDesc; return USBD_MSC_DeviceQualifierDesc;
} }
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**

@ -32,10 +32,10 @@
#include "usbd_msc.h" #include "usbd_msc.h"
#include "usbd_msc_scsi.h" #include "usbd_msc_scsi.h"
#include "usbd_ioreq.h" #include "usbd_ioreq.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup STM32_USB_DEVICE_LIBRARY /** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ * @{
@ -428,7 +428,7 @@ void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, uint8_t epnum)
} }
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}
*/ */

@ -27,10 +27,10 @@
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_msc_data.h" #include "usbd_msc_data.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup STM32_USB_DEVICE_LIBRARY /** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ * @{
@ -81,30 +81,36 @@ const uint8_t MSC_Page00_Inquiry_Data[] = {//7
0x80, 0x80,
0x83 0x83
}; };
/* USB Mass storage sense 6 Data */ /* USB Mass storage sense 6 Data */
const uint8_t MSC_Mode_Sense6_data[] = { const uint8_t MSC_Mode_Sense6_data[] = {
0x00, 0x03, //Mode data length
0x00, 0x00, //Medium type, direct-access block devices = 0
0x00, #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
0x00, 0x00, //Device-specific parameter, WP is bit 7
0x00, #else
0x00, 0x80, //Device-specific parameter, WP is bit 7
0x00, #endif
0x00 0x00 //Block descriptor length
}; };
/* USB Mass storage sense 10 Data */ /* USB Mass storage sense 10 Data */
const uint8_t MSC_Mode_Sense10_data[] = { const uint8_t MSC_Mode_Sense10_data[] = {
0x00, 0x00, //Mode data length, big endian
0x06, 0x06, //Mode data length, big endian
0x00, 0x00, //Medium type, direct-access block devices = 0
0x00, #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
0x00, 0x00, //Device-specific parameter, WP is bit 7
0x00, #else
0x00, 0x80, //Device-specific parameter, WP is bit 7
0x00 #endif
0x00, //Reserved
0x00, //Reserved
0x00, //Block descriptor length, big endian
0x00 //Block descriptor length, big endian
}; };
#endif //ifdef ENABLE_MASS_STORAGE #endif //ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}

@ -36,10 +36,10 @@
#include "usbd_msc.h" #include "usbd_msc.h"
#include "usbd_msc_data.h" #include "usbd_msc_data.h"
#include "usbd_descriptors.h" #include "usbd_descriptors.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
/** @addtogroup STM32_USB_DEVICE_LIBRARY /** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ * @{
@ -195,7 +195,7 @@ void SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
return; return;
case SCSI_WRITE10: case SCSI_WRITE10:
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
SCSI_Write10(); SCSI_Write10();
#else #else
SCSI_SenseCode(pdev, SCSI_SenseCode(pdev,
@ -428,7 +428,7 @@ void SCSI_ReadFormatCapacityCallback(UpstreamPacketTypeDef* upstreamPacket,
*/ */
static void SCSI_ModeSense6 (void) static void SCSI_ModeSense6 (void)
{ {
uint16_t len = 8; uint16_t len = 4;
UpstreamPacketTypeDef* freePacket; UpstreamPacketTypeDef* freePacket;
freePacket = Upstream_GetFreePacketImmediately(); freePacket = Upstream_GetFreePacketImmediately();
@ -681,7 +681,7 @@ void SCSI_Read10ReplyCallback(UpstreamPacketTypeDef* upstreamPacket,
* @param params: Command parameters * @param params: Command parameters
* @retval status * @retval status
*/ */
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
static void SCSI_Write10(void) static void SCSI_Write10(void)
{ {
uint32_t dataLength; uint32_t dataLength;
@ -870,7 +870,7 @@ static int8_t SCSI_CheckAddressRange (uint32_t blk_offset , uint16_t blk_nbr)
return 0; return 0;
} }
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED
/** /**
* @} * @}
*/ */

@ -13,16 +13,16 @@
#include "upstream_hid.h" #include "upstream_hid.h"
#include "upstream_interface_def.h" #include "upstream_interface_def.h"
#include "options.h" #include "build_config.h"
#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)
UpstreamPacketTypeDef* UpstreamHidPacket = NULL; UpstreamPacketTypeDef* UpstreamHidPacket = NULL;
UpstreamHidGetReportCallback GetReportCallback = NULL; UpstreamHidGetReportCallback GetReportCallback = NULL;
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
KeyboardOutStateTypeDef KeyboardOutDataState = KEYBOARD_OUT_STATE_IDLE; KeyboardOutStateTypeDef KeyboardOutDataState = KEYBOARD_OUT_STATE_IDLE;
uint8_t KeyboardOutData[HID_KEYBOARD_OUTPUT_DATA_LEN]; uint8_t KeyboardOutData[HID_KEYBOARD_OUTPUT_DATA_LEN];
#endif #endif
@ -47,7 +47,7 @@ void Upstream_HID_DeInit(void)
GetReportCallback = NULL; GetReportCallback = NULL;
GetReportLoopIsRunning = 0; GetReportLoopIsRunning = 0;
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
KeyboardOutDataState = KEYBOARD_OUT_STATE_IDLE; KeyboardOutDataState = KEYBOARD_OUT_STATE_IDLE;
#endif #endif
} }
@ -142,7 +142,7 @@ static void Upstream_HID_ReceiveInterruptReportCallback(UpstreamPacketTypeDef* r
} }
else else
{ {
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
if (activeClass == COMMAND_CLASS_HID_MOUSE) if (activeClass == COMMAND_CLASS_HID_MOUSE)
{ {
if (receivedPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + ((HID_MOUSE_INPUT_DATA_LEN + 1) / 2))) if (receivedPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + ((HID_MOUSE_INPUT_DATA_LEN + 1) / 2)))
@ -170,7 +170,7 @@ static void Upstream_HID_ReceiveInterruptReportCallback(UpstreamPacketTypeDef* r
} }
else else
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
if (activeClass == COMMAND_CLASS_HID_KEYBOARD) if (activeClass == COMMAND_CLASS_HID_KEYBOARD)
{ {
if (receivedPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + ((HID_KEYBOARD_INPUT_DATA_LEN + 1) / 2))) if (receivedPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + ((HID_KEYBOARD_INPUT_DATA_LEN + 1) / 2)))
@ -229,7 +229,7 @@ static void Upstream_HID_ReceiveInterruptReportCallback(UpstreamPacketTypeDef* r
if (GetReportLoopIsRunning) if (GetReportLoopIsRunning)
{ {
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
//Check if we need to send OUT data to the keyboard before requesting next Interrupt IN data //Check if we need to send OUT data to the keyboard before requesting next Interrupt IN data
if (KeyboardOutDataState == KEYBOARD_OUT_STATE_DATA_READY) if (KeyboardOutDataState == KEYBOARD_OUT_STATE_DATA_READY)
{ {
@ -245,7 +245,7 @@ static void Upstream_HID_ReceiveInterruptReportCallback(UpstreamPacketTypeDef* r
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
void Upstream_HID_RequestSendControlReport(UpstreamPacketTypeDef* packetToSend, uint8_t dataLength) void Upstream_HID_RequestSendControlReport(UpstreamPacketTypeDef* packetToSend, uint8_t dataLength)
{ {
InterfaceCommandClassTypeDef activeClass; InterfaceCommandClassTypeDef activeClass;
@ -324,5 +324,5 @@ static void Upstream_HID_SendControlReportCallback(UpstreamPacketTypeDef* receiv
} }
#endif #endif
#endif //#if defined (ENABLE_KEYBOARD) || defined (ENABLE_MOUSE) #endif //#if defined (CONFIG_KEYBOARD_ENABLED) || defined (CONFIG_MOUSE_ENABLED)

@ -15,10 +15,10 @@
#include "upstream_spi.h" #include "upstream_spi.h"
#include "upstream_statemachine.h" #include "upstream_statemachine.h"
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
#include "options.h" #include "build_config.h"
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
//Stuff we need to save for our callbacks to use: //Stuff we need to save for our callbacks to use:
@ -279,7 +279,7 @@ void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket
} }
#ifdef MASS_STORAGE_WRITES_PERMITTED #ifdef CONFIG_MASS_STORAGE_WRITES_PERMITTED
HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback, HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback,
uint64_t writeBlockStart, uint64_t writeBlockStart,
uint32_t writeBlockCount) uint32_t writeBlockCount)
@ -371,5 +371,5 @@ HAL_StatusTypeDef Upstream_MSC_PutStreamDataPacket(UpstreamPacketTypeDef* packet
} }
#endif #endif
#endif //#ifdef ENABLE_MASS_STORAGE #endif //#ifdef CONFIG_MASS_STORAGE_ENABLED

@ -17,7 +17,7 @@
#include "usbd_core.h" #include "usbd_core.h"
#include "usbd_msc.h" #include "usbd_msc.h"
#include "usbd_hid.h" #include "usbd_hid.h"
#include "options.h" #include "build_config.h"
UpstreamStateTypeDef UpstreamState = STATE_TEST_INTERFACE; UpstreamStateTypeDef UpstreamState = STATE_TEST_INTERFACE;
@ -182,20 +182,20 @@ void Upstream_StateMachine_NotifyDeviceReplyCallback(UpstreamPacketTypeDef* repl
switch (replyPacket->Data[0]) switch (replyPacket->Data[0])
{ {
#ifdef ENABLE_MASS_STORAGE #ifdef CONFIG_MASS_STORAGE_ENABLED
case COMMAND_CLASS_MASS_STORAGE: case COMMAND_CLASS_MASS_STORAGE:
newActiveClass = COMMAND_CLASS_MASS_STORAGE; newActiveClass = COMMAND_CLASS_MASS_STORAGE;
newClassPointer = &USBD_MSC; newClassPointer = &USBD_MSC;
break; break;
#endif #endif
#ifdef ENABLE_MOUSE #ifdef CONFIG_MOUSE_ENABLED
case COMMAND_CLASS_HID_MOUSE: case COMMAND_CLASS_HID_MOUSE:
newActiveClass = COMMAND_CLASS_HID_MOUSE; newActiveClass = COMMAND_CLASS_HID_MOUSE;
newClassPointer = &USBD_HID; newClassPointer = &USBD_HID;
USBD_HID_PreinitMouse(); USBD_HID_PreinitMouse();
break; break;
#endif #endif
#ifdef ENABLE_KEYBOARD #ifdef CONFIG_KEYBOARD_ENABLED
case COMMAND_CLASS_HID_KEYBOARD: case COMMAND_CLASS_HID_KEYBOARD:
newActiveClass = COMMAND_CLASS_HID_KEYBOARD; newActiveClass = COMMAND_CLASS_HID_KEYBOARD;
newClassPointer = &USBD_HID; newClassPointer = &USBD_HID;

Loading…
Cancel
Save