Using new style.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2023-02-15 00:14:10 +01:00
parent 43ef33d60b
commit 31f899416c
4 changed files with 80 additions and 120 deletions

View File

@@ -39,16 +39,13 @@ extern bool wait_button();
extern void low_flash_init_core1();
static inline const uint16_t make_uint16_t(uint8_t b1, uint8_t b2)
{
static inline const uint16_t make_uint16_t(uint8_t b1, uint8_t b2) {
return (b1 << 8) | b2;
}
static inline const uint16_t get_uint16_t(const uint8_t *b, uint16_t offset)
{
static inline const uint16_t get_uint16_t(const uint8_t *b, uint16_t offset) {
return make_uint16_t(b[offset], b[offset + 1]);
}
static inline void put_uint16_t(uint16_t n, uint8_t *b)
{
static inline void put_uint16_t(uint16_t n, uint8_t *b) {
*b++ = (n >> 8) & 0xff;
*b = n & 0xff;
}

View File

@@ -62,8 +62,7 @@ app_t *current_app = NULL;
const uint8_t *ccid_atr = NULL;
int register_app(app_t *(*select_aid)(app_t *, const uint8_t *, uint8_t))
{
int register_app(app_t *(*select_aid)(app_t *, const uint8_t *, uint8_t)) {
if (num_apps < sizeof(apps) / sizeof(app_t)) {
apps[num_apps].select_aid = select_aid;
num_apps++;
@@ -74,19 +73,16 @@ int register_app(app_t *(*select_aid)(app_t *, const uint8_t *, uint8_t))
static uint32_t blink_interval_ms = BLINK_NOT_MOUNTED;
void led_set_blink(uint32_t mode)
{
void led_set_blink(uint32_t mode) {
blink_interval_ms = mode;
}
uint32_t timeout = 0;
void timeout_stop()
{
void timeout_stop() {
timeout = 0;
}
void timeout_start()
{
void timeout_start() {
timeout = board_millis();
}
@@ -94,8 +90,7 @@ void execute_tasks();
static bool req_button_pending = false;
bool is_req_button_pending()
{
bool is_req_button_pending() {
return req_button_pending;
}
@@ -103,16 +98,14 @@ uint32_t button_timeout = 15000;
bool cancel_button = false;
#ifdef ENABLE_EMULATION
uint32_t board_millis()
{
uint32_t board_millis() {
struct timeval start;
gettimeofday(&start, NULL);
return start.tv_sec * 1000 + start.tv_usec / 1000;
}
#else
bool wait_button()
{
bool wait_button() {
uint32_t start_button = board_millis();
bool timeout = false;
cancel_button = false;
@@ -144,8 +137,7 @@ bool wait_button()
struct apdu apdu;
void led_blinking_task()
{
void led_blinking_task() {
#ifdef PICO_DEFAULT_LED_PIN
static uint32_t start_ms = 0;
static uint8_t led_state = false;
@@ -168,8 +160,7 @@ void led_blinking_task()
#endif
}
void led_off_all()
{
void led_off_all() {
#ifdef PIMORONI_TINY2040
gpio_put(TINY2040_LED_R_PIN, 1);
gpio_put(TINY2040_LED_G_PIN, 1);
@@ -181,8 +172,7 @@ void led_off_all()
#endif
}
void init_rtc()
{
void init_rtc() {
#ifndef ENABLE_EMULATION
rtc_init();
datetime_t dt = {
@@ -201,8 +191,7 @@ void init_rtc()
extern void neug_task();
extern void usb_task();
void execute_tasks()
{
void execute_tasks() {
usb_task();
#ifndef ENABLE_EMULATION
tud_task(); // tinyusb device task
@@ -210,8 +199,7 @@ void execute_tasks()
led_blinking_task();
}
int main(void)
{
int main(void) {
#ifndef ENABLE_EMULATION
usb_init();

View File

@@ -39,13 +39,11 @@ static uint16_t w_len[ITF_TOTAL] = { 0 }, tx_r_offset[ITF_TOTAL] = { 0 };
static uint32_t timeout_counter[ITF_TOTAL] = { 0 };
uint8_t card_locked_itf = ITF_TOTAL; // no locked
void usb_set_timeout_counter(uint8_t itf, uint32_t v)
{
void usb_set_timeout_counter(uint8_t itf, uint32_t v) {
timeout_counter[itf] = v;
}
uint32_t usb_write_offset(uint8_t itf, uint16_t len, uint16_t offset)
{
uint32_t usb_write_offset(uint8_t itf, uint16_t len, uint16_t offset) {
#ifndef ENABLE_EMULATION
uint8_t pkt_max = 64;
#endif
@@ -75,8 +73,7 @@ uint32_t usb_write_offset(uint8_t itf, uint16_t len, uint16_t offset)
return w;
}
size_t usb_rx(uint8_t itf, const uint8_t *buffer, size_t len)
{
size_t usb_rx(uint8_t itf, const uint8_t *buffer, size_t len) {
uint16_t size = MIN(sizeof(rx_buffer[itf]) - w_offset[itf], len);
if (size > 0) {
if (buffer == NULL) {
@@ -90,7 +87,8 @@ size_t usb_rx(uint8_t itf, const uint8_t *buffer, size_t len)
size = driver_read_ccid(rx_buffer[itf] + w_offset[itf], size);
}
#endif
} else {
}
else {
memcpy(rx_buffer[itf] + w_offset[itf], buffer, size);
}
w_offset[itf] += size;
@@ -98,8 +96,7 @@ size_t usb_rx(uint8_t itf, const uint8_t *buffer, size_t len)
return size;
}
uint32_t usb_write_flush(uint8_t itf)
{
uint32_t usb_write_flush(uint8_t itf) {
int w = 0;
if (w_len[itf] > 0) {
#ifdef USB_ITF_HID
@@ -123,33 +120,27 @@ uint32_t usb_write_flush(uint8_t itf)
return w;
}
uint32_t usb_write(uint8_t itf, uint16_t len)
{
uint32_t usb_write(uint8_t itf, uint16_t len) {
return usb_write_offset(itf, len, 0);
}
uint16_t usb_read_available(uint8_t itf)
{
uint16_t usb_read_available(uint8_t itf) {
return w_offset[itf] - r_offset[itf];
}
uint16_t usb_write_available(uint8_t itf)
{
uint16_t usb_write_available(uint8_t itf) {
return w_len[itf] > 0;
}
uint8_t *usb_get_rx(uint8_t itf)
{
uint8_t *usb_get_rx(uint8_t itf) {
return rx_buffer[itf];
}
uint8_t *usb_get_tx(uint8_t itf)
{
uint8_t *usb_get_tx(uint8_t itf) {
return tx_buffer[itf];
}
void usb_clear_rx(uint8_t itf)
{
void usb_clear_rx(uint8_t itf) {
w_offset[itf] = r_offset[itf] = 0;
}
@@ -167,8 +158,7 @@ queue_t usb_to_card_q;
queue_t card_to_usb_q;
#endif
void usb_init()
{
void usb_init() {
#ifndef ENABLE_EMULATION
queue_init(&card_to_usb_q, sizeof(uint32_t), 64);
queue_init(&usb_to_card_q, sizeof(uint32_t), 64);
@@ -178,8 +168,7 @@ void usb_init()
extern int driver_process_usb_nopacket();
extern uint32_t timeout;
static int usb_event_handle(uint8_t itf)
{
static int usb_event_handle(uint8_t itf) {
#ifndef ENABLE_EMULATION
uint16_t rx_read = usb_read_available(itf);
#else
@@ -208,7 +197,8 @@ static int usb_event_handle(uint8_t itf)
queue_add_blocking(&usb_to_card_q, &flag);
#endif
timeout_start();
} else {
}
else {
#ifdef USB_ITF_HID
if (itf == ITF_HID) {
driver_process_usb_nopacket_hid();
@@ -224,8 +214,7 @@ static int usb_event_handle(uint8_t itf)
}
extern void low_flash_init();
void card_init_core1()
{
void card_init_core1() {
#ifndef ENABLE_EMULATION
low_flash_init_core1();
#endif
@@ -233,8 +222,7 @@ void card_init_core1()
size_t finished_data_size = 0;
void card_start(void (*func)(void))
{
void card_start(void (*func)(void)) {
#ifndef ENABLE_EMULATION
uint32_t m = 0;
while (queue_is_empty(&usb_to_card_q) == false) {
@@ -253,8 +241,7 @@ void card_start(void (*func)(void))
#endif
}
void card_exit()
{
void card_exit() {
#ifndef ENABLE_EMULATION
uint32_t flag = EV_EXIT;
queue_try_add(&usb_to_card_q, &flag);
@@ -263,8 +250,7 @@ void card_exit()
card_locked_itf = ITF_TOTAL;
}
extern void hid_task();
void usb_task()
{
void usb_task() {
#ifndef ENABLE_EMULATION
bool mounted = false;
#else
@@ -308,11 +294,13 @@ void usb_task()
#endif
led_set_blink(BLINK_MOUNTED);
card_locked_itf = ITF_TOTAL;
} else if (m == EV_PRESS_BUTTON) {
}
else if (m == EV_PRESS_BUTTON) {
uint32_t flag = wait_button() ? EV_BUTTON_TIMEOUT : EV_BUTTON_PRESSED;
queue_try_add(&usb_to_card_q, &flag);
}
} else {
}
else {
if (timeout > 0) {
if (timeout + timeout_counter[itf] < board_millis()) {
#ifdef USB_ITF_HID
@@ -339,8 +327,7 @@ void usb_task()
}
uint8_t *usb_prepare_response(uint8_t itf)
{
uint8_t *usb_prepare_response(uint8_t itf) {
#ifdef USB_ITF_HID
if (itf == ITF_HID) {
return driver_prepare_response_hid();

View File

@@ -38,8 +38,7 @@
//--------------------------------------------------------------------+
// Device Descriptors
//--------------------------------------------------------------------+
tusb_desc_device_t const desc_device =
{
tusb_desc_device_t const desc_device = {
.bLength = sizeof(tusb_desc_device_t),
.bDescriptorType = TUSB_DESC_DEVICE,
.bcdUSB = (USB_BCD),
@@ -60,8 +59,7 @@ tusb_desc_device_t const desc_device =
.bNumConfigurations = 1
};
uint8_t const *tud_descriptor_device_cb(void)
{
uint8_t const *tud_descriptor_device_cb(void) {
return (uint8_t const *) &desc_device;
}
@@ -70,8 +68,7 @@ uint8_t const *tud_descriptor_device_cb(void)
// Configuration Descriptor
//--------------------------------------------------------------------+
tusb_desc_configuration_t const desc_config =
{
tusb_desc_configuration_t const desc_config = {
.bLength = sizeof(tusb_desc_configuration_t),
.bDescriptorType = TUSB_DESC_CONFIGURATION,
.wTotalLength = (sizeof(tusb_desc_configuration_t)
@@ -118,8 +115,7 @@ static const struct ccid_class_descriptor desc_ccid = {
.bMaxCCIDBusySlots = 0x01,
};
tusb_desc_interface_t const desc_interface =
{
tusb_desc_interface_t const desc_interface = {
.bLength = sizeof(tusb_desc_interface_t),
.bDescriptorType = TUSB_DESC_INTERFACE,
.bInterfaceNumber = ITF_CCID,
@@ -131,8 +127,7 @@ tusb_desc_interface_t const desc_interface =
.iInterface = ITF_CCID + 5,
};
tusb_desc_endpoint_t const desc_ep1 =
{
tusb_desc_endpoint_t const desc_ep1 = {
.bLength = sizeof(tusb_desc_endpoint_t),
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = TUSB_DIR_IN_MASK | 1,
@@ -141,8 +136,7 @@ tusb_desc_endpoint_t const desc_ep1 =
.bInterval = 0
};
tusb_desc_endpoint_t const desc_ep2 =
{
tusb_desc_endpoint_t const desc_ep2 = {
.bLength = sizeof(tusb_desc_endpoint_t),
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = 2,
@@ -194,12 +188,10 @@ enum {
HID_OUTPUT(HID_DATA | HID_VARIABLE | HID_ABSOLUTE), \
HID_COLLECTION_END \
uint8_t const desc_hid_report[] =
{
uint8_t const desc_hid_report[] = {
TUD_HID_REPORT_DESC_FIDO_U2F(CFG_TUD_HID_EP_BUFSIZE)
};
uint8_t const desc_hid_report_kb[] =
{
uint8_t const desc_hid_report_kb[] = {
TUD_HID_REPORT_DESC_KEYBOARD(HID_REPORT_ID(REPORT_ID_KEYBOARD))
};
#define EPNUM_HID 0x03
@@ -220,20 +212,19 @@ static uint8_t desc_hid_kb[] = {
sizeof(desc_hid_report_kb), 0x80 | (EPNUM_HID + 1), 16, 5)
};
uint8_t const *tud_hid_descriptor_report_cb(uint8_t itf)
{
uint8_t const *tud_hid_descriptor_report_cb(uint8_t itf) {
printf("report_cb %d\n", itf);
if (itf == ITF_HID) {
return desc_hid_report;
} else if (itf == ITF_KEYBOARD) {
}
else if (itf == ITF_KEYBOARD) {
return desc_hid_report_kb;
}
return NULL;
}
#endif
uint8_t const *tud_descriptor_configuration_cb(uint8_t index)
{
uint8_t const *tud_descriptor_configuration_cb(uint8_t index) {
(void) index; // for multiple configurations
static uint8_t initd = 0;
@@ -262,14 +253,12 @@ uint8_t const *tud_descriptor_configuration_cb(uint8_t index)
#define MS_OS_20_DESC_LEN 0xB2
uint8_t const desc_bos[] =
{
uint8_t const desc_bos[] = {
// total length, number of device caps
TUD_BOS_DESCRIPTOR(BOS_TOTAL_LEN, 2)
};
uint8_t const *tud_descriptor_bos_cb(void)
{
uint8_t const *tud_descriptor_bos_cb(void) {
return desc_bos;
}
@@ -278,8 +267,7 @@ uint8_t const *tud_descriptor_bos_cb(void)
//--------------------------------------------------------------------+
// array of pointer to string descriptors
char const *string_desc_arr [] =
{
char const *string_desc_arr [] = {
(const char[]) { 0x09, 0x04 }, // 0: is supported language is English (0x0409)
"Pol Henarejos", // 1: Manufacturer
"Pico Key", // 2: Product
@@ -296,8 +284,7 @@ char const *string_desc_arr [] =
static uint16_t _desc_str[32];
uint16_t const *tud_descriptor_string_cb(uint8_t index, uint16_t langid)
{
uint16_t const *tud_descriptor_string_cb(uint8_t index, uint16_t langid) {
(void) langid;
uint8_t chr_count;
@@ -305,7 +292,8 @@ uint16_t const *tud_descriptor_string_cb(uint8_t index, uint16_t langid)
if (index == 0) {
memcpy(&_desc_str[1], string_desc_arr[0], 2);
chr_count = 1;
} else {
}
else {
// Note: the 0xEE index string is a Microsoft OS 1.0 Descriptors.
// https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors