Skip to content
Snippets Groups Projects
Commit e54a050b authored by da1l6's avatar da1l6
Browse files

CardReader: Remove powersave mode (the final hardware supports turning of the

reader power completely).
CardReader: Send reply when an LCD command is complete.
parent 983020f8
No related branches found
No related tags found
No related merge requests found
...@@ -151,12 +151,13 @@ LDFLAGS += -lm ...@@ -151,12 +151,13 @@ LDFLAGS += -lm
# to get a full listing. # to get a full listing.
# #
AVRDUDE_PROGRAMMER = stk500v2 #AVRDUDE_PROGRAMMER = stk500v2
#AVRDUDE_PROGRAMMER = dragon_isp
#AVRDUDE_PROGRAMMER = usbtiny #AVRDUDE_PROGRAMMER = usbtiny
#AVRDUDE_PROGRAMMER = USBasp AVRDUDE_PROGRAMMER = USBasp
#AVRDUDE_PORT = usb # programmer connected to USB port AVRDUDE_PORT = usb # programmer connected to USB port
AVRDUDE_PORT = /dev/ttyUSB0 # programmer connected to serial device #AVRDUDE_PORT = /dev/ttyUSB0 # programmer connected to serial device
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port #AVRDUDE_PORT = lpt1 # programmer connected to parallel port
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_BITS) AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_BITS)
......
...@@ -48,14 +48,6 @@ void cardreader_alive(void){ ...@@ -48,14 +48,6 @@ void cardreader_alive(void){
transport_send_interrupt_message(2); transport_send_interrupt_message(2);
} }
void enable_power_save_mode(void){
powersave_mode = 1;
lcd_set_backlight(0);
}
void disable_power_save_mode(void){
powersave_mode = 0;
lcd_set_backlight(1);
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
void handle_sys_msg(uint8_t msg){ void handle_sys_msg(uint8_t msg){
...@@ -149,17 +141,17 @@ void display_receive_error(uint16_t status){ ...@@ -149,17 +141,17 @@ void display_receive_error(uint16_t status){
case 0: lcd_write_string_sz_P(PSTR("0-Byte Message")); break; case 0: lcd_write_string_sz_P(PSTR("0-Byte Message")); break;
case TRANSPORT_ERR_TIMEOUT: lcd_write_string_sz_P(PSTR("Read timeout")); break; case TRANSPORT_ERR_TIMEOUT: lcd_write_string_sz_P(PSTR("Read timeout")); break;
case TRANSPORT_ERR_CHECKSUM_FAIL: lcd_write_string_sz_P(PSTR("Checksum fail")); break; case TRANSPORT_ERR_CHECKSUM_FAIL: lcd_write_string_sz_P(PSTR("Checksum fail")); break;
case TRANSPORT_ERR_MESSAGE_ABORT: lcd_write_string_sz_P(PSTR("Msg truncated")); break; // case TRANSPORT_ERR_MESSAGE_ABORT: lcd_write_string_sz_P(PSTR("Msg truncated")); break;
case TRANSPORT_ERR_MESSAGE_TOO_LONG: lcd_write_string_sz_P(PSTR("Msg too long")); break; case TRANSPORT_ERR_MESSAGE_TOO_LONG: lcd_write_string_sz_P(PSTR("Msg too long")); break;
case TRANSPORT_ERR_UNEXPCETED_END: lcd_write_string_sz_P(PSTR("Unexp End of Msg")); break; // case TRANSPORT_ERR_UNEXPCETED_END: lcd_write_string_sz_P(PSTR("Unexp End of Msg")); break;
case TRANSPORT_ERR_NESTED_INTERRUPTS:lcd_write_string_sz_P(PSTR("Nested int. Msgs")); break; // case TRANSPORT_ERR_NESTED_INTERRUPTS:lcd_write_string_sz_P(PSTR("Nested int. Msgs")); break;
} }
} }
void display_card_status(void){ void display_card_status(void){
lcd_clear(); lcd_clear();
lcd_home(); lcd_home();
lcd_write_string_sz_P(PSTR("AVR CardReader")); lcd_write_string_sz_P(PSTR("PortalCardReader"));
lcd_set_pos(0,1); lcd_set_pos(0,1);
switch (card_status){ switch (card_status){
case CARD_STATUS_REMOVED: case CARD_STATUS_REMOVED:
...@@ -183,15 +175,12 @@ void display_card_status(void){ ...@@ -183,15 +175,12 @@ void display_card_status(void){
void sleep(void){ void sleep(void){
transport_flush();//be sure all data is sent to the host. transport_flush();//be sure all data is sent to the host.
wdt_disable(); //Disable watchdog while sleeping
// wdt_disable(); // set_sleep_mode(SLEEP_MODE_IDLE);
// if (powersave_mode){
// set_sleep_mode(SLEEP_MODE_PWR_DOWN);
// } else {
// set_sleep_mode(SLEEP_MODE_IDLE);
// }
// sleep_mode(); // sleep_mode();
// sleep_disable(); // sleep_disable();
wdt_enable(WDTO_8S); wdt_enable(WDTO_8S);
} }
...@@ -209,19 +198,15 @@ int main(void){ ...@@ -209,19 +198,15 @@ int main(void){
transport_set_interrupt_handler(CARDREADER_INTERRUPT_RESET, reset); transport_set_interrupt_handler(CARDREADER_INTERRUPT_RESET, reset);
transport_set_interrupt_handler(CARDREADER_INTERRUPT_HOST_ALIVE, host_alive); transport_set_interrupt_handler(CARDREADER_INTERRUPT_HOST_ALIVE, host_alive);
transport_set_interrupt_handler(CARDREADER_INTERRUPT_CARDREADER_ALIVE, cardreader_alive); transport_set_interrupt_handler(CARDREADER_INTERRUPT_CARDREADER_ALIVE, cardreader_alive);
transport_set_interrupt_handler(CARDREADER_INTERRUPT_ENABLE_POWER_SAVE_MODE, enable_power_save_mode);
transport_set_interrupt_handler(CARDREADER_INTERRUPT_DISABLE_POWER_SAVE_MODE, disable_power_save_mode);
lcd_set_backlight(!powersave_mode); lcd_set_backlight(0);
_delay_ms(200); _delay_ms(200);
lcd_init(); lcd_init();
display_card_status(); display_card_status();
//lcd_write_string_sz_P(PSTR("Waiting for Host")); //lcd_write_string_sz_P(PSTR("Waiting for Host"));
//"Ping" host //"Ping" host
transport_send_interrupt_message(CARDREADER_INTERRUPT_HOST_ALIVE);
if (ISO7816_is_card_present()) card_status = CARD_STATUS_INSERTED; if (ISO7816_is_card_present()) card_status = CARD_STATUS_INSERTED;
...@@ -233,6 +218,9 @@ int main(void){ ...@@ -233,6 +218,9 @@ int main(void){
uint8_t old_card_status = CARD_STATUS_REMOVED; uint8_t old_card_status = CARD_STATUS_REMOVED;
transport_send_interrupt_message(CARDREADER_INTERRUPT_CARDREADER_ALIVE);
transport_send_interrupt_message(CARDREADER_INTERRUPT_HOST_ALIVE);
while(1){ while(1){
wdt_reset(); wdt_reset();
...@@ -258,7 +246,8 @@ int main(void){ ...@@ -258,7 +246,8 @@ int main(void){
clockout_start(); clockout_start();
uint8_t ret = ISO7816_readATR(&card_atr); uint8_t ret = ISO7816_readATR(&card_atr);
if (ATR_IS_ERROR(ret)){ if (ATR_IS_ERROR(ret)){
card_status = CARD_STATUS_ERROR; //Set to error state (if the error was not caused by a removed card)
if (ret != ERR_ATR_CARD_REMOVED) card_status = CARD_STATUS_ERROR;
} else { } else {
card_status = CARD_STATUS_READY; card_status = CARD_STATUS_READY;
} }
......
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
#define CARDREADER_INTERRUPT_RESET 0 #define CARDREADER_INTERRUPT_RESET 0
#define CARDREADER_INTERRUPT_HOST_ALIVE 1 #define CARDREADER_INTERRUPT_HOST_ALIVE 1
#define CARDREADER_INTERRUPT_CARDREADER_ALIVE 2 #define CARDREADER_INTERRUPT_CARDREADER_ALIVE 2
#define CARDREADER_INTERRUPT_ENABLE_POWER_SAVE_MODE 3
#define CARDREADER_INTERRUPT_DISABLE_POWER_SAVE_MODE 4
#define CARDREADER_INTERRUPT_CARD_INSERTED 5 #define CARDREADER_INTERRUPT_CARD_INSERTED 5
#define CARDREADER_INTERRUPT_CARD_REMOVED 6 #define CARDREADER_INTERRUPT_CARD_REMOVED 6
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment