Merge pull request #142 from 0mark/master

fixed vusb variant of converter ps2usb
This commit is contained in:
tmk 2014-11-14 04:56:00 +09:00
commit c49cb01002
4 changed files with 31 additions and 18 deletions

View File

@ -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

View File

@ -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 */

View File

@ -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__ */

View File

@ -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,