mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-11-29 07:24:13 +01:00
A few updates for including PIOS_USB_HID into PIOS_COM.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@187 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
484ad3ecfa
commit
4eedbd854d
@ -71,13 +71,13 @@ int32_t PIOS_COM_SendBufferNonBlocking(COMPortTypeDef port, uint8_t *buffer, uin
|
|||||||
{
|
{
|
||||||
/* Branch depending on selected port */
|
/* Branch depending on selected port */
|
||||||
switch(port) {
|
switch(port) {
|
||||||
case COM_DEBUG_UART:
|
case COM_DEBUG_USART:
|
||||||
return PIOS_USART_TxBufferPutMoreNonBlocking(COM_DEBUG_PORT, buffer, len);
|
return PIOS_USART_TxBufferPutMoreNonBlocking(COM_DEBUG_PORT, buffer, len);
|
||||||
case COM_GPS_UART:
|
case COM_GPS_USART:
|
||||||
return PIOS_USART_TxBufferPutMoreNonBlocking(GPS, buffer, len);
|
return PIOS_USART_TxBufferPutMoreNonBlocking(GPS, buffer, len);
|
||||||
case COM_TELEM_UART:
|
case COM_TELEM_USART:
|
||||||
return PIOS_USART_TxBufferPutMoreNonBlocking(TELEM, buffer, len);
|
return PIOS_USART_TxBufferPutMoreNonBlocking(TELEM, buffer, len);
|
||||||
case COM_AUX_UART:
|
case COM_AUX_USART:
|
||||||
return PIOS_USART_TxBufferPutMoreNonBlocking(AUX, buffer, len);
|
return PIOS_USART_TxBufferPutMoreNonBlocking(AUX, buffer, len);
|
||||||
case COM_USB_HID:
|
case COM_USB_HID:
|
||||||
return PIOS_USB_HID_TxBufferPutMoreNonBlocking(buffer, len);
|
return PIOS_USB_HID_TxBufferPutMoreNonBlocking(buffer, len);
|
||||||
@ -100,13 +100,13 @@ int32_t PIOS_COM_SendBuffer(COMPortTypeDef port, uint8_t *buffer, uint16_t len)
|
|||||||
{
|
{
|
||||||
/* Branch depending on selected port */
|
/* Branch depending on selected port */
|
||||||
switch(port) {
|
switch(port) {
|
||||||
case COM_DEBUG_UART:
|
case COM_DEBUG_USART:
|
||||||
return PIOS_USART_TxBufferPutMore(COM_DEBUG_PORT, buffer, len);
|
return PIOS_USART_TxBufferPutMore(COM_DEBUG_PORT, buffer, len);
|
||||||
case COM_GPS_UART:
|
case COM_GPS_USART:
|
||||||
return PIOS_USART_TxBufferPutMore(GPS, buffer, len);
|
return PIOS_USART_TxBufferPutMore(GPS, buffer, len);
|
||||||
case COM_TELEM_UART:
|
case COM_TELEM_USART:
|
||||||
return PIOS_USART_TxBufferPutMore(TELEM, buffer, len);
|
return PIOS_USART_TxBufferPutMore(TELEM, buffer, len);
|
||||||
case COM_AUX_UART:
|
case COM_AUX_USART:
|
||||||
return PIOS_USART_TxBufferPutMore(AUX, buffer, len);
|
return PIOS_USART_TxBufferPutMore(AUX, buffer, len);
|
||||||
case COM_USB_HID:
|
case COM_USB_HID:
|
||||||
return PIOS_USB_HID_TxBufferPutMore(buffer, len);
|
return PIOS_USB_HID_TxBufferPutMore(buffer, len);
|
||||||
@ -240,21 +240,21 @@ int32_t PIOS_COM_ReceiveHandler(void)
|
|||||||
/* it would also improve this spagetthi code ;) */
|
/* it would also improve this spagetthi code ;) */
|
||||||
int32_t status = -1;
|
int32_t status = -1;
|
||||||
switch(intf++) {
|
switch(intf++) {
|
||||||
case COM_DEBUG_UART:
|
case COM_DEBUG_USART:
|
||||||
status = PIOS_USART_RxBufferGet(COM_DEBUG_PORT);
|
status = PIOS_USART_RxBufferGet(COM_DEBUG_PORT);
|
||||||
port = COM_DEBUG_UART;
|
port = COM_DEBUG_USART;
|
||||||
break;
|
break;
|
||||||
case COM_GPS_UART:
|
case COM_GPS_USART:
|
||||||
status = PIOS_USART_RxBufferGet(GPS);
|
status = PIOS_USART_RxBufferGet(GPS);
|
||||||
port = COM_GPS_UART;
|
port = COM_GPS_USART;
|
||||||
break;
|
break;
|
||||||
case COM_TELEM_UART:
|
case COM_TELEM_USART:
|
||||||
status = PIOS_USART_RxBufferGet(TELEM);
|
status = PIOS_USART_RxBufferGet(TELEM);
|
||||||
port = COM_TELEM_UART;
|
port = COM_TELEM_USART;
|
||||||
break;
|
break;
|
||||||
case COM_AUX_UART:
|
case COM_AUX_USART:
|
||||||
status = PIOS_USART_RxBufferGet(AUX);
|
status = PIOS_USART_RxBufferGet(AUX);
|
||||||
port = COM_AUX_UART;
|
port = COM_AUX_USART;
|
||||||
break;
|
break;
|
||||||
case COM_USB_HID:
|
case COM_USB_HID:
|
||||||
status = PIOS_USB_HID_RxBufferGet();
|
status = PIOS_USB_HID_RxBufferGet();
|
||||||
|
@ -46,7 +46,7 @@ static void printchar(char **str, int c)
|
|||||||
++(*str);
|
++(*str);
|
||||||
}
|
}
|
||||||
|
|
||||||
else PIOS_COM_SendChar(COM_DEBUG_UART, c); // (void)putchar(c);
|
else PIOS_COM_SendChar(COM_DEBUG_USART, c); // (void)putchar(c);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,16 +60,9 @@ void PIOS_SYS_Init(void)
|
|||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||||
|
|
||||||
/* Ensure that pull-down is active on USB detach pin */
|
/* Ensure that pull-up is active on detect pin */
|
||||||
GPIO_InitStructure.GPIO_Pin = 0xffff & ~USB_PULLUP_PIN;
|
|
||||||
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
|
|
||||||
GPIO_InitStructure.GPIO_Pin = USB_PULLUP_PIN;
|
|
||||||
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
|
||||||
|
|
||||||
/* And pull-up for detect pin */
|
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
GPIO_InitStructure.GPIO_Pin = USB_PULLUP_PIN;
|
GPIO_InitStructure.GPIO_Pin = USB_DETECT_PIN;
|
||||||
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
/* Initialize Basic NVIC */
|
/* Initialize Basic NVIC */
|
||||||
|
@ -278,24 +278,6 @@ int32_t PIOS_USB_Init(uint32_t mode)
|
|||||||
/* Force USB reset and power-down (this will also release the USB pins for direct GPIO control) */
|
/* Force USB reset and power-down (this will also release the USB pins for direct GPIO control) */
|
||||||
_SetCNTR(CNTR_FRES | CNTR_PDWN);
|
_SetCNTR(CNTR_FRES | CNTR_PDWN);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Disabled because it doesn't work, hardware needs to be looked into */
|
|
||||||
/* Configure USB disconnect pin */
|
|
||||||
/* first we hold it low for ca. 50 mS to force a re-enumeration */
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
|
||||||
GPIO_StructInit(&GPIO_InitStructure);
|
|
||||||
GPIO_InitStructure.GPIO_Pin = USB_PULLUP_PIN;
|
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
||||||
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
|
||||||
|
|
||||||
GPIO_SetBits(USB_ACC_GPIO_PORT, USB_PULLUP_PIN);
|
|
||||||
PIOS_DELAY_WaitmS(50);
|
|
||||||
|
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
|
|
||||||
GPIO_Init(USB_ACC_GPIO_PORT, &GPIO_InitStructure);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Using a "dirty" method to force a re-enumeration: */
|
/* Using a "dirty" method to force a re-enumeration: */
|
||||||
/* Force DPM (Pin PA12) low for ca. 10 mS before USB Tranceiver will be enabled */
|
/* Force DPM (Pin PA12) low for ca. 10 mS before USB Tranceiver will be enabled */
|
||||||
/* This overrules the external Pull-Up at PA12, and at least Windows & MacOS will enumerate again */
|
/* This overrules the external Pull-Up at PA12, and at least Windows & MacOS will enumerate again */
|
||||||
@ -306,8 +288,6 @@ int32_t PIOS_USB_Init(uint32_t mode)
|
|||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
GPIO_ResetBits(USB_ACC_GPIO_PORT, USB_PULLUP_PIN);
|
|
||||||
|
|
||||||
PIOS_DELAY_WaitmS(50);
|
PIOS_DELAY_WaitmS(50);
|
||||||
|
|
||||||
/* Release power-down, still hold reset */
|
/* Release power-down, still hold reset */
|
||||||
@ -386,6 +366,16 @@ int32_t PIOS_USB_IsInitialized(void)
|
|||||||
return GetEPType(ENDP0) ? 1 : 0;
|
return GetEPType(ENDP0) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads the USB detect pin to determine if a USB cable is connected
|
||||||
|
* \return 0 if cable not connected
|
||||||
|
* \return 1 if cable is connected
|
||||||
|
*/
|
||||||
|
int32_t PIOS_USB_CableConnected(void)
|
||||||
|
{
|
||||||
|
return GPIO_ReadInputDataBit(USB_ACC_GPIO_PORT, USB_DETECT_PIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hooks of STM32 USB library
|
* Hooks of STM32 USB library
|
||||||
|
@ -242,7 +242,6 @@
|
|||||||
//-------------------------
|
//-------------------------
|
||||||
#define USB_ACC_GPIO_PORT GPIOC
|
#define USB_ACC_GPIO_PORT GPIOC
|
||||||
#define USB_DETECT_PIN GPIO_Pin_4
|
#define USB_DETECT_PIN GPIO_Pin_4
|
||||||
#define USB_PULLUP_PIN GPIO_Pin_14
|
|
||||||
#define PIOS_IRQ_USB_PRIORITY IRQ_PRIO_MID
|
#define PIOS_IRQ_USB_PRIORITY IRQ_PRIO_MID
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
@ -29,10 +29,10 @@
|
|||||||
|
|
||||||
/* Global Types */
|
/* Global Types */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
COM_DEBUG_UART = 0,
|
COM_DEBUG_USART = 0,
|
||||||
COM_GPS_UART = 1,
|
COM_GPS_USART = 1,
|
||||||
COM_TELEM_UART = 2,
|
COM_TELEM_USART = 2,
|
||||||
COM_AUX_UART = 3,
|
COM_AUX_USART = 3,
|
||||||
COM_USB_HID = 4
|
COM_USB_HID = 4
|
||||||
} COMPortTypeDef;
|
} COMPortTypeDef;
|
||||||
|
|
||||||
|
@ -71,5 +71,6 @@ extern void (*pEpInt_OUT[7])(void);
|
|||||||
/* Public Functions */
|
/* Public Functions */
|
||||||
extern int32_t PIOS_USB_Init(uint32_t mode);
|
extern int32_t PIOS_USB_Init(uint32_t mode);
|
||||||
extern int32_t PIOS_USB_IsInitialized(void);
|
extern int32_t PIOS_USB_IsInitialized(void);
|
||||||
|
extern int32_t PIOS_USB_CableConnected(void);
|
||||||
|
|
||||||
#endif /* PIOS_USB_H */
|
#endif /* PIOS_USB_H */
|
||||||
|
@ -44,7 +44,7 @@ static uint8_t sdcard_available;
|
|||||||
|
|
||||||
/* Function Prototypes */
|
/* Function Prototypes */
|
||||||
static void TaskTick(void *pvParameters);
|
static void TaskTick(void *pvParameters);
|
||||||
static void TaskHIDTest(void *pvParameters);
|
static void TaskTesting(void *pvParameters);
|
||||||
static void TaskServos(void *pvParameters);
|
static void TaskServos(void *pvParameters);
|
||||||
static void TaskHooks(void *pvParameters);
|
static void TaskHooks(void *pvParameters);
|
||||||
static void TaskSDCard(void *pvParameters);
|
static void TaskSDCard(void *pvParameters);
|
||||||
@ -100,8 +100,6 @@ int main()
|
|||||||
|
|
||||||
//PIOS_PWM_Init();
|
//PIOS_PWM_Init();
|
||||||
|
|
||||||
PIOS_USB_Init(0);
|
|
||||||
|
|
||||||
PIOS_COM_ReceiveCallbackInit(CONSOLE_Parse);
|
PIOS_COM_ReceiveCallbackInit(CONSOLE_Parse);
|
||||||
|
|
||||||
/* Initialise OpenPilot application */
|
/* Initialise OpenPilot application */
|
||||||
@ -109,7 +107,7 @@ int main()
|
|||||||
|
|
||||||
/* Create a FreeRTOS task */
|
/* Create a FreeRTOS task */
|
||||||
xTaskCreate(TaskTick, (signed portCHAR *)"Test", configMINIMAL_STACK_SIZE , NULL, 1, NULL);
|
xTaskCreate(TaskTick, (signed portCHAR *)"Test", configMINIMAL_STACK_SIZE , NULL, 1, NULL);
|
||||||
//xTaskCreate(TaskHIDTest, (signed portCHAR *)"HIDTest", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
|
xTaskCreate(TaskTesting, (signed portCHAR *)"TaskTesting", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
|
||||||
//xTaskCreate(TaskServos, (signed portCHAR *)"Servos", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
|
//xTaskCreate(TaskServos, (signed portCHAR *)"Servos", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
|
||||||
xTaskCreate(TaskHooks, (signed portCHAR *)"Hooks", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK_HOOKS, NULL);
|
xTaskCreate(TaskHooks, (signed portCHAR *)"Hooks", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK_HOOKS, NULL);
|
||||||
//xTaskCreate(TaskSDCard, (signed portCHAR *)"SDCard", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2), NULL);
|
//xTaskCreate(TaskSDCard, (signed portCHAR *)"SDCard", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2), NULL);
|
||||||
@ -125,7 +123,7 @@ int main()
|
|||||||
int32_t CONSOLE_Parse(COMPortTypeDef port, char c)
|
int32_t CONSOLE_Parse(COMPortTypeDef port, char c)
|
||||||
{
|
{
|
||||||
if(port == COM_USB_HID) {
|
if(port == COM_USB_HID) {
|
||||||
PIOS_COM_SendChar(COM_DEBUG_UART, c);
|
PIOS_COM_SendChar(COM_DEBUG_USART, c);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -133,7 +131,7 @@ int32_t CONSOLE_Parse(COMPortTypeDef port, char c)
|
|||||||
if(c == '\r') {
|
if(c == '\r') {
|
||||||
/* Ignore */
|
/* Ignore */
|
||||||
} else if(c == '\n') {
|
} else if(c == '\n') {
|
||||||
PIOS_COM_SendFormattedString(COM_DEBUG_UART, "String: %s\n", line_buffer);
|
PIOS_COM_SendFormattedString(COM_DEBUG_USART, "String: %s\n", line_buffer);
|
||||||
line_ix = 0;
|
line_ix = 0;
|
||||||
} else if(line_ix < (STRING_MAX - 1)) {
|
} else if(line_ix < (STRING_MAX - 1)) {
|
||||||
line_buffer[line_ix++] = c;
|
line_buffer[line_ix++] = c;
|
||||||
@ -174,36 +172,14 @@ static void TaskTick(void *pvParameters)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TaskHIDTest(void *pvParameters)
|
static void TaskTesting(void *pvParameters)
|
||||||
{
|
{
|
||||||
portTickType xDelay = 1000 / portTICK_RATE_MS;;
|
portTickType xDelay = 1000 / portTICK_RATE_MS;;
|
||||||
|
|
||||||
__IO uint8_t Send_Buffer[63];
|
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
|
int32_t state = PIOS_USB_CableConnected();
|
||||||
Send_Buffer[0] = 'H';
|
PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "State: %d\r", state);
|
||||||
Send_Buffer[1] = 'e';
|
|
||||||
Send_Buffer[2] = 'l';
|
|
||||||
Send_Buffer[3] = 'l';
|
|
||||||
Send_Buffer[4] = 'o';
|
|
||||||
Send_Buffer[5] = ' ';
|
|
||||||
Send_Buffer[6] = 'W';
|
|
||||||
Send_Buffer[7] = 'o';
|
|
||||||
Send_Buffer[8] = 'r';
|
|
||||||
Send_Buffer[9] = 'l';
|
|
||||||
Send_Buffer[10] = 'd';
|
|
||||||
Send_Buffer[11] = '!';
|
|
||||||
Send_Buffer[12] = 0;
|
|
||||||
|
|
||||||
/* Write the data to the pipe */
|
|
||||||
//UserToPMABufferCopy((uint8_t*) Send_Buffer, GetEPTxAddr(EP1_IN & 0x7F), 64);
|
|
||||||
//SetEPTxCount(ENDP1, 64);
|
|
||||||
|
|
||||||
//SetEPTxValid(ENDP1);
|
|
||||||
|
|
||||||
PIOS_COM_SendBufferNonBlocking(COM_USB_HID, Send_Buffer, 63);
|
|
||||||
|
|
||||||
vTaskDelay(xDelay);
|
vTaskDelay(xDelay);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user