修复刷卡报错问题和二维码有效期bug
diff --git a/supwisdom/sp_communicate.c b/supwisdom/sp_communicate.c
index e52ec0f..c86690a 100644
--- a/supwisdom/sp_communicate.c
+++ b/supwisdom/sp_communicate.c
@@ -80,7 +80,15 @@
   while(size-- > 0)
   {
     sp_unpack_value(&unpack,&field);
-    if(IS_KEY(PK_INT_WATERLIMIT,field.key))
+    if(IS_KEY(PK_INT_PERMIT, field.key))
+    {
+      card->permit = field.val.intval;
+    }
+    else if(IS_KEY(PK_STR_LIMITMSG, field.key))
+    {
+      MEMCPY(card->limitmsg, field.val.strval, field.strlen);
+    }
+    else if(IS_KEY(PK_INT_WATERLIMIT,field.key))
     {
       card->waterlimit = field.val.intval;
     }
@@ -270,7 +278,11 @@
   while(size-- > 0)
   {
     sp_unpack_value(&unpack,&field);
-    if(IS_KEY(PK_INT_COBILLNO, field.key))
+    if(IS_KEY(PK_INT_PERMIT, field.key))
+    {
+      card->permit = field.val.intval;
+    }
+    else if(IS_KEY(PK_INT_COBILLNO, field.key))
     {
       card->cobillno = field.val.intval;
     }
@@ -294,6 +306,10 @@
     {
       card->feepara.fee_unit = field.val.intval;
     }
+    else if(IS_KEY(PK_INT_WATERLIMIT, field.key))
+    {
+      card->waterlimit = field.val.intval;
+    }
   }
   return resp.retcode;
 }
@@ -558,23 +574,16 @@
   if(ticker - pos->last_comm_status.sendtime > COMM_WAIT_TIME)
   {
     if(pos->devlogin.last_login_ticker == 0 || pos->devlogin.login_flag == 0
-		|| ticker - pos->devlogin.last_login_ticker > DELAY_TIME60s*30)
+        || ticker - pos->devlogin.last_login_ticker > DELAY_TIME60s*30)
     {
-      if(ticker - pos->devlogin.last_login_ticker > DELAY_TIME60s*60)
-      {
         pos->devlogin.last_login_ticker = ticker;
         sp_async_equipment_login(pos);
-      }
     }
-    else if(ticker < pos->heartbeat.last_heartbeat_ticker
-            || pos->heartbeat.last_heartbeat_ticker == 0
-            || ticker - pos->heartbeat.last_heartbeat_ticker > DELAY_TIME15s*2)
+    if(pos->heartbeat.last_heartbeat_ticker == 0
+        || ticker - pos->heartbeat.last_heartbeat_ticker > DELAY_TIME60s)
     {
-      if(ticker - pos->heartbeat.last_heartbeat_ticker > DELAY_TIME60s)
-      {
         pos->heartbeat.last_heartbeat_ticker = ticker;
         sp_async_heartbeat(pos);
-      }
     }
     else
     {