X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=VendServer%2FVendServer.py;h=8fbf11edda11d6902099a9a3a1d0ca37d93bba05;hb=33c571c78669c60bf4be3cff2f02278510497b13;hp=58622cf301819464d9b8ce76271b0fdd2b5b32ed;hpb=e2acb18c4bd108cc5385f6425c60fc01c4b3fc32;p=uccvend-vendserver.git diff --git a/VendServer/VendServer.py b/VendServer/VendServer.py index 58622cf..8fbf11e 100755 --- a/VendServer/VendServer.py +++ b/VendServer/VendServer.py @@ -31,7 +31,11 @@ Nick Bannon Cameron Patrick and a collective of hungry alpacas. +The MIFARE card reader bought to you by: +David Adam +Bug Hunting and hardware maintenance by: +Mitchell Pomery For a good time call +61 8 6488 3901 @@ -386,6 +390,7 @@ def handle_getting_pin_idle(state, event, params, v, vstatus): pass def handle_get_selection_idle(state, event, params, v, vstatus): + global _last_card_id # don't care right now. ### ### State logging out .. @@ -401,7 +406,7 @@ def handle_get_selection_idle(state, event, params, v, vstatus): vstatus.cur_user = '' vstatus.cur_pin = '' vstatus.cur_selection = '' - + _last_card_id = -1 reset_idler(v, vstatus) ### State fully logged out ... reset variables @@ -423,13 +428,14 @@ def handle_get_selection_idle(state, event, params, v, vstatus): def handle_get_selection_key(state, event, params, v, vstatus): + global _last_card_id key = params if len(vstatus.cur_selection) == 0: if key == 11: vstatus.cur_pin = '' vstatus.cur_user = '' vstatus.cur_selection = '' - + _last_card_id = -1 vstatus.mk.set_messages([(center('BYE!'), False, 1.5)]) reset_idler(v, vstatus, 2) return @@ -838,12 +844,17 @@ def handle_door_event(state, event, params, v, vstatus): logging.warning('Leaving open door mode') v.display("-YUM YUM!-") +_last_card_id = -1 + def handle_mifare_event(state, event, params, v, vstatus): + global _last_card_id card_id = params # Translate card_id into uid. - if card_id == None: + if card_id == None or card_id == _last_card_id: return + _last_card_id = card_id + try: vstatus.cur_user = get_uid(card_id) logging.info('Mapped card id to uid %s'%vstatus.cur_user) @@ -881,12 +892,15 @@ def handle_mifare_event(state, event, params, v, vstatus): return def handle_mifare_add_user_event(state, event, params, v, vstatus): - card_id = params + global _last_card_id + card_id = params # Translate card_id into uid. - if card_id == None: + if card_id == None or card_id == _last_card_id: return + _last_card_id = card_id + try: if get_uid(card_id) != None: vstatus.mk.set_messages( @@ -926,24 +940,24 @@ def create_state_table(vstatus): vstatus.state_table[(STATE_DOOR_CLOSING,MIFARE,1)] = do_nothing vstatus.state_table[(STATE_GETTING_UID,TICK,1)] = handle_getting_uid_idle - vstatus.state_table[(STATE_GETTING_UID,DOOR,1)] = do_nothing + vstatus.state_table[(STATE_GETTING_UID,DOOR,1)] = handle_door_event vstatus.state_table[(STATE_GETTING_UID,KEY,1)] = handle_getting_uid_key vstatus.state_table[(STATE_GETTING_UID,MIFARE,1)] = handle_mifare_event vstatus.state_table[(STATE_GETTING_PIN,TICK,1)] = handle_getting_pin_idle - vstatus.state_table[(STATE_GETTING_PIN,DOOR,1)] = do_nothing + vstatus.state_table[(STATE_GETTING_PIN,DOOR,1)] = handle_door_event vstatus.state_table[(STATE_GETTING_PIN,KEY,1)] = handle_getting_pin_key vstatus.state_table[(STATE_GETTING_PIN,MIFARE,1)] = handle_mifare_event vstatus.state_table[(STATE_GET_SELECTION,TICK,1)] = handle_get_selection_idle - vstatus.state_table[(STATE_GET_SELECTION,DOOR,1)] = do_nothing + vstatus.state_table[(STATE_GET_SELECTION,DOOR,1)] = handle_door_event vstatus.state_table[(STATE_GET_SELECTION,KEY,1)] = handle_get_selection_key vstatus.state_table[(STATE_GET_SELECTION,MIFARE,1)] = handle_mifare_add_user_event vstatus.state_table[(STATE_GRANDFATHER_CLOCK,TICK,1)] = handle_idle_grandfather_tick vstatus.state_table[(STATE_GRANDFATHER_CLOCK,TICK,2)] = handle_grandfather_tick - vstatus.state_table[(STATE_GRANDFATHER_CLOCK,DOOR,1)] = do_nothing - vstatus.state_table[(STATE_GRANDFATHER_CLOCK,DOOR,2)] = do_nothing + vstatus.state_table[(STATE_GRANDFATHER_CLOCK,DOOR,1)] = handle_door_event + vstatus.state_table[(STATE_GRANDFATHER_CLOCK,DOOR,2)] = handle_door_event vstatus.state_table[(STATE_GRANDFATHER_CLOCK,KEY,1)] = do_nothing vstatus.state_table[(STATE_GRANDFATHER_CLOCK,KEY,2)] = do_nothing vstatus.state_table[(STATE_GRANDFATHER_CLOCK,MIFARE,1)] = handle_mifare_event