mirror of
https://github.com/polhenarejos/pico-hsm.git
synced 2026-05-03 21:36:25 +00:00
Adding notify_slot_change
This commit is contained in:
parent
366d59cbfa
commit
b69232dd55
1 changed files with 22 additions and 3 deletions
25
hsm2040.c
25
hsm2040.c
|
|
@ -126,9 +126,30 @@ static void apdu_init (struct apdu *a)
|
|||
a->res_apdu_data_len = 0; /* will be set by upper layer */
|
||||
}
|
||||
|
||||
#define NOTIFY_SLOT_CHANGE 0x50
|
||||
static void ccid_notify_slot_change(struct ccid *c)
|
||||
{
|
||||
uint8_t msg;
|
||||
uint8_t notification[2];
|
||||
|
||||
if (c->ccid_state == CCID_STATE_NOCARD)
|
||||
msg = 0x02;
|
||||
else
|
||||
msg = 0x03;
|
||||
|
||||
notification[0] = NOTIFY_SLOT_CHANGE;
|
||||
notification[1] = msg;
|
||||
|
||||
tud_vendor_write(notification, sizeof(notification));
|
||||
}
|
||||
|
||||
static void ccid_init_cb(void) {
|
||||
struct ccid *c = &ccid;
|
||||
TU_LOG2("-------- CCID INIT\r\n");
|
||||
vendord_init();
|
||||
|
||||
ccid_notify_slot_change(c);
|
||||
|
||||
}
|
||||
|
||||
static void ccid_reset(uint8_t rhport) {
|
||||
|
|
@ -138,11 +159,9 @@ static void ccid_reset(uint8_t rhport) {
|
|||
}
|
||||
|
||||
static uint16_t ccid_open(uint8_t rhport, tusb_desc_interface_t const *itf_desc, uint16_t max_len) {
|
||||
|
||||
tusb_desc_interface_t itf_vendor;
|
||||
TU_LOG2("-------- CCID OPEN\r\n");
|
||||
TU_VERIFY(itf_desc->bInterfaceClass == TUSB_CLASS_SMART_CARD && itf_desc->bInterfaceSubClass == 0 && itf_desc->bInterfaceProtocol == 0, 0);
|
||||
|
||||
vendord_open(rhport, itf_desc, max_len);
|
||||
|
||||
uint16_t const drv_len = sizeof(tusb_desc_interface_t) + sizeof(class_desc_ccid_t) + 2*sizeof(tusb_desc_endpoint_t);
|
||||
TU_VERIFY(max_len >= drv_len, 0);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue