优化流水存储代码
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);