From f9f7a7a320abf47adbb84427e716c8eefca8ac2b Mon Sep 17 00:00:00 2001
From: Philipp Claves <pclaves@web.de>
Date: Wed, 22 Feb 2012 16:59:37 +0100
Subject: [PATCH] CardReader: Print human readable error message in case of
 Card ATR error. CardReader: Change standby message.

---
 CardReader/main.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/CardReader/main.c b/CardReader/main.c
index 5160cb1..4a525be 100644
--- a/CardReader/main.c
+++ b/CardReader/main.c
@@ -28,7 +28,7 @@ volatile uint16_t host_timeout = HOST_TIMEOUT;
 volatile uint8_t host_ping = 1;
 volatile uint8_t host_dead = 0;
 
-#define DISPLAY_RESET_TIMEOUT 400 /* 400*10 = 4 sec */
+#define DISPLAY_RESET_TIMEOUT 1000 /* 1000*10 = 4 sec */
 volatile uint16_t display_reset_timeout = DISPLAY_RESET_TIMEOUT;
 volatile uint8_t  display_reset = 1;
 
@@ -209,7 +209,7 @@ void display_card_status(void){
 		return;
 	}
 	
-	lcd_write_string_sz_P(PSTR("PortalCardReader"));
+	lcd_write_string_sz_P(PSTR("Warpzone Portal"));
 	lcd_set_pos(0,1);
 	switch (card_status){
 		case CARD_STATUS_REMOVED:
@@ -222,9 +222,17 @@ void display_card_status(void){
 			lcd_write_string_sz_P(PSTR("Card Ready"));
 			break;
 		case CARD_STATUS_ERROR:
-			lcd_write_string_sz_P(PSTR("Card Error 0x"));
-			lcd_write_byte_hex(card_atr_error);
-			lcd_write_char(' ');
+// 			lcd_write_string_sz_P(PSTR("Card Error 0x"));
+// 			lcd_write_byte_hex(card_atr_error);
+// 			lcd_write_char(' ');
+			switch(card_atr_error){
+				case ERR_ATR_TIMEOUT:                  lcd_write_string_sz_P(PSTR("Card Mute")); break;
+				case ERR_TOO_MANY_ATR_INTERFACE_BYTES: lcd_write_string_sz_P(PSTR("ATR too long")); break;
+				case ERR_ATR_CHECKSUM_FAIL:            lcd_write_string_sz_P(PSTR("ATR chksum fail")); break;
+				case ERR_PROTOCOL_NOT_SUPPORTED:       lcd_write_string_sz_P(PSTR("Card unspported")); break;
+				case ERR_ATR_CARD_REMOVED:             lcd_write_string_sz_P(PSTR("Card removed")); break;
+				default:                               lcd_write_string_sz_P(PSTR("Unknown error ")); lcd_write_byte_hex(card_atr_error); break;
+			}
 			break;
 	}
 // 	lcd_write_char('C');
-- 
GitLab