Blink LED rapidly when asking ACK from user.
This commit is contained in:
21
ChangeLog
21
ChangeLog
@@ -1,3 +1,24 @@
|
|||||||
|
2018-09-27 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* src/gnuk.h (LED_WAIT_FOR_BUTTON): New.
|
||||||
|
* src/main.c (main): Blink rapidly when asking ACK.
|
||||||
|
* src/usb-ccid.c (ccid_thread): Use LED_WAIT_FOR_BUTTON.
|
||||||
|
|
||||||
|
2018-09-27 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* src/config.h.in: Add @ACKBTN_DEFINE@.
|
||||||
|
* src/configure: Add ACKBTN_SUPPORT.
|
||||||
|
* src/gnuk.h (EV_EXEC_FINISHED_ACK): New.
|
||||||
|
(CCID_STATE_CONFIRM_ACK): New.
|
||||||
|
* src/openpgp.c (process_command_apdu): Change for cmd_pso, and
|
||||||
|
cmd_internal_authenticate.
|
||||||
|
* src/usb-ccid.c (ccid_send_data_block_time_extension): Report
|
||||||
|
time extension differently when waiting ack button.
|
||||||
|
(ccid_handle_data): Support case of CCID_STATE_CONFIRM_ACK.
|
||||||
|
(ccid_handle_timeout): Likewise.
|
||||||
|
(ack_intr) [ACKBTN_SUPPORT]: New.
|
||||||
|
(ccid_thread) [ACKBTN_SUPPORT]: Add ack button handling.
|
||||||
|
|
||||||
2018-09-26 NIIBE Yutaka <gniibe@fsij.org>
|
2018-09-26 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
* chopstx: Update.
|
* chopstx: Update.
|
||||||
|
|||||||
2
chopstx
2
chopstx
Submodule chopstx updated: 49b0556a24...7dc67d2210
@@ -445,6 +445,7 @@ extern const uint8_t gnuk_string_serial[];
|
|||||||
#define LED_GNUK_EXEC 32
|
#define LED_GNUK_EXEC 32
|
||||||
#define LED_START_COMMAND 64
|
#define LED_START_COMMAND 64
|
||||||
#define LED_FINISH_COMMAND 128
|
#define LED_FINISH_COMMAND 128
|
||||||
|
#define LED_WAIT_FOR_BUTTON 256
|
||||||
#define LED_OFF LED_FINISH_COMMAND
|
#define LED_OFF LED_FINISH_COMMAND
|
||||||
void led_blink (int spec);
|
void led_blink (int spec);
|
||||||
|
|
||||||
|
|||||||
13
src/main.c
13
src/main.c
@@ -238,6 +238,7 @@ main (int argc, const char *argv[])
|
|||||||
uintptr_t entry;
|
uintptr_t entry;
|
||||||
#endif
|
#endif
|
||||||
chopstx_t ccid_thd;
|
chopstx_t ccid_thd;
|
||||||
|
int wait_for_ack = 0;
|
||||||
|
|
||||||
chopstx_conf_idle (1);
|
chopstx_conf_idle (1);
|
||||||
|
|
||||||
@@ -354,7 +355,11 @@ main (int argc, const char *argv[])
|
|||||||
{
|
{
|
||||||
eventmask_t m;
|
eventmask_t m;
|
||||||
|
|
||||||
m = eventflag_wait (&led_event);
|
if (wait_for_ack)
|
||||||
|
m = eventflag_wait_timeout (&led_event, LED_TIMEOUT_INTERVAL);
|
||||||
|
else
|
||||||
|
m = eventflag_wait (&led_event);
|
||||||
|
|
||||||
switch (m)
|
switch (m)
|
||||||
{
|
{
|
||||||
case LED_ONESHOT:
|
case LED_ONESHOT:
|
||||||
@@ -371,12 +376,16 @@ main (int argc, const char *argv[])
|
|||||||
display_fatal_code ();
|
display_fatal_code ();
|
||||||
break;
|
break;
|
||||||
case LED_SYNC:
|
case LED_SYNC:
|
||||||
|
wait_for_ack = 0;
|
||||||
set_led (led_inverted);
|
set_led (led_inverted);
|
||||||
break;
|
break;
|
||||||
case LED_GNUK_EXEC:
|
case LED_GNUK_EXEC:
|
||||||
goto exec;
|
goto exec;
|
||||||
|
case LED_WAIT_FOR_BUTTON:
|
||||||
|
wait_for_ack = 1;
|
||||||
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
emit_led (LED_TIMEOUT_ZERO, LED_TIMEOUT_STOP);
|
emit_led (LED_TIMEOUT_ONE, LED_TIMEOUT_ZERO);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1644,8 +1644,7 @@ openpgp_card_thread (void *arg)
|
|||||||
|
|
||||||
led_blink (LED_START_COMMAND);
|
led_blink (LED_START_COMMAND);
|
||||||
r = process_command_apdu ();
|
r = process_command_apdu ();
|
||||||
if (!r)
|
led_blink (LED_FINISH_COMMAND);
|
||||||
led_blink (LED_FINISH_COMMAND);
|
|
||||||
done:
|
done:
|
||||||
eventflag_signal (ccid_comm, r? EV_EXEC_FINISHED_ACK : EV_EXEC_FINISHED);
|
eventflag_signal (ccid_comm, r? EV_EXEC_FINISHED_ACK : EV_EXEC_FINISHED);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,10 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#ifdef ACKBTN_SUPPORT
|
||||||
|
#include <contrib/ackbtn.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#include "usb-cdc.h"
|
#include "usb-cdc.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
@@ -1844,6 +1848,7 @@ ccid_thread (void *arg)
|
|||||||
if (c->ccid_state == CCID_STATE_EXECUTE)
|
if (c->ccid_state == CCID_STATE_EXECUTE)
|
||||||
{
|
{
|
||||||
ackbtn_enable ();
|
ackbtn_enable ();
|
||||||
|
led_blink (LED_WAIT_FOR_BUTTON);
|
||||||
c->ccid_state = CCID_STATE_CONFIRM_ACK;
|
c->ccid_state = CCID_STATE_CONFIRM_ACK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user