Commit d71cd86d authored by Damien George's avatar Damien George
Browse files

Merge branch 'iabdalkader-master'

Conflicts:
	stm/usb.c
	stm/usb.h
parents 01156d51 565fdccf
...@@ -48,6 +48,9 @@ LINE_CODING linecoding = ...@@ -48,6 +48,9 @@ LINE_CODING linecoding =
/* These are external variables imported from CDC core to be used for IN /* These are external variables imported from CDC core to be used for IN
transfer management. */ transfer management. */
extern uint32_t APP_dev_is_connected; // set if CDC device is connected
extern uint8_t APP_Rx_Buffer []; /* Write CDC received data in this buffer. extern uint8_t APP_Rx_Buffer []; /* Write CDC received data in this buffer.
These data will be sent over USB IN endpoint These data will be sent over USB IN endpoint
in the CDC core functions. */ in the CDC core functions. */
...@@ -158,7 +161,7 @@ static uint16_t VCP_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len) ...@@ -158,7 +161,7 @@ static uint16_t VCP_Ctrl (uint32_t Cmd, uint8_t* Buf, uint32_t Len)
break; break;
case SET_CONTROL_LINE_STATE: case SET_CONTROL_LINE_STATE:
/* Not needed for this driver */ APP_dev_is_connected = Len & 0x1; // wValue is passed in Len (bit of a hack)
break; break;
case SEND_BREAK: case SEND_BREAK:
......
...@@ -648,7 +648,7 @@ static uint8_t usbd_pyb_Setup(void *pdev, USB_SETUP_REQ *req) { ...@@ -648,7 +648,7 @@ static uint8_t usbd_pyb_Setup(void *pdev, USB_SETUP_REQ *req) {
// Not a Data request // Not a Data request
// Transfer the command to the interface layer */ // Transfer the command to the interface layer */
return VCP_fops.pIf_Ctrl(req->bRequest, NULL, 0); return VCP_fops.pIf_Ctrl(req->bRequest, NULL, req->wValue);
} }
} else if (req->wIndex == 2) { } else if (req->wIndex == 2) {
......
...@@ -21,6 +21,7 @@ extern CDC_IF_Prop_TypeDef VCP_fops; ...@@ -21,6 +21,7 @@ extern CDC_IF_Prop_TypeDef VCP_fops;
USB_OTG_CORE_HANDLE USB_OTG_Core; USB_OTG_CORE_HANDLE USB_OTG_Core;
static int dev_is_enabled = 0; static int dev_is_enabled = 0;
uint32_t APP_dev_is_connected = 0; /* used by usbd_cdc_vcp */
static char rx_buf[64]; static char rx_buf[64];
static int rx_buf_in; static int rx_buf_in;
static int rx_buf_out; static int rx_buf_out;
...@@ -48,6 +49,10 @@ bool usb_vcp_is_enabled(void) { ...@@ -48,6 +49,10 @@ bool usb_vcp_is_enabled(void) {
return dev_is_enabled; return dev_is_enabled;
} }
bool usb_vcp_is_connected(void) {
return APP_dev_is_connected;
}
void usb_vcp_set_interrupt_char(int c) { void usb_vcp_set_interrupt_char(int c) {
if (dev_is_enabled) { if (dev_is_enabled) {
interrupt_char = c; interrupt_char = c;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
void pyb_usb_dev_init(void); void pyb_usb_dev_init(void);
bool usb_vcp_is_enabled(void); bool usb_vcp_is_enabled(void);
bool usb_vcp_is_connected(void);
void usb_vcp_set_interrupt_char(int c); void usb_vcp_set_interrupt_char(int c);
int usb_vcp_rx_any(void); int usb_vcp_rx_any(void);
char usb_vcp_rx_get(void); char usb_vcp_rx_get(void);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment