+u16 uid;
+u16 pin;
+
+bool uid_enter() {
+ u8 uidpos;
+ /* the user has started to type in his/her UID. grab the last key and continue
+ * reading. Returns true if a UID was entered successfully.
+ * The UID will be entered as 5 digits. (shorter uids should be pre-padded
+ * with zeros)
+ */
+ uid = last_key%10; /* 10 => 0, it was _not_ reset (hopefuly :) */
+ set_msg("UID? ", WRAP_NONE);
+ set_char((last_key%10)+'0', 5);
+
+ for (uidpos = 2; uidpos <= 5; uidpos++) {
+ keypad_getkey();
+ if (last_key == KEY_RESET) {
+ uid = 0;
+ return 0;
+ }
+ uid = (uid*10) + (last_key%10);
+ set_char((last_key%10)+'0', 4+uidpos);
+ }
+ return 1;
+}
+
+
+bool pin_enter() {
+ u8 pinpos;
+ /* We ask for a pin, display a PIN: prompt. PINs must be a 4 digit number.
+ * Strictly, they must be 16-bit, but it's easier to use the guarantee that
+ * 4-digits numbers are < 65536
+ *
+ * Also display X's on screen as the pin is entered.
+ */
+ set_msg("PIN? ", WRAP_NONE);
+ for (pinpos = 1; pinpos <= 5; pinpos++) {
+ keypad_getkey();
+ if (last_key == KEY_RESET) {
+ pin = 0;
+ return 0;
+ }
+ pin = (pin*10) + (last_key%10);
+ set_char('X', 4+pinpos);
+ }
+ return 1;
+}
+