support USB_FSIJ_GNUK_CARD_CHANGE control
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2013-12-20 Niibe Yutaka <gniibe@fsij.org>
|
||||
|
||||
* src/usb_ctrl.c (USB_FSIJ_GNUK_CARD_CHANGE): New.
|
||||
(usb_cb_setup): Support USB_FSIJ_GNUK_CARD_CHANGE.
|
||||
* src/usb-icc.c (ccid_card_change_signal): New argument HOW.
|
||||
|
||||
2013-12-20 Niibe Yutaka <gniibe@fsij.org>
|
||||
|
||||
* polarssl/include/polarssl/bn_mul.h (MULADDC_1024_CORE)
|
||||
|
||||
@@ -17,7 +17,11 @@ struct apdu {
|
||||
};
|
||||
|
||||
extern struct apdu apdu;
|
||||
void ccid_card_change_signal (void);
|
||||
|
||||
#define CARD_CHANGE_INSERT 0
|
||||
#define CARD_CHANGE_REMOVE 1
|
||||
#define CARD_CHANGE_TOGGLE 2
|
||||
void ccid_card_change_signal (int how);
|
||||
|
||||
/* CCID thread */
|
||||
#define EV_RX_DATA_READY (1) /* USB Rx data available */
|
||||
|
||||
@@ -1325,11 +1325,14 @@ USBthread (void *arg)
|
||||
}
|
||||
|
||||
void
|
||||
ccid_card_change_signal (void)
|
||||
ccid_card_change_signal (int how)
|
||||
{
|
||||
struct ccid *c = &ccid;
|
||||
|
||||
eventflag_signal (&c->ccid_comm, EV_CARD_CHANGE);
|
||||
if (how == CARD_CHANGE_TOGGLE
|
||||
|| (c->icc_state == ICC_STATE_NOCARD && how == CARD_CHANGE_INSERT)
|
||||
|| (c->icc_state != ICC_STATE_NOCARD && how == CARD_CHANGE_REMOVE))
|
||||
eventflag_signal (&c->ccid_comm, EV_CARD_CHANGE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -241,9 +241,10 @@ static const uint8_t lun_table[] = { 0, 0, 0, 0, };
|
||||
|
||||
static const uint8_t *const mem_info[] = { &_regnual_start, __heap_end__, };
|
||||
|
||||
#define USB_FSIJ_GNUK_MEMINFO 0
|
||||
#define USB_FSIJ_GNUK_DOWNLOAD 1
|
||||
#define USB_FSIJ_GNUK_EXEC 2
|
||||
#define USB_FSIJ_GNUK_MEMINFO 0
|
||||
#define USB_FSIJ_GNUK_DOWNLOAD 1
|
||||
#define USB_FSIJ_GNUK_EXEC 2
|
||||
#define USB_FSIJ_GNUK_CARD_CHANGE 3
|
||||
|
||||
static uint32_t rbit (uint32_t v)
|
||||
{
|
||||
@@ -315,6 +316,14 @@ usb_cb_setup (uint8_t req, uint8_t req_no,
|
||||
|
||||
return download_check_crc32 ((uint32_t *)addr);
|
||||
}
|
||||
else if (req_no == USB_FSIJ_GNUK_CARD_CHANGE && len == 0)
|
||||
{
|
||||
if (value != 0 && value != 1 && value != 2)
|
||||
return USB_UNSUPPORT;
|
||||
|
||||
ccid_card_change_signal (value);
|
||||
return USB_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT))
|
||||
@@ -427,7 +436,7 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value,
|
||||
if (index == 1 && req_no == USB_HID_REQ_SET_REPORT)
|
||||
{
|
||||
if ((hid_report ^ hid_report_saved) & HID_LED_STATUS_CARDCHANGE)
|
||||
ccid_card_change_signal ();
|
||||
ccid_card_change_signal (CARD_CHANGE_TOGGLE);
|
||||
|
||||
hid_report_saved = hid_report;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user