Blame SOURCES/ccid-1.4.10-voltage.patch
|
|
3dd85f |
diff -up ./src/commands.c.voltage ./src/commands.c
|
|
|
3dd85f |
--- ./src/commands.c.voltage 2013-03-16 06:52:33.000000000 -0700
|
|
|
3dd85f |
+++ ./src/commands.c 2013-11-26 15:44:13.533254750 -0800
|
|
|
3dd85f |
@@ -97,6 +97,7 @@ RESPONSECODE CmdPowerOn(unsigned int rea
|
|
|
3dd85f |
status_t res;
|
|
|
3dd85f |
int length, count = 1;
|
|
|
3dd85f |
unsigned int atr_len;
|
|
|
3dd85f |
+ int init_voltage = 0;
|
|
|
3dd85f |
RESPONSECODE return_value = IFD_SUCCESS;
|
|
|
3dd85f |
_ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index);
|
|
|
3dd85f |
|
|
|
3dd85f |
@@ -207,6 +208,7 @@ RESPONSECODE CmdPowerOn(unsigned int rea
|
|
|
3dd85f |
voltage = 0; /* auto */
|
|
|
3dd85f |
}
|
|
|
3dd85f |
}
|
|
|
3dd85f |
+ init_voltage = voltage;
|
|
|
3dd85f |
|
|
|
3dd85f |
again:
|
|
|
3dd85f |
cmd[0] = 0x62; /* IccPowerOn */
|
|
|
3dd85f |
@@ -256,14 +258,19 @@ again:
|
|
|
3dd85f |
}
|
|
|
3dd85f |
|
|
|
3dd85f |
/* continue with 3 volts and 5 volts */
|
|
|
3dd85f |
- if (voltage > 1)
|
|
|
3dd85f |
+ if (voltage)
|
|
|
3dd85f |
{
|
|
|
3dd85f |
const char *voltage_code[] = { "auto", "5V", "3V", "1.8V" };
|
|
|
3dd85f |
|
|
|
3dd85f |
DEBUG_INFO3("Power up with %s failed. Try with %s.",
|
|
|
3dd85f |
voltage_code[voltage], voltage_code[voltage-1]);
|
|
|
3dd85f |
voltage--;
|
|
|
3dd85f |
- goto again;
|
|
|
3dd85f |
+ if (voltage == 0) {
|
|
|
3dd85f |
+ voltage = 3;
|
|
|
3dd85f |
+ }
|
|
|
3dd85f |
+ if (voltage != init_voltage) {
|
|
|
3dd85f |
+ goto again;
|
|
|
3dd85f |
+ }
|
|
|
3dd85f |
}
|
|
|
3dd85f |
|
|
|
3dd85f |
return IFD_COMMUNICATION_ERROR;
|