#include "chime.h"
#include "vend.h"
+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;
+}
+
int main() {
/* do stuff */
- set_msg("UNIVERSITY");
+ set_msg("UNIVERSITY", WRAP_NONE);
delay(1000);
- set_msg(" COMPUTER ");
+ set_msg(" COMPUTER ", WRAP_NONE);
delay(1000);
- set_msg(" CLUB ");
+ set_msg(" CLUB ", WRAP_NONE);
delay(1000);
+ set_msg("UCC *** INSERT COINS OR USER-ID", WRAP_SCROLL_L);
while(1) {
+ /* this needs to be a relatively tight loop to make sure we catch
+ * keypresses
+ */
keypad_read();
if (keypad_pressed()) {
- switch (last_key) {
-
+ if (last_key != KEY_RESET) {
+ if (uid_enter() && pin_enter()) {
+ /* authenticate them */
+ } else {
+ uid = 0;
+ pin = 0;
+ /* move on */
+ }
}
}
}
*/
display_init();
set_bus_expanded();
+ /* enable RTI & set rate */
+ /* init coin mech */
main();
}