From cd10eef059e9d9c34c927f3ac53ac43f4a9716c1 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Sat, 06 Jun 2020 18:20:40 +0800
Subject: [PATCH] add TLV client database save and send support

---
 prj1_tlv/tlv_client.c |   81 ++++++++++++++++++++++------------------
 1 files changed, 44 insertions(+), 37 deletions(-)

diff --git a/prj1_tlv/tlv_client.c b/prj1_tlv/tlv_client.c
index d3a307c..a8108bc 100644
--- a/prj1_tlv/tlv_client.c
+++ b/prj1_tlv/tlv_client.c
@@ -22,6 +22,7 @@
 #include "ds18b20.h"
 #include "socket.h"
 #include "tlv_pack.h"
+#include "sqlite_cli.h"
 
 #define PROG_VERSION     "1.0.0"
 #define RPI_SN           "RPI00001"
@@ -130,15 +131,11 @@
         } 
     }
 
-#if 1
     if( !host )
     {
         printf("ERROR: No argument specify host server address and port, please refer to usage\n");
-    //    return 1;
+        return 1;
     }
-
-
-#endif
 
     /* check program already running or not, if already running then exit, or set running as daemon */
     snprintf(pid_file, sizeof(pid_file), "/tmp/%s.pid", progname);
@@ -162,18 +159,16 @@
         return 2;
     }
 
+    log_nrml("Program start running\n");
+
     /* install signal proc handler */
     install_proc_signal();
 
-    log_nrml("Program start running\n");
-
-#if 0
-    if( initial_db(&sqldb, db_file) < 0)
+    if( clidb_init("./tlv_client.db")< 0) 
     {
-        log_err("initialise sqlite database failure\n");
+        log_err("initial sqlite database failure\n");
         return 3;
     }
-#endif
 
     last_time = 0;
 
@@ -181,7 +176,7 @@
     while( !g_signal.stop )
     {
         time(&cur_time);
-        if( cur_time-last_time > 3)
+        if( cur_time-last_time > 10)
         {
             log_nrml("start sample temperature now.\n");
             rv = 0;
@@ -213,44 +208,49 @@
             }
         }
 
-        if( (tlv.flag&TLV_FLAG_TX) && SOCK_STAT_CONNECTED==sock.status )
+        if( SOCK_STAT_CONNECTED == sock.status )
         {
-            if(0 == socket_send_tlv_pack(&sock, &tlv, DEF_ACK_TIMEOUT, DEF_RETRYTIMES) )
-            {
-                tlv.flag = 0;
+            /* send current new sample TLV packet  */
+            if( tlv.flag&TLV_FLAG_TX )
+            { 
+                if(0 == socket_send_tlv_pack(&sock, &tlv, DEF_ACK_TIMEOUT, DEF_RETRYTIMES) ) 
+                {
+                    tlv.flag = 0;
+                }
             }
-        }
 
-#if 0
-        /* need to send TLV packet in database now  */ 
-        for(i=0; i<5; i++)
-        {
-            /* get a TLV record from DB and send it by socket  */ 
-            /* rv<0: Erorr  rv=0: No record  >0: record count  */
-            rv = get_db_tlv_pack(sqldb, tlv, size) ; 
-            if( rv <= 0)
-                break;
-
-            if( 0 == socket_send_tlv_pack() ) 
+            /* get TLV apcket from database and send it by socket, maxim 5 records  */ 
+            for(i=0; i<5; i++)
             {
-                /* delete the record from DB */
-                del_db_tlv_pack();
+                int            id;
+                tlv_buf_t      tmp;
+
+                if( clidb_pop_tlvpack(&tmp, &id) <= 0 ) 
+                {
+                    break;
+                }
+
+                /* send the TLV packet from database */
+                if(0 == socket_send_tlv_pack(&sock, &tmp, DEF_ACK_TIMEOUT, DEF_RETRYTIMES) ) 
+                {
+                    /* delete the record from DB */
+                    clidb_del_tlvpack(id);
+                }
             }
+
         }
 
-SAVE_DB:
-        if( tlv_buf.flag & TLV_FLAG_DB)
+        if( tlv.flag & TLV_FLAG_DB )
         {
-            record_db_tlv(sqldb, tlv_buf, tlv_len);
+            clidb_push_tlvpack(&tlv);
+            tlv.flag = 0;
         }
-#endif
 
         sleep(1);
     }
 
     logger_term();
-
-    //db_term();
+    clidb_term();
 
     return 0;
 } 
@@ -309,6 +309,9 @@
     int            rv = 0; 
     char           buf[128];
 
+    if( sock->status != SOCK_STAT_CONNECTED )
+        return -1;
+
     log_info("start to send tlv packet from socket now\n");
 
     for(i=0; i<retry_times; i++)
@@ -322,8 +325,12 @@
         if( (rv=socket_recv(sock, buf, sizeof(buf), timeout)) < 0 )
         {
             log_err("read ACK from server failure, rv=%d\n", rv);
-            return -2;
+            return 0;
         }
+
+        /* todo: parser ACK from buf  */
+        if( ACK )
+            break;
     }
 
     return 0;

--
Gitblit v1.9.1