Browse Source

ble-dongle: Get USB echo running

ble
Andreas Berthoud 5 years ago
parent
commit
824082e3b3
  1. 6
      nucleo-wb55-dongle-ble/Core/Src/main.c
  2. 11
      nucleo-wb55-dongle-ble/USB_Device/App/usbd_cdc_if.c
  3. 2
      nucleo-wb55-dongle-ble/USB_Device/App/usbd_cdc_if.h
  4. 1
      serial_communication.py

6
nucleo-wb55-dongle-ble/Core/Src/main.c

@ -23,7 +23,7 @@
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "usbd_cdc_if.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -55,7 +55,9 @@ static void MX_GPIO_Init(void);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void usb_receive(uint8_t *buf, uint32_t *len) {
CDC_Transmit_FS(buf, *len); // echo
}
/* USER CODE END 0 */
/**

11
nucleo-wb55-dongle-ble/USB_Device/App/usbd_cdc_if.c

@ -32,7 +32,7 @@
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
uint8_t buffer[7];
/* USER CODE END PV */
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
@ -129,7 +129,7 @@ static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len);
static int8_t CDC_TransmitCplt_FS(uint8_t *pbuf, uint32_t *Len, uint8_t epnum);
/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */
__weak void usb_receive(uint8_t *buf, uint32_t *len) {}
/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */
/**
@ -221,10 +221,16 @@ static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)
/* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */
/*******************************************************************************/
case CDC_SET_LINE_CODING:
for (int i = 0; i< 7; i++) {
buffer[i] = pbuf[i];
}
break;
case CDC_GET_LINE_CODING:
for (int i = 0; i< 7; i++) {
pbuf[i] = buffer[i];
}
break;
@ -264,6 +270,7 @@ static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
usb_receive(Buf, Len);
return (USBD_OK);
/* USER CODE END 6 */
}

2
nucleo-wb55-dongle-ble/USB_Device/App/usbd_cdc_if.h

@ -110,7 +110,7 @@ extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS;
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);
/* USER CODE BEGIN EXPORTED_FUNCTIONS */
__weak void usb_receive(uint8_t *buf, uint32_t *len);
/* USER CODE END EXPORTED_FUNCTIONS */
/**

1
serial_communication.py

@ -29,6 +29,7 @@ def main():
logger.info(f"received: {x}")
logger.info(f"in_waiting: {serial_connection.in_waiting}")
return
delay = 0.1
while True:
logger.info("Set blue LED")

Loading…
Cancel
Save