summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/usb.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-11-01 21:26:06 +0000
committerDamien George <damien.p.george@gmail.com>2015-02-13 14:02:51 +0000
commitd39c7aa517b722161a7dd792fafc5096d58beec8 (patch)
treef7287fe0f4b6790a3538e31b0a5a06b8939fd64f /stmhal/usb.h
parentb384bcc5de2c20d1d985e2768729578373bd73c1 (diff)
downloadmicropython-d39c7aa517b722161a7dd792fafc5096d58beec8.tar.gz
micropython-d39c7aa517b722161a7dd792fafc5096d58beec8.zip
stmhal: Add Python-configurable USB HID mode.
Different HID modes can be configured in Python. You can either use predefined mouse or keyboard, or write your own report descriptor.
Diffstat (limited to 'stmhal/usb.h')
-rw-r--r--stmhal/usb.h34
1 files changed, 23 insertions, 11 deletions
diff --git a/stmhal/usb.h b/stmhal/usb.h
index e0bfe9a76e..4ac51f3228 100644
--- a/stmhal/usb.h
+++ b/stmhal/usb.h
@@ -24,28 +24,40 @@
* THE SOFTWARE.
*/
-typedef enum {
- USB_DEVICE_MODE_CDC_MSC,
- USB_DEVICE_MODE_CDC_HID,
-} usb_device_mode_t;
+#include "usbd_cdc_msc_hid0.h"
+
+#define PYB_USB_FLAG_DEV_ENABLED (0x0001)
+#define PYB_USB_FLAG_USB_MODE_CALLED (0x0002)
+
+// Windows needs a different PID to distinguish different device configurations
+#define USBD_PID_DEFAULT (0x9800)
+#define USBD_PID_SECONDARY (0x9801)
typedef enum {
- USB_STORAGE_MEDIUM_FLASH,
- USB_STORAGE_MEDIUM_SDCARD,
-} usb_storage_medium_t;
+ PYB_USB_STORAGE_MEDIUM_NONE = 0,
+ PYB_USB_STORAGE_MEDIUM_FLASH,
+ PYB_USB_STORAGE_MEDIUM_SDCARD,
+} pyb_usb_storage_medium_t;
+extern mp_uint_t pyb_usb_flags;
+extern struct _USBD_HandleTypeDef hUSBDDevice;
+extern pyb_usb_storage_medium_t pyb_usb_storage_medium;
+extern const struct _mp_obj_tuple_t pyb_usb_hid_mouse_obj;
+extern const struct _mp_obj_tuple_t pyb_usb_hid_keyboard_obj;
extern const mp_obj_type_t pyb_usb_vcp_type;
+extern const mp_obj_type_t pyb_usb_hid_type;
+MP_DECLARE_CONST_FUN_OBJ(pyb_usb_mode_obj);
+MP_DECLARE_CONST_FUN_OBJ(pyb_have_cdc_obj); // deprecated
+MP_DECLARE_CONST_FUN_OBJ(pyb_hid_send_report_obj); // deprecated
void pyb_usb_init0(void);
-void pyb_usb_dev_init(usb_device_mode_t mode, usb_storage_medium_t medium);
-void pyb_usb_dev_stop(void);
+void pyb_usb_dev_init(uint16_t pid, usb_device_mode_t mode, USBD_HID_ModeInfoTypeDef *hid_info);
+void pyb_usb_dev_deinit(void);
bool usb_vcp_is_enabled(void);
-bool usb_vcp_is_connected(void);
void usb_vcp_set_interrupt_char(int c);
int usb_vcp_recv_byte(uint8_t *c); // if a byte is available, return 1 and put the byte in *c, else return 0
void usb_vcp_send_strn(const char* str, int len);
void usb_vcp_send_strn_cooked(const char *str, int len);
-void usb_hid_send_report(uint8_t *buf); // 4 bytes for mouse: ?, x, y, ?
void pyb_usb_host_init(void);
void pyb_usb_host_process(void);