Move generic USB stuff to a subdir, dedupe .h files.
Adapt examples and the lib code accordingly.
This commit is contained in:
parent
f062777930
commit
34fd228bf9
@ -17,15 +17,13 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/flash.h>
|
#include <libopenstm32/flash.h>
|
||||||
#include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/dfu.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "dfu.h"
|
|
||||||
|
|
||||||
#define APP_ADDRESS 0x08002000
|
#define APP_ADDRESS 0x08002000
|
||||||
|
|
||||||
|
@ -17,21 +17,19 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/systick.h>
|
#include <libopenstm32/systick.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/hid.h>
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "hid.h"
|
|
||||||
|
|
||||||
/* Define this to include the DFU APP interface. */
|
/* Define this to include the DFU APP interface. */
|
||||||
#define INCLUDE_DFU_INTERFACE
|
#define INCLUDE_DFU_INTERFACE
|
||||||
|
|
||||||
#ifdef INCLUDE_DFU_INTERFACE
|
#ifdef INCLUDE_DFU_INTERFACE
|
||||||
# include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
# include "../usb_dfu/dfu.h"
|
#include <usb/dfu.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const struct usb_device_descriptor dev = {
|
const struct usb_device_descriptor dev = {
|
||||||
|
@ -17,12 +17,11 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
#include <stdlib.h>
|
#include <usb/cdc.h>
|
||||||
|
|
||||||
#include "cdc.h"
|
|
||||||
|
|
||||||
static const struct usb_device_descriptor dev = {
|
static const struct usb_device_descriptor dev = {
|
||||||
.bLength = USB_DT_DEVICE_SIZE,
|
.bLength = USB_DT_DEVICE_SIZE,
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the libopenstm32 project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __DFU_H
|
|
||||||
#define __DFU_H
|
|
||||||
|
|
||||||
enum dfu_req {
|
|
||||||
DFU_DETACH,
|
|
||||||
DFU_DNLOAD,
|
|
||||||
DFU_UPLOAD,
|
|
||||||
DFU_GETSTATUS,
|
|
||||||
DFU_CLRSTATUS,
|
|
||||||
DFU_GETSTATE,
|
|
||||||
DFU_ABORT
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dfu_status {
|
|
||||||
DFU_STATUS_OK,
|
|
||||||
DFU_STATUS_ERR_TARGET,
|
|
||||||
DFU_STATUS_ERR_FILE,
|
|
||||||
DFU_STATUS_ERR_WRITE,
|
|
||||||
DFU_STATUS_ERR_ERASE,
|
|
||||||
DFU_STATUS_ERR_CHECK_ERASED,
|
|
||||||
DFU_STATUS_ERR_PROG,
|
|
||||||
DFU_STATUS_ERR_VERIFY,
|
|
||||||
DFU_STATUS_ERR_ADDRESS,
|
|
||||||
DFU_STATUS_ERR_NOTDONE,
|
|
||||||
DFU_STATUS_ERR_FIRMWARE,
|
|
||||||
DFU_STATUS_ERR_VENDOR,
|
|
||||||
DFU_STATUS_ERR_USBR,
|
|
||||||
DFU_STATUS_ERR_POR,
|
|
||||||
DFU_STATUS_ERR_UNKNOWN,
|
|
||||||
DFU_STATUS_ERR_STALLEDPKT,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dfu_state {
|
|
||||||
STATE_APP_IDLE,
|
|
||||||
STATE_APP_DETACH,
|
|
||||||
STATE_DFU_IDLE,
|
|
||||||
STATE_DFU_DNLOAD_SYNC,
|
|
||||||
STATE_DFU_DNBUSY,
|
|
||||||
STATE_DFU_DNLOAD_IDLE,
|
|
||||||
STATE_DFU_MANIFEST_SYNC,
|
|
||||||
STATE_DFU_MANIFEST,
|
|
||||||
STATE_DFU_MANIFEST_WAIT_RESET,
|
|
||||||
STATE_DFU_UPLOAD_IDLE,
|
|
||||||
STATE_DFU_ERROR,
|
|
||||||
};
|
|
||||||
|
|
||||||
#define DFU_FUNCTIONAL 0x21
|
|
||||||
struct usb_dfu_descriptor {
|
|
||||||
uint8_t bLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bmAttributes;
|
|
||||||
#define USB_DFU_CAN_DOWNLOAD 0x01
|
|
||||||
#define USB_DFU_CAN_UPLOAD 0x02
|
|
||||||
#define USB_DFU_MANIFEST_TOLERANT 0x04
|
|
||||||
#define USB_DFU_WILL_DETACH 0x08
|
|
||||||
|
|
||||||
uint16_t wDetachTimeout;
|
|
||||||
uint16_t wTransferSize;
|
|
||||||
uint16_t bcdDFUVersion;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
#endif
|
|
@ -17,15 +17,13 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/flash.h>
|
#include <libopenstm32/flash.h>
|
||||||
#include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/dfu.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "dfu.h"
|
|
||||||
|
|
||||||
#define APP_ADDRESS 0x08002000
|
#define APP_ADDRESS 0x08002000
|
||||||
|
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the libopenstm32 project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __HID_H
|
|
||||||
#define __HID_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define USB_CLASS_HID 3
|
|
||||||
|
|
||||||
#define USB_DT_HID 0x21
|
|
||||||
#define USB_DT_REPORT 0x22
|
|
||||||
|
|
||||||
struct usb_hid_descriptor {
|
|
||||||
uint8_t bLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint16_t bcdHID;
|
|
||||||
uint8_t bCountryCode;
|
|
||||||
uint8_t bNumDescriptors;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
#endif
|
|
@ -17,21 +17,19 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/systick.h>
|
#include <libopenstm32/systick.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/hid.h>
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "hid.h"
|
|
||||||
|
|
||||||
/* Define this to include the DFU APP interface. */
|
/* Define this to include the DFU APP interface. */
|
||||||
#define INCLUDE_DFU_INTERFACE
|
#define INCLUDE_DFU_INTERFACE
|
||||||
|
|
||||||
#ifdef INCLUDE_DFU_INTERFACE
|
#ifdef INCLUDE_DFU_INTERFACE
|
||||||
# include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
# include "../usb_dfu/dfu.h"
|
#include <usb/dfu.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const struct usb_device_descriptor dev = {
|
const struct usb_device_descriptor dev = {
|
||||||
|
@ -1,128 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the libopenstm32 project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CDC_H
|
|
||||||
#define __CDC_H
|
|
||||||
|
|
||||||
/* Definitions of Communications Device Class from
|
|
||||||
* "Universal Serial Bus Class Definitions for Communications Devices
|
|
||||||
* Revision 1.2"
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Table 2: Communications Device Class Code */
|
|
||||||
#define USB_CLASS_CDC 0x02
|
|
||||||
|
|
||||||
/* Table 4: Class Subclass Code */
|
|
||||||
#define USB_CDC_SUBCLASS_DLCM 0x01
|
|
||||||
#define USB_CDC_SUBCLASS_ACM 0x02
|
|
||||||
/* ... */
|
|
||||||
|
|
||||||
/* Table 5 Communications Interface Class Control Protocol Codes */
|
|
||||||
#define USB_CDC_PROTOCOL_NONE 0x00
|
|
||||||
#define USB_CDC_PROTOCOL_AT 0x01
|
|
||||||
/* ... */
|
|
||||||
|
|
||||||
/* Table 6: Data Interface Class Code */
|
|
||||||
#define USB_CLASS_DATA 0x0A
|
|
||||||
|
|
||||||
/* Table 12: Type Values for the bDescriptorType Field */
|
|
||||||
#define CS_INTERFACE 0x24
|
|
||||||
#define CS_ENDPOINT 0x25
|
|
||||||
|
|
||||||
/* Table 13: bDescriptor SubType in Communications Class Functional
|
|
||||||
* Descriptors */
|
|
||||||
#define USB_CDC_TYPE_HEADER 0x00
|
|
||||||
#define USB_CDC_TYPE_CALL_MANAGEMENT 0x01
|
|
||||||
#define USB_CDC_TYPE_ACM 0x02
|
|
||||||
/* ... */
|
|
||||||
#define USB_CDC_TYPE_UNION 0x06
|
|
||||||
/* ... */
|
|
||||||
|
|
||||||
/* Table 15: Class-Specific Descriptor Header Format */
|
|
||||||
struct usb_cdc_header_descriptor {
|
|
||||||
uint8_t bFunctionLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bDescriptorSubtype;
|
|
||||||
uint16_t bcdCDC;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
/* Table 16: Union Interface Functional Descriptor */
|
|
||||||
struct usb_cdc_union_descriptor {
|
|
||||||
uint8_t bFunctionLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bDescriptorSubtype;
|
|
||||||
uint8_t bControlInterface;
|
|
||||||
uint8_t bSubordinateInterface0;
|
|
||||||
/* ... */
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
|
|
||||||
/* Definitions for Abstract Control Model devices from:
|
|
||||||
* "Universal Serial Bus Communications Class Subclass Specification for
|
|
||||||
* PSTN Devices"
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Table 3: Call Management Functional Descriptor */
|
|
||||||
struct usb_cdc_call_management_descriptor {
|
|
||||||
uint8_t bFunctionLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bDescriptorSubtype;
|
|
||||||
uint8_t bmCapabilities;
|
|
||||||
uint8_t bDataInterface;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
/* Table 4: Abstract Control Management Functional Descriptor */
|
|
||||||
struct usb_cdc_acm_descriptor {
|
|
||||||
uint8_t bFunctionLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bDescriptorSubtype;
|
|
||||||
uint8_t bmCapabilities;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
/* Table 13: Class-Specific Request Codes for PSTN subclasses */
|
|
||||||
/* ... */
|
|
||||||
#define USB_CDC_REQ_SET_LINE_CODING 0x20
|
|
||||||
/* ... */
|
|
||||||
#define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22
|
|
||||||
/* ... */
|
|
||||||
|
|
||||||
/* Table 17: Line Coding Structure */
|
|
||||||
struct usb_cdc_line_coding {
|
|
||||||
uint32_t dwDTERate;
|
|
||||||
uint8_t bCharFormat;
|
|
||||||
uint8_t bParityType;
|
|
||||||
uint8_t bDataBits;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
/* Table 30: Class-Specific Notification Codes for PSTN subclasses */
|
|
||||||
/* ... */
|
|
||||||
#define USB_CDC_NOTIFY_SERIAL_STATE 0x28
|
|
||||||
/* ... */
|
|
||||||
|
|
||||||
|
|
||||||
/* Notification Structure */
|
|
||||||
struct usb_cdc_notification {
|
|
||||||
uint8_t bmRequestType;
|
|
||||||
uint8_t bNotification;
|
|
||||||
uint16_t wValue;
|
|
||||||
uint16_t wIndex;
|
|
||||||
uint16_t wLength;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
#endif
|
|
@ -17,12 +17,11 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
#include <stdlib.h>
|
#include <usb/cdc.h>
|
||||||
|
|
||||||
#include "cdc.h"
|
|
||||||
|
|
||||||
static const struct usb_device_descriptor dev = {
|
static const struct usb_device_descriptor dev = {
|
||||||
.bLength = USB_DT_DEVICE_SIZE,
|
.bLength = USB_DT_DEVICE_SIZE,
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the libopenstm32 project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __DFU_H
|
|
||||||
#define __DFU_H
|
|
||||||
|
|
||||||
enum dfu_req {
|
|
||||||
DFU_DETACH,
|
|
||||||
DFU_DNLOAD,
|
|
||||||
DFU_UPLOAD,
|
|
||||||
DFU_GETSTATUS,
|
|
||||||
DFU_CLRSTATUS,
|
|
||||||
DFU_GETSTATE,
|
|
||||||
DFU_ABORT
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dfu_status {
|
|
||||||
DFU_STATUS_OK,
|
|
||||||
DFU_STATUS_ERR_TARGET,
|
|
||||||
DFU_STATUS_ERR_FILE,
|
|
||||||
DFU_STATUS_ERR_WRITE,
|
|
||||||
DFU_STATUS_ERR_ERASE,
|
|
||||||
DFU_STATUS_ERR_CHECK_ERASED,
|
|
||||||
DFU_STATUS_ERR_PROG,
|
|
||||||
DFU_STATUS_ERR_VERIFY,
|
|
||||||
DFU_STATUS_ERR_ADDRESS,
|
|
||||||
DFU_STATUS_ERR_NOTDONE,
|
|
||||||
DFU_STATUS_ERR_FIRMWARE,
|
|
||||||
DFU_STATUS_ERR_VENDOR,
|
|
||||||
DFU_STATUS_ERR_USBR,
|
|
||||||
DFU_STATUS_ERR_POR,
|
|
||||||
DFU_STATUS_ERR_UNKNOWN,
|
|
||||||
DFU_STATUS_ERR_STALLEDPKT,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dfu_state {
|
|
||||||
STATE_APP_IDLE,
|
|
||||||
STATE_APP_DETACH,
|
|
||||||
STATE_DFU_IDLE,
|
|
||||||
STATE_DFU_DNLOAD_SYNC,
|
|
||||||
STATE_DFU_DNBUSY,
|
|
||||||
STATE_DFU_DNLOAD_IDLE,
|
|
||||||
STATE_DFU_MANIFEST_SYNC,
|
|
||||||
STATE_DFU_MANIFEST,
|
|
||||||
STATE_DFU_MANIFEST_WAIT_RESET,
|
|
||||||
STATE_DFU_UPLOAD_IDLE,
|
|
||||||
STATE_DFU_ERROR,
|
|
||||||
};
|
|
||||||
|
|
||||||
#define DFU_FUNCTIONAL 0x21
|
|
||||||
struct usb_dfu_descriptor {
|
|
||||||
uint8_t bLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint8_t bmAttributes;
|
|
||||||
#define USB_DFU_CAN_DOWNLOAD 0x01
|
|
||||||
#define USB_DFU_CAN_UPLOAD 0x02
|
|
||||||
#define USB_DFU_MANIFEST_TOLERANT 0x04
|
|
||||||
#define USB_DFU_WILL_DETACH 0x08
|
|
||||||
|
|
||||||
uint16_t wDetachTimeout;
|
|
||||||
uint16_t wTransferSize;
|
|
||||||
uint16_t bcdDFUVersion;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
#endif
|
|
@ -17,15 +17,13 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/flash.h>
|
#include <libopenstm32/flash.h>
|
||||||
#include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/dfu.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "dfu.h"
|
|
||||||
|
|
||||||
#define APP_ADDRESS 0x08002000
|
#define APP_ADDRESS 0x08002000
|
||||||
|
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the libopenstm32 project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __HID_H
|
|
||||||
#define __HID_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define USB_CLASS_HID 3
|
|
||||||
|
|
||||||
#define USB_DT_HID 0x21
|
|
||||||
#define USB_DT_REPORT 0x22
|
|
||||||
|
|
||||||
struct usb_hid_descriptor {
|
|
||||||
uint8_t bLength;
|
|
||||||
uint8_t bDescriptorType;
|
|
||||||
uint16_t bcdHID;
|
|
||||||
uint8_t bCountryCode;
|
|
||||||
uint8_t bNumDescriptors;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
#endif
|
|
@ -17,21 +17,19 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/systick.h>
|
#include <libopenstm32/systick.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/hid.h>
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "hid.h"
|
|
||||||
|
|
||||||
/* Define this to include the DFU APP interface. */
|
/* Define this to include the DFU APP interface. */
|
||||||
#define INCLUDE_DFU_INTERFACE
|
#define INCLUDE_DFU_INTERFACE
|
||||||
|
|
||||||
#ifdef INCLUDE_DFU_INTERFACE
|
#ifdef INCLUDE_DFU_INTERFACE
|
||||||
# include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
# include "../usb_dfu/dfu.h"
|
#include <usb/dfu.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const struct usb_device_descriptor dev = {
|
const struct usb_device_descriptor dev = {
|
||||||
|
@ -17,15 +17,13 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <libopenstm32/rcc.h>
|
#include <libopenstm32/rcc.h>
|
||||||
#include <libopenstm32/gpio.h>
|
#include <libopenstm32/gpio.h>
|
||||||
#include <libopenstm32/flash.h>
|
#include <libopenstm32/flash.h>
|
||||||
#include <libopenstm32/scb.h>
|
#include <libopenstm32/scb.h>
|
||||||
#include <usbd.h>
|
#include <usb/usbd.h>
|
||||||
|
#include <usb/dfu.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "dfu.h"
|
|
||||||
|
|
||||||
#define APP_ADDRESS 0x08002000
|
#define APP_ADDRESS 0x08002000
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#ifndef __USBD_H
|
#ifndef __USBD_H
|
||||||
#define __USBD_H
|
#define __USBD_H
|
||||||
|
|
||||||
#include <usbstd.h>
|
#include <usb/usbstd.h>
|
||||||
|
|
||||||
/* Static buffer for control transactions:
|
/* Static buffer for control transactions:
|
||||||
* This is defined as weak in the library, applicaiton
|
* This is defined as weak in the library, applicaiton
|
@ -17,8 +17,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <usbd.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <usb/usbd.h>
|
||||||
#include "usb_private.h"
|
#include "usb_private.h"
|
||||||
|
|
||||||
struct _usbd_device _usbd_device;
|
struct _usbd_device _usbd_device;
|
||||||
@ -92,4 +92,3 @@ void _usbd_reset(void)
|
|||||||
if(_usbd_device.user_callback_reset)
|
if(_usbd_device.user_callback_reset)
|
||||||
_usbd_device.user_callback_reset();
|
_usbd_device.user_callback_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <usbd.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <usb/usbd.h>
|
||||||
#include "usb_private.h"
|
#include "usb_private.h"
|
||||||
|
|
||||||
static struct usb_control_state {
|
static struct usb_control_state {
|
||||||
@ -251,4 +251,3 @@ void _usbd_control_in(uint8_t ea)
|
|||||||
usbd_ep_stall_set(0, 1);
|
usbd_ep_stall_set(0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,9 +20,7 @@
|
|||||||
#include <libopenstm32/common.h>
|
#include <libopenstm32/common.h>
|
||||||
#include <libopenstm32/tools.h>
|
#include <libopenstm32/tools.h>
|
||||||
#include <libopenstm32/usb.h>
|
#include <libopenstm32/usb.h>
|
||||||
|
#include <usb/usbd.h>
|
||||||
#include <usbd.h>
|
|
||||||
|
|
||||||
#include "usb_private.h"
|
#include "usb_private.h"
|
||||||
|
|
||||||
/** Initialize USB Device Controller.
|
/** Initialize USB Device Controller.
|
||||||
@ -250,4 +248,3 @@ void usbd_poll(void)
|
|||||||
if(istr & USB_ISTR_SOF)
|
if(istr & USB_ISTR_SOF)
|
||||||
USB_CLR_ISTR_SOF();
|
USB_CLR_ISTR_SOF();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef __USB_PRIVATE_H
|
#ifndef __USB_PRIVATE_H
|
||||||
#define __USB_PRIVATE_H
|
#define __USB_PRIVATE_H
|
||||||
|
|
||||||
@ -77,4 +76,3 @@ void _usbd_hw_set_address(uint8_t addr);
|
|||||||
void _usbd_hw_endpoints_reset(void);
|
void _usbd_hw_endpoints_reset(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -18,8 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <usb/usbd.h>
|
||||||
#include <usbd.h>
|
|
||||||
#include "usb_private.h"
|
#include "usb_private.h"
|
||||||
|
|
||||||
void usbd_register_set_config_callback(void (*callback)(uint16_t wValue))
|
void usbd_register_set_config_callback(void (*callback)(uint16_t wValue))
|
||||||
@ -370,4 +369,3 @@ int _usbd_standard_request(struct usb_setup_data *req, uint8_t **buf,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user