优化流水存储代码
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index 5d28351..0696a9b 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -633,8 +633,6 @@
void sp_qrcode_handle(sp_pos_t* pos, sp_cardworkstate_t* cardWorkState)
{
uint16 ret = 0;
- sp_transdtl_t record;
- MEMCLEAR(&record, sizeof(record));
switch(cardWorkState->current_state)
{
case CARDWORKSTATUS_NONE:
@@ -654,7 +652,7 @@
cardWorkState->current_state = CARDWORKSTATUS_ERROR;
break;
}
- ret = sp_prepare_behalf_transdtl(pos, &CARD, &record);
+ ret = sp_prepare_behalf_transdtl(pos, &CARD);
if(ret)
{
cardWorkState->errcode = RC_QRCODE_TIMEOUT;
diff --git a/supwisdom/sp_data.c b/supwisdom/sp_data.c
index d8d40a7..7417423 100644
--- a/supwisdom/sp_data.c
+++ b/supwisdom/sp_data.c
@@ -12,7 +12,6 @@
{
uint8 crc[2];
uint8 buff[sizeof(sp_last_transdtl_t)];
- MEMCLEAR(buff, sizeof(buff));
pos->last_transdtl.this_offset += sizeof(sp_last_transdtl_t);
if(pos->last_transdtl.this_offset >= DEF_FLASH_PageSize)
@@ -20,9 +19,9 @@
sp_flash_erase(ADDR_LAST_TRANSNO);
pos->last_transdtl.this_offset = 0;
}
- sp_protocol_crc((uint8*)&pos->last_transdtl, sizeof(buff)-2, pos->last_transdtl.crc);
+ sp_protocol_crc((uint8*)&pos->last_transdtl, sizeof(sp_last_transdtl_t)-2, pos->last_transdtl.crc);
sp_flash_write(pos->last_transdtl.this_offset+ADDR_LAST_TRANSNO,
- (uint8*)&pos->last_transdtl, sizeof(buff));
+ (uint8*)&pos->last_transdtl, sizeof(sp_last_transdtl_t));
sp_flash_read(pos->last_transdtl.this_offset+ADDR_LAST_TRANSNO, buff, sizeof(buff));
sp_protocol_crc(buff, sizeof(buff)-2, crc);
@@ -36,9 +35,6 @@
static uint16 sp_write_behalf_record(sp_pos_t* pos, sp_transdtl_t* record)
{
- uint8 buf[record_behalf_len];
- MEMCLEAR(buf, sizeof(buf));
-
pos->last_transdtl.transaddr += sizeof(sp_transdtl_t);
if(pos->last_transdtl.transaddr % DEF_FLASH_PageSize == 0)
{
@@ -48,7 +44,7 @@
}
sp_flash_erase(pos->last_transdtl.transaddr);
}
- sp_flash_write(pos->last_transdtl.transaddr, (uint8*)record, sizeof(buf));
+ sp_flash_write(pos->last_transdtl.transaddr, (uint8*)record, record_behalf_len);
return 0;
}
@@ -56,10 +52,8 @@
{
uint8 crc[2];
uint8 buff[sizeof(sp_transdtl_t)];
- MEMCLEAR(crc, sizeof(crc));
- MEMCLEAR(buff, sizeof(buff));
- sp_protocol_crc((uint8*)record, sizeof(buff)-2, record->crc);
+ sp_protocol_crc((uint8*)record, sizeof(sp_transdtl_t)-2, record->crc);
sp_flash_write(pos->last_transdtl.transaddr+record_behalf_len,
(uint8*)record+record_behalf_len, record_below_len);
sp_flash_read(pos->last_transdtl.transaddr, buff, sizeof(buff));
@@ -73,49 +67,49 @@
}
//Ïû·Ñ³õʼ»¯ºó´æ´¢Éϰ벿·ÖÁ÷Ë®£¬·ÀÖ¹Ïû·Ñʧ°ÜÎÞÁ÷Ë®ÐÅÏ¢
-uint16 sp_prepare_behalf_transdtl(sp_pos_t* pos, sp_card_t* card, sp_transdtl_t* record)
+uint16 sp_prepare_behalf_transdtl(sp_pos_t* pos, sp_card_t* card)
{
uint8 ctime[6];
- MEMCLEAR(ctime, sizeof(ctime));
+ sp_transdtl_t record;
+ MEMCLEAR(&record, sizeof(record));
sp_get_bcdtime(ctime);
- memcpy(record->devphyid, pos->devphyid, sizeof(pos->devphyid));
- memcpy(record->transdate, ctime, 3);
- memcpy(record->transtime, ctime+3, 3);
- record->cobillno = card->cobillno;
- memcpy(record->cardphyid, card->cardphyid, sizeof(card->cardphyid));
+ memcpy(record.devphyid, pos->devphyid, sizeof(pos->devphyid));
+ memcpy(record.transdate, ctime, 3);
+ memcpy(record.transtime, ctime+3, 3);
+ record.cobillno = card->cobillno;
+ memcpy(record.cardphyid, card->cardphyid, sizeof(card->cardphyid));
if(pos->paymode == PAYMODE_QRCODE)
{
- record->transway = 2;
+ record.transway = 2;
}
else
{
- record->transway = 1;
+ record.transway = 1;
}
- sp_write_behalf_record(pos, record);
+ sp_write_behalf_record(pos, &record);
return sp_write_last_record(pos);
}
//ÈôÏû·Ñ³É¹¦£¬´æ´¢Ï°벿·ÖÁ÷Ë®ÐÅÏ¢
-uint16 sp_prepare_below_transdtl(sp_pos_t* pos, sp_card_t* card, sp_transdtl_t* record)
+uint16 sp_prepare_below_transdtl(sp_pos_t* pos, sp_card_t* card)
{
- uint8 buff[record_behalf_len];
- MEMCLEAR(buff, sizeof(buff));
+ sp_transdtl_t record;
+ MEMCLEAR(&record, sizeof(record));
- record->amount = pos->purchase.paid_sum;
+ record.amount = pos->purchase.paid_sum;
if(pos->paymode == PAYMODE_QRCODE)
{
- record->paidAmount = card->qrcode.paidAmount;
+ record.paidAmount = card->qrcode.paidAmount;
}
else
{
- record->paidAmount = 0;
+ record.paidAmount = 0;
}
- record->flowsensors = pos->purchase.paid_num;
- record->transtatus = 1;
- sp_flash_read(pos->last_transdtl.transaddr, buff, sizeof(buff));
- MEMCPY(record, buff, sizeof(buff));
- return sp_write_below_record(pos, record);
+ record.flowsensors = pos->purchase.paid_num;
+ record.transtatus = 1;
+ sp_flash_read(pos->last_transdtl.transaddr, (uint8*)&record, record_behalf_len);
+ return sp_write_below_record(pos, &record);
}
//Ñ»·´æ´¢Ã¿Ò»±ÊδÉÏ´«Á÷Ë®¼Ç¼µÄµØÖ·
@@ -123,18 +117,17 @@
{
uint8 crc[2];
uint8 buff[sizeof(sp_unconfirm_transdtl_t)];
- MEMCLEAR(buff, sizeof(buff));
- pos->unconfirm_transdtl.this_offset += sizeof(buff);
+ pos->unconfirm_transdtl.this_offset += sizeof(sp_unconfirm_transdtl_t);
if(pos->unconfirm_transdtl.this_offset >= DEF_FLASH_PageSize)
{
sp_flash_erase(ADDR_UNCONFIRM_TRANSNO);
pos->unconfirm_transdtl.this_offset = 0;
}
- sp_protocol_crc((uint8*)&pos->unconfirm_transdtl, sizeof(buff)-2,
+ sp_protocol_crc((uint8*)&pos->unconfirm_transdtl, sizeof(sp_unconfirm_transdtl_t)-2,
pos->unconfirm_transdtl.crc);
sp_flash_write(pos->unconfirm_transdtl.this_offset+ADDR_UNCONFIRM_TRANSNO,
- (uint8*)&pos->unconfirm_transdtl, sizeof(buff));
+ (uint8*)&pos->unconfirm_transdtl, sizeof(sp_unconfirm_transdtl_t));
sp_flash_read(pos->unconfirm_transdtl.this_offset+ADDR_UNCONFIRM_TRANSNO, buff,
sizeof(buff));
@@ -218,7 +211,8 @@
uint16 sp_clear_transdtl(sp_pos_t* pos)
{
uint32 i;
- uint16 ret = sp_flash_erase(ADDR_LAST_TRANSNO);
+ uint16 ret;
+ ret = sp_flash_erase(ADDR_LAST_TRANSNO);
ret |= sp_flash_erase(ADDR_UNCONFIRM_TRANSNO);
for(i = ADDR_TRANSDTL_BEGIN; i < ADDR_TRANSDTL_END; i += DEF_FLASH_PageSize)
{
@@ -229,10 +223,8 @@
static uint16 sp_init_device(sp_pos_t* pos)
{
- uint16 ret;
disp_hint_info_two(pos,"É豸³õʼ»¯","Çå¿ÕÁ÷Ë®",0);
- ret |= sp_clear_transdtl(pos);
- return ret;
+ return sp_clear_transdtl(pos);
}
void sp_reset_factory(sp_pos_t* pos)
diff --git a/supwisdom/sp_data.h b/supwisdom/sp_data.h
index 1ed4942..399b8f5 100644
--- a/supwisdom/sp_data.h
+++ b/supwisdom/sp_data.h
@@ -5,8 +5,8 @@
#include "sp_communicate.h"
//Á÷Ë®´¦Àí
-uint16 sp_prepare_behalf_transdtl(sp_pos_t* pos, sp_card_t* card, sp_transdtl_t* record);
-uint16 sp_prepare_below_transdtl(sp_pos_t* pos, sp_card_t* card, sp_transdtl_t* record);
+uint16 sp_prepare_behalf_transdtl(sp_pos_t* pos, sp_card_t* card);
+uint16 sp_prepare_below_transdtl(sp_pos_t* pos, sp_card_t* card);
uint16 sp_read_lastrecord(const sp_pos_t* pos, sp_transdtl_t* dtl);
uint16 sp_confirm_record(const sp_pos_t* pos, sp_transdtl_t* dtl);
uint16 sp_query_record(const sp_pos_t* pos, uint8 refno[16], sp_transdtl_t* dtl);