Try to fix windows card detection issue

This commit is contained in:
Cédric Mesnil 2017-04-20 15:05:43 +02:00
parent fc0e37d5f0
commit c1efa87a7b
3 changed files with 12 additions and 6 deletions

View File

@ -35,6 +35,7 @@
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint8_t Ccid_BulkState;
uint8_t ccid_card_inserted;
uint8_t UsbIntMessageBuffer[INTR_MAX_PACKET_SIZE]; /* data buffer*/
__IO uint8_t PrevXferComplete_IntrIn;
usb_ccid_param_t usb_ccid_param;
@ -68,7 +69,7 @@ void CCID_Init (USBD_HandleTypeDef *pdev)
memset(&Ccid_SlotStatus, 0, sizeof(Ccid_SlotStatus));
memset(&Protocol0_DataStructure, 0, sizeof(Protocol0_DataStructure));
memset(&Ccid_bulk_data, 0, sizeof(Ccid_bulk_data));
ccid_card_inserted = 0;
/* CCID Related Initialization */
CCID_SetIntrTransferStatus(1); /* Transfer Complete Status */
CCID_UpdSlotChange(1);
@ -77,6 +78,9 @@ void CCID_Init (USBD_HandleTypeDef *pdev)
/* Prepare Out endpoint to receive 1st packet */
Ccid_BulkState = CCID_STATE_IDLE;
USBD_LL_PrepareReceive(pdev, CCID_BULK_OUT_EP, CCID_BULK_EPOUT_SIZE);
// send the smartcard as inserted state at boot time
io_usb_ccid_set_card_inserted(1);
}
/**
@ -463,7 +467,7 @@ void CCID_SetIntrTransferStatus (uint8_t xfer_Status)
uint8_t SC_Detect(void) {
return 1;
return ccid_card_inserted;
}
void SC_Poweroff(void) {
@ -569,9 +573,9 @@ void io_usb_ccid_reply(unsigned char* buffer, unsigned short length) {
// start sending rpely
CCID_Send_Reply(&USBD_Device);
}
// ask for power on
void io_usb_ccid_poweron(void) {
void io_usb_ccid_set_card_inserted(unsigned int inserted) {
ccid_card_inserted = inserted;
CCID_UpdSlotChange(1);
CCID_IntMessage(&USBD_Device);
}
@ -581,7 +585,6 @@ void io_usb_ccid_poweron(void) {
#endif // HAVE_USB_CLASS_CCID
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -165,6 +165,8 @@ __attribute__((section(".boot"))) int main(void) {
io_seproxyhal_init();
USB_CCID_power(1);
io_usb_ccid_set_card_inserted(1);
//set up
gpg_init();

View File

@ -96,7 +96,8 @@ static unsigned int validate_pin();
/* ------------------------------- Helpers UX ------------------------------- */
void ui_CCID_reset(void) {
//INSERT CODE HERE TO REMOVE/INSERT THE TOKEN
io_usb_ccid_set_card_inserted(0);
io_usb_ccid_set_card_inserted(1);
}
void ui_info(const char* msg1, const char* msg2, const void *menu_display, unsigned int value) {