Remove mbed files (#7605)
* Remove mbed files * Remove mbed files - fix comment * Remove mbed logic blocksrefactor_process_record_kb_user
parent
770a4ee729
commit
071eb2478f
@ -1,3 +0,0 @@ |
|||||||
#include "bootloader.h" |
|
||||||
|
|
||||||
void bootloader_jump(void) {} |
|
@ -1,5 +0,0 @@ |
|||||||
#include <stdbool.h> |
|
||||||
|
|
||||||
void suspend_power_down(void) {} |
|
||||||
bool suspend_wakeup_condition(void) { return true; } |
|
||||||
void suspend_wakeup_init(void) {} |
|
@ -1,23 +0,0 @@ |
|||||||
#include "cmsis.h" |
|
||||||
#include "timer.h" |
|
||||||
|
|
||||||
/* Mill second tick count */ |
|
||||||
volatile uint32_t timer_count = 0; |
|
||||||
|
|
||||||
/* Timer interrupt handler */ |
|
||||||
void SysTick_Handler(void) { timer_count++; } |
|
||||||
|
|
||||||
void timer_init(void) { |
|
||||||
timer_count = 0; |
|
||||||
SysTick_Config(SystemCoreClock / 1000); /* 1ms tick */ |
|
||||||
} |
|
||||||
|
|
||||||
void timer_clear(void) { timer_count = 0; } |
|
||||||
|
|
||||||
uint16_t timer_read(void) { return (uint16_t)(timer_count & 0xFFFF); } |
|
||||||
|
|
||||||
uint32_t timer_read32(void) { return timer_count; } |
|
||||||
|
|
||||||
uint16_t timer_elapsed(uint16_t last) { return TIMER_DIFF_16(timer_read(), last); } |
|
||||||
|
|
||||||
uint32_t timer_elapsed32(uint32_t last) { return TIMER_DIFF_32(timer_read32(), last); } |
|
@ -1,50 +0,0 @@ |
|||||||
#include <cstdarg> |
|
||||||
//#include <stdarg.h>
|
|
||||||
#include "mbed.h" |
|
||||||
#include "mbed/xprintf.h" |
|
||||||
|
|
||||||
#define STRING_STACK_LIMIT 120 |
|
||||||
|
|
||||||
// TODO
|
|
||||||
int __xprintf(const char* format, ...) { return 0; } |
|
||||||
|
|
||||||
#if 0 |
|
||||||
/* mbed Serial */ |
|
||||||
Serial ser(UART_TX, UART_RX); |
|
||||||
|
|
||||||
/* TODO: Need small implementation for embedded */ |
|
||||||
int xprintf(const char* format, ...) |
|
||||||
{ |
|
||||||
/* copy from mbed/common/RawSerial.cpp */ |
|
||||||
std::va_list arg; |
|
||||||
va_start(arg, format); |
|
||||||
int len = vsnprintf(NULL, 0, format, arg); |
|
||||||
if (len < STRING_STACK_LIMIT) { |
|
||||||
char temp[STRING_STACK_LIMIT]; |
|
||||||
vsprintf(temp, format, arg); |
|
||||||
ser.puts(temp); |
|
||||||
} else { |
|
||||||
char *temp = new char[len + 1]; |
|
||||||
vsprintf(temp, format, arg); |
|
||||||
ser.puts(temp); |
|
||||||
delete[] temp; |
|
||||||
} |
|
||||||
va_end(arg); |
|
||||||
return len; |
|
||||||
|
|
||||||
/* Fail: __builtin_va_arg_pack?
|
|
||||||
* https://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Constructing-Calls.html#Constructing-Calls
|
|
||||||
void *arg = __builtin_apply_args(); |
|
||||||
void *ret = __builtin_apply((void*)(&(ser.printf)), arg, 100); |
|
||||||
__builtin_return(ret) |
|
||||||
*/ |
|
||||||
/* Fail: varargs can not be passed to printf
|
|
||||||
//int r = ser.printf("test %i\r\n", 123);
|
|
||||||
va_list arg; |
|
||||||
va_start(arg, format); |
|
||||||
int r = ser.printf(format, arg); |
|
||||||
va_end(arg); |
|
||||||
return r; |
|
||||||
*/ |
|
||||||
} |
|
||||||
#endif |
|
@ -1,16 +0,0 @@ |
|||||||
#ifndef XPRINTF_H |
|
||||||
#define XPRINTF_H |
|
||||||
|
|
||||||
//#define xprintf(format, ...) __xprintf(format, ##__VA_ARGS__)
|
|
||||||
|
|
||||||
#ifdef __cplusplus |
|
||||||
extern "C" { |
|
||||||
#endif |
|
||||||
|
|
||||||
int __xprintf(const char *format, ...); |
|
||||||
|
|
||||||
#ifdef __cplusplus |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
#endif |
|
@ -1,260 +0,0 @@ |
|||||||
#include <stdint.h> |
|
||||||
#include "USBHID.h" |
|
||||||
#include "USBHID_Types.h" |
|
||||||
#include "USBDescriptor.h" |
|
||||||
#include "HIDKeyboard.h" |
|
||||||
|
|
||||||
#define DEFAULT_CONFIGURATION (1) |
|
||||||
|
|
||||||
HIDKeyboard::HIDKeyboard(uint16_t vendor_id, uint16_t product_id, uint16_t product_release) : USBDevice(vendor_id, product_id, product_release) { USBDevice::connect(); } |
|
||||||
|
|
||||||
bool HIDKeyboard::sendReport(report_keyboard_t report) { |
|
||||||
USBDevice::write(EP1IN, report.raw, sizeof(report), MAX_PACKET_SIZE_EP1); |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t HIDKeyboard::leds() { return led_state; } |
|
||||||
|
|
||||||
bool HIDKeyboard::USBCallback_setConfiguration(uint8_t configuration) { |
|
||||||
if (configuration != DEFAULT_CONFIGURATION) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
// Configure endpoints > 0
|
|
||||||
addEndpoint(EPINT_IN, MAX_PACKET_SIZE_EPINT); |
|
||||||
// addEndpoint(EPINT_OUT, MAX_PACKET_SIZE_EPINT);
|
|
||||||
|
|
||||||
// We activate the endpoint to be able to recceive data
|
|
||||||
// readStart(EPINT_OUT, MAX_PACKET_SIZE_EPINT);
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t *HIDKeyboard::stringImanufacturerDesc() { |
|
||||||
static uint8_t stringImanufacturerDescriptor[] = { |
|
||||||
0x18, /*bLength*/ |
|
||||||
STRING_DESCRIPTOR, /*bDescriptorType 0x03*/ |
|
||||||
't', |
|
||||||
0, |
|
||||||
'm', |
|
||||||
0, |
|
||||||
'k', |
|
||||||
0, |
|
||||||
'-', |
|
||||||
0, |
|
||||||
'k', |
|
||||||
0, |
|
||||||
'b', |
|
||||||
0, |
|
||||||
'd', |
|
||||||
0, |
|
||||||
'.', |
|
||||||
0, |
|
||||||
'c', |
|
||||||
0, |
|
||||||
'o', |
|
||||||
0, |
|
||||||
'm', |
|
||||||
0 /*bString iManufacturer*/ |
|
||||||
}; |
|
||||||
return stringImanufacturerDescriptor; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t *HIDKeyboard::stringIproductDesc() { |
|
||||||
static uint8_t stringIproductDescriptor[] = { |
|
||||||
0x0a, /*bLength*/ |
|
||||||
STRING_DESCRIPTOR, /*bDescriptorType 0x03*/ |
|
||||||
'm', |
|
||||||
0, |
|
||||||
'b', |
|
||||||
0, |
|
||||||
'e', |
|
||||||
0, |
|
||||||
'd', |
|
||||||
0 /*bString iProduct*/ |
|
||||||
}; |
|
||||||
return stringIproductDescriptor; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t *HIDKeyboard::stringIserialDesc() { |
|
||||||
static uint8_t stringIserialDescriptor[] = { |
|
||||||
0x04, /*bLength*/ |
|
||||||
STRING_DESCRIPTOR, /*bDescriptorType 0x03*/ |
|
||||||
'0', 0 /*bString iSerial*/ |
|
||||||
}; |
|
||||||
return stringIserialDescriptor; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t *HIDKeyboard::reportDesc() { |
|
||||||
static uint8_t reportDescriptor[] = { |
|
||||||
USAGE_PAGE(1), 0x01, // Generic Desktop
|
|
||||||
USAGE(1), 0x06, // Keyboard
|
|
||||||
COLLECTION(1), 0x01, // Application
|
|
||||||
|
|
||||||
USAGE_PAGE(1), 0x07, // Key Codes
|
|
||||||
USAGE_MINIMUM(1), 0xE0, USAGE_MAXIMUM(1), 0xE7, LOGICAL_MINIMUM(1), 0x00, LOGICAL_MAXIMUM(1), 0x01, REPORT_SIZE(1), 0x01, REPORT_COUNT(1), 0x08, INPUT(1), 0x02, // Data, Variable, Absolute
|
|
||||||
|
|
||||||
REPORT_COUNT(1), 0x01, REPORT_SIZE(1), 0x08, INPUT(1), 0x01, // Constant
|
|
||||||
|
|
||||||
REPORT_COUNT(1), 0x05, REPORT_SIZE(1), 0x01, USAGE_PAGE(1), 0x08, // LEDs
|
|
||||||
USAGE_MINIMUM(1), 0x01, USAGE_MAXIMUM(1), 0x05, OUTPUT(1), 0x02, // Data, Variable, Absolute
|
|
||||||
|
|
||||||
REPORT_COUNT(1), 0x01, REPORT_SIZE(1), 0x03, OUTPUT(1), 0x01, // Constant
|
|
||||||
|
|
||||||
REPORT_COUNT(1), 0x06, REPORT_SIZE(1), 0x08, LOGICAL_MINIMUM(1), 0x00, LOGICAL_MAXIMUM(1), 0xFF, USAGE_PAGE(1), 0x07, // Key Codes
|
|
||||||
USAGE_MINIMUM(1), 0x00, USAGE_MAXIMUM(1), 0xFF, INPUT(1), 0x00, // Data, Array
|
|
||||||
END_COLLECTION(0), |
|
||||||
}; |
|
||||||
reportLength = sizeof(reportDescriptor); |
|
||||||
return reportDescriptor; |
|
||||||
} |
|
||||||
|
|
||||||
uint16_t HIDKeyboard::reportDescLength() { |
|
||||||
reportDesc(); |
|
||||||
return reportLength; |
|
||||||
} |
|
||||||
|
|
||||||
#define TOTAL_DESCRIPTOR_LENGTH ((1 * CONFIGURATION_DESCRIPTOR_LENGTH) + (1 * INTERFACE_DESCRIPTOR_LENGTH) + (1 * HID_DESCRIPTOR_LENGTH) + (1 * ENDPOINT_DESCRIPTOR_LENGTH)) |
|
||||||
uint8_t *HIDKeyboard::configurationDesc() { |
|
||||||
static uint8_t configurationDescriptor[] = { |
|
||||||
CONFIGURATION_DESCRIPTOR_LENGTH, // bLength
|
|
||||||
CONFIGURATION_DESCRIPTOR, // bDescriptorType
|
|
||||||
LSB(TOTAL_DESCRIPTOR_LENGTH), // wTotalLength (LSB)
|
|
||||||
MSB(TOTAL_DESCRIPTOR_LENGTH), // wTotalLength (MSB)
|
|
||||||
0x01, // bNumInterfaces
|
|
||||||
DEFAULT_CONFIGURATION, // bConfigurationValue
|
|
||||||
0x00, // iConfiguration
|
|
||||||
C_RESERVED | C_REMOTE_WAKEUP, // bmAttributes
|
|
||||||
C_POWER(100), // bMaxPowerHello World from Mbed
|
|
||||||
|
|
||||||
INTERFACE_DESCRIPTOR_LENGTH, // bLength
|
|
||||||
INTERFACE_DESCRIPTOR, // bDescriptorType
|
|
||||||
0x00, // bInterfaceNumber
|
|
||||||
0x00, // bAlternateSetting
|
|
||||||
0x01, // bNumEndpoints
|
|
||||||
HID_CLASS, // bInterfaceClass
|
|
||||||
1, // bInterfaceSubClass (boot)
|
|
||||||
1, // bInterfaceProtocol (keyboard)
|
|
||||||
0x00, // iInterface
|
|
||||||
|
|
||||||
HID_DESCRIPTOR_LENGTH, // bLength
|
|
||||||
HID_DESCRIPTOR, // bDescriptorType
|
|
||||||
LSB(HID_VERSION_1_11), // bcdHID (LSB)
|
|
||||||
MSB(HID_VERSION_1_11), // bcdHID (MSB)
|
|
||||||
0x00, // bCountryCode
|
|
||||||
0x01, // bNumDescriptors
|
|
||||||
REPORT_DESCRIPTOR, // bDescriptorType
|
|
||||||
(uint8_t)(LSB(reportDescLength())), // wDescriptorLength (LSB)
|
|
||||||
(uint8_t)(MSB(reportDescLength())), // wDescriptorLength (MSB)
|
|
||||||
|
|
||||||
ENDPOINT_DESCRIPTOR_LENGTH, // bLength
|
|
||||||
ENDPOINT_DESCRIPTOR, // bDescriptorType
|
|
||||||
PHY_TO_DESC(EP1IN), // bEndpointAddress
|
|
||||||
E_INTERRUPT, // bmAttributes
|
|
||||||
LSB(MAX_PACKET_SIZE_EPINT), // wMaxPacketSize (LSB)
|
|
||||||
MSB(MAX_PACKET_SIZE_EPINT), // wMaxPacketSize (MSB)
|
|
||||||
1, // bInterval (milliseconds)
|
|
||||||
}; |
|
||||||
return configurationDescriptor; |
|
||||||
} |
|
||||||
|
|
||||||
#if 0 |
|
||||||
uint8_t * HIDKeyboard::deviceDesc() { |
|
||||||
static uint8_t deviceDescriptor[] = { |
|
||||||
DEVICE_DESCRIPTOR_LENGTH, /* bLength */ |
|
||||||
DEVICE_DESCRIPTOR, /* bDescriptorType */ |
|
||||||
LSB(USB_VERSION_2_0), /* bcdUSB (LSB) */ |
|
||||||
MSB(USB_VERSION_2_0), /* bcdUSB (MSB) */ |
|
||||||
0x00, /* bDeviceClass */ |
|
||||||
0x00, /* bDeviceSubClass */ |
|
||||||
0x00, /* bDeviceprotocol */ |
|
||||||
MAX_PACKET_SIZE_EP0, /* bMaxPacketSize0 */ |
|
||||||
(uint8_t)(LSB(0xfeed)), /* idVendor (LSB) */ |
|
||||||
(uint8_t)(MSB(0xfeed)), /* idVendor (MSB) */ |
|
||||||
(uint8_t)(LSB(0x1bed)), /* idProduct (LSB) */ |
|
||||||
(uint8_t)(MSB(0x1bed)), /* idProduct (MSB) */ |
|
||||||
(uint8_t)(LSB(0x0002)), /* bcdDevice (LSB) */ |
|
||||||
(uint8_t)(MSB(0x0002)), /* bcdDevice (MSB) */ |
|
||||||
0, /* iManufacturer */ |
|
||||||
0, /* iProduct */ |
|
||||||
0, /* iSerialNumber */ |
|
||||||
0x01 /* bNumConfigurations */ |
|
||||||
}; |
|
||||||
return deviceDescriptor; |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
bool HIDKeyboard::USBCallback_request() { |
|
||||||
bool success = false; |
|
||||||
CONTROL_TRANSFER *transfer = getTransferPtr(); |
|
||||||
uint8_t * hidDescriptor; |
|
||||||
|
|
||||||
// Process additional standard requests
|
|
||||||
|
|
||||||
if ((transfer->setup.bmRequestType.Type == STANDARD_TYPE)) { |
|
||||||
switch (transfer->setup.bRequest) { |
|
||||||
case GET_DESCRIPTOR: |
|
||||||
switch (DESCRIPTOR_TYPE(transfer->setup.wValue)) { |
|
||||||
case REPORT_DESCRIPTOR: |
|
||||||
if ((reportDesc() != NULL) && (reportDescLength() != 0)) { |
|
||||||
transfer->remaining = reportDescLength(); |
|
||||||
transfer->ptr = reportDesc(); |
|
||||||
transfer->direction = DEVICE_TO_HOST; |
|
||||||
success = true; |
|
||||||
} |
|
||||||
break; |
|
||||||
case HID_DESCRIPTOR: |
|
||||||
// Find the HID descriptor, after the configuration descriptor
|
|
||||||
hidDescriptor = findDescriptor(HID_DESCRIPTOR); |
|
||||||
if (hidDescriptor != NULL) { |
|
||||||
transfer->remaining = HID_DESCRIPTOR_LENGTH; |
|
||||||
transfer->ptr = hidDescriptor; |
|
||||||
transfer->direction = DEVICE_TO_HOST; |
|
||||||
success = true; |
|
||||||
} |
|
||||||
break; |
|
||||||
|
|
||||||
default: |
|
||||||
break; |
|
||||||
} |
|
||||||
break; |
|
||||||
default: |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Process class-specific requests
|
|
||||||
if (transfer->setup.bmRequestType.Type == CLASS_TYPE) { |
|
||||||
switch (transfer->setup.bRequest) { |
|
||||||
case SET_REPORT: |
|
||||||
// LED indicator
|
|
||||||
// TODO: check Interface and Report length?
|
|
||||||
// if (transfer->setup.wIndex == INTERFACE_KEYBOAD) { }
|
|
||||||
// if (transfer->setup.wLength == 1)
|
|
||||||
|
|
||||||
transfer->remaining = 1; |
|
||||||
// transfer->ptr = ?? what ptr should be set when OUT(not used?)
|
|
||||||
transfer->direction = HOST_TO_DEVICE; |
|
||||||
transfer->notify = true; /* notify with USBCallback_requestCompleted */ |
|
||||||
success = true; |
|
||||||
default: |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return success; |
|
||||||
} |
|
||||||
|
|
||||||
void HIDKeyboard::USBCallback_requestCompleted(uint8_t *buf, uint32_t length) { |
|
||||||
if (length > 0) { |
|
||||||
CONTROL_TRANSFER *transfer = getTransferPtr(); |
|
||||||
if (transfer->setup.bmRequestType.Type == CLASS_TYPE) { |
|
||||||
switch (transfer->setup.bRequest) { |
|
||||||
case SET_REPORT: |
|
||||||
led_state = buf[0]; |
|
||||||
break; |
|
||||||
default: |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,32 +0,0 @@ |
|||||||
#ifndef HIDKEYBOARD_H |
|
||||||
|
|
||||||
# include "stdint.h" |
|
||||||
# include "stdbool.h" |
|
||||||
# include "USBHID.h" |
|
||||||
# include "report.h" |
|
||||||
|
|
||||||
class HIDKeyboard : public USBDevice { |
|
||||||
public: |
|
||||||
HIDKeyboard(uint16_t vendor_id = 0xFEED, uint16_t product_id = 0xabed, uint16_t product_release = 0x0001); |
|
||||||
|
|
||||||
bool sendReport(report_keyboard_t report); |
|
||||||
uint8_t leds(void); |
|
||||||
|
|
||||||
protected: |
|
||||||
uint16_t reportLength; |
|
||||||
virtual bool USBCallback_setConfiguration(uint8_t configuration); |
|
||||||
virtual uint8_t* stringImanufacturerDesc(); |
|
||||||
virtual uint8_t* stringIproductDesc(); |
|
||||||
virtual uint8_t* stringIserialDesc(); |
|
||||||
virtual uint16_t reportDescLength(); |
|
||||||
virtual uint8_t* reportDesc(); |
|
||||||
virtual uint8_t* configurationDesc(); |
|
||||||
// virtual uint8_t * deviceDesc();
|
|
||||||
virtual bool USBCallback_request(); |
|
||||||
virtual void USBCallback_requestCompleted(uint8_t* buf, uint32_t length); |
|
||||||
|
|
||||||
private: |
|
||||||
uint8_t led_state; |
|
||||||
}; |
|
||||||
|
|
||||||
#endif |
|
@ -1,21 +0,0 @@ |
|||||||
#include "HIDKeyboard.h" |
|
||||||
#include "host.h" |
|
||||||
#include "host_driver.h" |
|
||||||
#include "mbed_driver.h" |
|
||||||
|
|
||||||
HIDKeyboard keyboard; |
|
||||||
|
|
||||||
/* Host driver */ |
|
||||||
static uint8_t keyboard_leds(void); |
|
||||||
static void send_keyboard(report_keyboard_t *report); |
|
||||||
static void send_mouse(report_mouse_t *report); |
|
||||||
static void send_system(uint16_t data); |
|
||||||
static void send_consumer(uint16_t data); |
|
||||||
|
|
||||||
host_driver_t mbed_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer}; |
|
||||||
|
|
||||||
static uint8_t keyboard_leds(void) { return keyboard.leds(); } |
|
||||||
static void send_keyboard(report_keyboard_t *report) { keyboard.sendReport(*report); } |
|
||||||
static void send_mouse(report_mouse_t *report) {} |
|
||||||
static void send_system(uint16_t data) {} |
|
||||||
static void send_consumer(uint16_t data) {} |
|
@ -1,3 +0,0 @@ |
|||||||
#include "host_driver.h" |
|
||||||
|
|
||||||
extern host_driver_t mbed_driver; |
|
@ -1,51 +0,0 @@ |
|||||||
#include <stdbool.h> |
|
||||||
#include "ps2_io.h" |
|
||||||
#include "gpio_api.h" |
|
||||||
|
|
||||||
static gpio_t clock; |
|
||||||
static gpio_t data; |
|
||||||
|
|
||||||
/*
|
|
||||||
* Clock |
|
||||||
*/ |
|
||||||
void clock_init(void) { |
|
||||||
gpio_init(&clock, P0_9); |
|
||||||
gpio_mode(&clock, OpenDrain | PullNone); |
|
||||||
} |
|
||||||
|
|
||||||
void clock_lo(void) { |
|
||||||
gpio_dir(&clock, PIN_OUTPUT); |
|
||||||
gpio_write(&clock, 0); |
|
||||||
} |
|
||||||
void clock_hi(void) { |
|
||||||
gpio_dir(&clock, PIN_OUTPUT); |
|
||||||
gpio_write(&clock, 1); |
|
||||||
} |
|
||||||
|
|
||||||
bool clock_in(void) { |
|
||||||
gpio_dir(&clock, PIN_INPUT); |
|
||||||
return gpio_read(&clock); |
|
||||||
} |
|
||||||
|
|
||||||
/*
|
|
||||||
* Data |
|
||||||
*/ |
|
||||||
void data_init(void) { |
|
||||||
gpio_init(&data, P0_8); |
|
||||||
gpio_mode(&data, OpenDrain | PullNone); |
|
||||||
} |
|
||||||
|
|
||||||
void data_lo(void) { |
|
||||||
gpio_dir(&data, PIN_OUTPUT); |
|
||||||
gpio_write(&data, 0); |
|
||||||
} |
|
||||||
|
|
||||||
void data_hi(void) { |
|
||||||
gpio_dir(&data, PIN_OUTPUT); |
|
||||||
gpio_write(&data, 1); |
|
||||||
} |
|
||||||
|
|
||||||
bool data_in(void) { |
|
||||||
gpio_dir(&data, PIN_INPUT); |
|
||||||
return gpio_read(&data); |
|
||||||
} |
|
Loading…
Reference in new issue