修复刷卡报错问题和二维码有效期bug
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index 4052bfd..737b25a 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -286,25 +286,10 @@
return 0;
}
-static uint16 do_work_check(const sp_pos_t* pos)
-{
- //ÅжÏÏû·Ñ½ð¶îÈç¹û´óÓÚ20»òÕßÁ¬ÐøÏû·Ñ³¬¹ý2Сʱ£¬ÔòÍ£Ö¹³öË®
- if(pos->purchase.used_num >= 1000 || pos->purchase.paid_sum >= 1000)
- {
- return RC_CARD_TIMEOUT;
- }
- return 0;
-}
-
static uint16 do_work(sp_pos_t* pos, sp_card_t* card)
{
uint16 ret = 0;
sp_valve_on();
- ret = do_work_check(pos);
- if(ret)
- {
- return ret;
- }
//¼ÆËãÏû·Ñ½ð¶î
ret = sp_calc_payamt_by_flowsensor(pos, card);
if(ret)
@@ -468,7 +453,7 @@
cardWorkState->current_state = CARDWORKSTATUS_STOPPED;
break;
case CARDWORKSTATUS_STOPPED:
- cardWorkState->current_state = CARDWORKSTATUS_NONE;
+ disp_hint_info(pos, "Çë°Î¿¨", DELAY_TIME2s);
break;
case CARDWORKSTATUS_FEECARD_WORKING:
if(MEMCMP(pos->cardState.snr, card->cardphyid, 4) != 0)
@@ -476,11 +461,9 @@
cardWorkState->current_state = CARDWORKSTATUS_NONE;
break;
}
- //show_menu_options();
break;
case CARDWORKSTATUS_ERROR:
do_error(pos, cardWorkState->errcode);
- cardWorkState->current_state = CARDWORKSTATUS_NONE;
break;
default:
Delay_ms(DELAY_TIME200ms);
@@ -657,19 +640,27 @@
break;
case CARDWORKSTATUS_READY:
CARD.qrcode.nowtime = sp_get_ticker();
- if((CARD.qrcode.nowtime - CARD.qrcode.starttime) > CARD.qrcode.validtime)
+ if((CARD.qrcode.nowtime - CARD.qrcode.starttime) < CARD.qrcode.validtime*DELAY_TIME1s)
{
show_home(pos);
show_home_qrcode(CARD.qrcode.qrcode_url);
- if(CARD.qrcode.nowtime - tick > DELAY_TIME3s)
+ if(CARD.qrcode.nowtime - tick > DELAY_TIME2s)
{
tick = CARD.qrcode.nowtime;
ret = sp_qrcode_query(pos, &CARD);
if(!ret && CARD.qrcode.authstatus)
{
- do_start(pos);
- cardWorkState->last_state = cardWorkState->current_state;
- cardWorkState->current_state = CARDWORKSTATUS_WORKING;
+ if(CARD.permit)
+ {
+ cardWorkState->errcode = RC_LIMIT_CONSUMPTION;
+ cardWorkState->current_state = CARDWORKSTATUS_ERROR;
+ }
+ else
+ {
+ do_start(pos);
+ cardWorkState->last_state = cardWorkState->current_state;
+ cardWorkState->current_state = CARDWORKSTATUS_WORKING;
+ }
}
}
}
@@ -692,6 +683,11 @@
cardWorkState->current_state = CARDWORKSTATUS_ERROR;
break;
}
+ if(pos->purchase.paid_num > CARD.waterlimit)
+ {
+ disp_hint_info(pos, "ÒÑ´ïµ¥´Î³öË®ÉÏÏÞ", DELAY_TIME2s);
+ cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
+ }
cardWorkState->last_state = cardWorkState->current_state;
cardWorkState->pause_tick = sp_get_ticker();
break;