优化代码和脱机时长判断
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index cfa75b7..b416a6d 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -121,8 +121,27 @@
}
//¶ÁÈ¡µÚÒ»±ÊδÉÏ´«Á÷Ë®Ïû·ÑÈÕÆÚʱ¼ä
-static uint8 sp_read_unconfirm_first_record(uint8 termtime[6])
+static uint8 sp_read_unconfirm_first_record(const sp_pos_t* pos,uint8 termtime[6])
{
+ sp_transdtl_t record;
+ uint16 ret;
+ uint8 crc[2];
+ //¼ì²âµ±Ç°ÊÇ·ñÓÐδÉÏ´«µÄÁ÷Ë®
+ if(pos->unconfirm_transdtl.transaddr <= pos->last_transdtl.transaddr)
+ {
+ ret = sp_flash_read((uint32)pos->unconfirm_transdtl.transaddr, (uint8*)&record,
+ sizeof(record));
+ if(!ret)
+ {
+ sp_protocol_crc((uint8*)&record, sizeof(record)-2,crc);
+ if(MEMCMP(record.crc,crc, 2) == 0)
+ {
+ MEMCPY(termtime,record.transdate, 3);
+ MEMCPY(termtime +3,record.transtime,3);
+ return 0;
+ }
+ }
+ }
return 1;
}
@@ -208,6 +227,15 @@
return 0;
}
+static uint16 do_card_check(sp_pos_t* pos,sp_card_t* card)
+{
+ if(card->permit == 1)
+ {
+ return RC_LIMIT_CONSUMPTION;
+ }
+ return 0;
+}
+
static uint16 do_new(sp_pos_t* pos, sp_card_t* card)
{
uint16 ret;
@@ -238,7 +266,12 @@
ret = sp_card_authentication(pos, card);
if(ret)
{
- return RC_CARD_AUTHENTICATION;
+ return ret;
+ }
+ ret = do_card_check(pos,card);
+ if(ret)
+ {
+ return ret;
}
ret = sp_prepare_behalf_transdtl(pos, card, &record);
if(ret)
@@ -599,7 +632,7 @@
cardWorkState->current_state = CARDWORKSTATUS_ERROR;
break;
}
- disp_hint_info_two(pos, "ÇëÇó¶þάÂë","ÇëÉÔµÈ...",0);
+ disp_hint_info_two(pos, "ÇëÇó¶þάÂë","ÇëÉÔµÈ...",0);
ret = sp_qrcode_init(pos, &CARD);
if(ret)
{