command to change fidi send by host
diff --git a/firmware/src_simtrace/phone.c b/firmware/src_simtrace/phone.c
index 1b78ecb..6138dab 100644
--- a/firmware/src_simtrace/phone.c
+++ b/firmware/src_simtrace/phone.c
@@ -122,6 +122,7 @@
* Internal variables
*-----------------------------------------------------------------------------*/
static uint8_t host_to_sim_buf[BUFLEN];
+static bool change_fidi = false;
void receive_from_host( void );
void sendResponse_to_phone( uint8_t *pArg, uint8_t status, uint32_t transferred, uint32_t remaining)
@@ -135,12 +136,25 @@
USART_SetReceiverEnabled(USART_PHONE, 0);
USART_SetTransmitterEnabled(USART_PHONE, 1);
- for (uint32_t i = 0; i < transferred; i++ ) {
+ uint32_t i = 0;
+ if (host_to_sim_buf[0] == 0xff) {
+ printf("Change FIDI detected\n");
+ // PTS command, change FIDI after command
+ i = 2;
+ change_fidi = true;
+ }
+ for (; i < transferred; i++ ) {
ISO7816_SendChar(host_to_sim_buf[i], &usart_info);
}
USART_SetTransmitterEnabled(USART_PHONE, 0);
USART_SetReceiverEnabled(USART_PHONE, 1);
+ if (change_fidi == true) {
+ printf("Change FIDI: %x\n", host_to_sim_buf[2]);
+ update_fidi(host_to_sim_buf[2]);
+ change_fidi = false;
+ }
+
receive_from_host();
}