Merge pull request #142 from 0mark/master
fixed vusb variant of converter ps2usb
This commit is contained in:
commit
c49cb01002
@ -8,10 +8,16 @@ TOP_DIR = ../..
|
|||||||
TARGET_DIR = .
|
TARGET_DIR = .
|
||||||
|
|
||||||
# keyboard dependent files
|
# keyboard dependent files
|
||||||
SRC = keymap.c \
|
SRC = keymap_common.c \
|
||||||
matrix.c \
|
matrix.c \
|
||||||
led.c
|
led.c
|
||||||
|
|
||||||
|
ifdef KEYMAP
|
||||||
|
SRC := keymap_$(KEYMAP).c $(SRC)
|
||||||
|
else
|
||||||
|
SRC := keymap_plain.c $(SRC)
|
||||||
|
endif
|
||||||
|
|
||||||
# Use USART for PS/2. With V-USB INT and BUSYWAIT code is not useful.
|
# Use USART for PS/2. With V-USB INT and BUSYWAIT code is not useful.
|
||||||
SRC += protocol/ps2_usart.c
|
SRC += protocol/ps2_usart.c
|
||||||
OPT_DEFS += -DPS2_USE_USART
|
OPT_DEFS += -DPS2_USE_USART
|
||||||
@ -95,7 +101,7 @@ VPATH += $(TARGET_DIR)
|
|||||||
VPATH += $(TOP_DIR)
|
VPATH += $(TOP_DIR)
|
||||||
|
|
||||||
|
|
||||||
include $(TOP_DIR)/protocol/vusb.mk
|
|
||||||
include $(TOP_DIR)/protocol.mk
|
include $(TOP_DIR)/protocol.mk
|
||||||
include $(TOP_DIR)/common.mk
|
include $(TOP_DIR)/common.mk
|
||||||
|
include $(TOP_DIR)/protocol/vusb.mk
|
||||||
include $(TOP_DIR)/rules.mk
|
include $(TOP_DIR)/rules.mk
|
||||||
|
@ -67,7 +67,7 @@ optimizing hints:
|
|||||||
#if USB_CFG_DESCR_PROPS_STRING_0 == 0
|
#if USB_CFG_DESCR_PROPS_STRING_0 == 0
|
||||||
#undef USB_CFG_DESCR_PROPS_STRING_0
|
#undef USB_CFG_DESCR_PROPS_STRING_0
|
||||||
#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0)
|
#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0)
|
||||||
PROGMEM char usbDescriptorString0[] = { /* language descriptor */
|
const PROGMEM char usbDescriptorString0[] = { /* language descriptor */
|
||||||
4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */
|
4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */
|
||||||
3, /* descriptor type */
|
3, /* descriptor type */
|
||||||
0x09, 0x04, /* language index (0x0409 = US-English) */
|
0x09, 0x04, /* language index (0x0409 = US-English) */
|
||||||
@ -77,7 +77,7 @@ PROGMEM char usbDescriptorString0[] = { /* language descriptor */
|
|||||||
#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN
|
#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN
|
||||||
#undef USB_CFG_DESCR_PROPS_STRING_VENDOR
|
#undef USB_CFG_DESCR_PROPS_STRING_VENDOR
|
||||||
#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor)
|
#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor)
|
||||||
PROGMEM int usbDescriptorStringVendor[] = {
|
const PROGMEM int usbDescriptorStringVendor[] = {
|
||||||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN),
|
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN),
|
||||||
USB_CFG_VENDOR_NAME
|
USB_CFG_VENDOR_NAME
|
||||||
};
|
};
|
||||||
@ -86,7 +86,7 @@ PROGMEM int usbDescriptorStringVendor[] = {
|
|||||||
#if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN
|
#if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN
|
||||||
#undef USB_CFG_DESCR_PROPS_STRING_PRODUCT
|
#undef USB_CFG_DESCR_PROPS_STRING_PRODUCT
|
||||||
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice)
|
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice)
|
||||||
PROGMEM int usbDescriptorStringDevice[] = {
|
const PROGMEM int usbDescriptorStringDevice[] = {
|
||||||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN),
|
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN),
|
||||||
USB_CFG_DEVICE_NAME
|
USB_CFG_DEVICE_NAME
|
||||||
};
|
};
|
||||||
@ -108,7 +108,7 @@ PROGMEM int usbDescriptorStringSerialNumber[] = {
|
|||||||
#if USB_CFG_DESCR_PROPS_DEVICE == 0
|
#if USB_CFG_DESCR_PROPS_DEVICE == 0
|
||||||
#undef USB_CFG_DESCR_PROPS_DEVICE
|
#undef USB_CFG_DESCR_PROPS_DEVICE
|
||||||
#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice)
|
#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice)
|
||||||
PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */
|
const PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */
|
||||||
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */
|
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */
|
||||||
USBDESCR_DEVICE, /* descriptor type */
|
USBDESCR_DEVICE, /* descriptor type */
|
||||||
0x10, 0x01, /* USB version supported */
|
0x10, 0x01, /* USB version supported */
|
||||||
|
@ -452,43 +452,43 @@ extern
|
|||||||
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
char usbDescriptorDevice[];
|
const char usbDescriptorDevice[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
char usbDescriptorConfiguration[];
|
const char usbDescriptorConfiguration[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
char usbDescriptorHidReport[];
|
const char usbDescriptorHidReport[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
char usbDescriptorString0[];
|
const char usbDescriptorString0[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
int usbDescriptorStringVendor[];
|
const int usbDescriptorStringVendor[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
int usbDescriptorStringDevice[];
|
const int usbDescriptorStringDevice[];
|
||||||
|
|
||||||
extern
|
extern
|
||||||
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
|
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
|
||||||
PROGMEM
|
PROGMEM
|
||||||
#endif
|
#endif
|
||||||
int usbDescriptorStringSerialNumber[];
|
const int usbDescriptorStringSerialNumber[];
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
|
@ -35,6 +35,13 @@ static report_keyboard_t kbuf[KBUF_SIZE];
|
|||||||
static uint8_t kbuf_head = 0;
|
static uint8_t kbuf_head = 0;
|
||||||
static uint8_t kbuf_tail = 0;
|
static uint8_t kbuf_tail = 0;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t modifier;
|
||||||
|
uint8_t reserved;
|
||||||
|
uint8_t keycode[6];
|
||||||
|
} keyboard_report_t;
|
||||||
|
|
||||||
|
static keyboard_report_t keyboard_report; // sent to PC
|
||||||
|
|
||||||
/* transfer keyboard report from buffer */
|
/* transfer keyboard report from buffer */
|
||||||
void vusb_transfer_keyboard(void)
|
void vusb_transfer_keyboard(void)
|
||||||
@ -168,8 +175,8 @@ usbRequest_t *rq = (void *)data;
|
|||||||
if(rq->bRequest == USBRQ_HID_GET_REPORT){
|
if(rq->bRequest == USBRQ_HID_GET_REPORT){
|
||||||
debug("GET_REPORT:");
|
debug("GET_REPORT:");
|
||||||
/* we only have one report type, so don't look at wValue */
|
/* we only have one report type, so don't look at wValue */
|
||||||
usbMsgPtr = (void *)keyboard_report;
|
usbMsgPtr = (void *)&keyboard_report;
|
||||||
return sizeof(*keyboard_report);
|
return sizeof(keyboard_report);
|
||||||
}else if(rq->bRequest == USBRQ_HID_GET_IDLE){
|
}else if(rq->bRequest == USBRQ_HID_GET_IDLE){
|
||||||
debug("GET_IDLE: ");
|
debug("GET_IDLE: ");
|
||||||
//debug_hex(vusb_idle_rate);
|
//debug_hex(vusb_idle_rate);
|
||||||
@ -232,7 +239,7 @@ uchar usbFunctionWrite(uchar *data, uchar len)
|
|||||||
*
|
*
|
||||||
* from an example in HID spec appendix
|
* from an example in HID spec appendix
|
||||||
*/
|
*/
|
||||||
PROGMEM uchar keyboard_hid_report[] = {
|
const PROGMEM uchar keyboard_hid_report[] = {
|
||||||
0x05, 0x01, // Usage Page (Generic Desktop),
|
0x05, 0x01, // Usage Page (Generic Desktop),
|
||||||
0x09, 0x06, // Usage (Keyboard),
|
0x09, 0x06, // Usage (Keyboard),
|
||||||
0xA1, 0x01, // Collection (Application),
|
0xA1, 0x01, // Collection (Application),
|
||||||
@ -275,7 +282,7 @@ PROGMEM uchar keyboard_hid_report[] = {
|
|||||||
* http://www.keil.com/forum/15671/
|
* http://www.keil.com/forum/15671/
|
||||||
* http://www.microsoft.com/whdc/device/input/wheel.mspx
|
* http://www.microsoft.com/whdc/device/input/wheel.mspx
|
||||||
*/
|
*/
|
||||||
PROGMEM uchar mouse_hid_report[] = {
|
const PROGMEM uchar mouse_hid_report[] = {
|
||||||
/* mouse */
|
/* mouse */
|
||||||
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
|
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
|
||||||
0x09, 0x02, // USAGE (Mouse)
|
0x09, 0x02, // USAGE (Mouse)
|
||||||
@ -358,7 +365,7 @@ PROGMEM uchar mouse_hid_report[] = {
|
|||||||
* contains: device, interface, HID and endpoint descriptors
|
* contains: device, interface, HID and endpoint descriptors
|
||||||
*/
|
*/
|
||||||
#if USB_CFG_DESCR_PROPS_CONFIGURATION
|
#if USB_CFG_DESCR_PROPS_CONFIGURATION
|
||||||
PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
|
const PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
|
||||||
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
|
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
|
||||||
USBDESCR_CONFIG, /* descriptor type */
|
USBDESCR_CONFIG, /* descriptor type */
|
||||||
9 + (9 + 9 + 7) + (9 + 9 + 7), 0,
|
9 + (9 + 9 + 7) + (9 + 9 + 7), 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user