| | |
| | | #include "ds18b20.h" |
| | | #include "socket.h" |
| | | #include "tlv_pack.h" |
| | | #include "sqlite_cli.h" |
| | | |
| | | #define PROG_VERSION "1.0.0" |
| | | #define RPI_SN "RPI00001" |
| | |
| | | char pid_file[64] = { 0 }; /* The file used to record the PID */ |
| | | const char *progname=NULL; |
| | | |
| | | char *host = "192.168.2.110:10086"; |
| | | char *host = "127.0.0.1:10086"; |
| | | //char *host = "baidu.com:10086"; |
| | | int log_level = LOG_LEVEL_NRML; |
| | | char *log_file = DEF_LOG_FILE; |
| | |
| | | } |
| | | } |
| | | |
| | | #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); |
| | |
| | | return -1; |
| | | } |
| | | |
| | | daemon(1, 1); |
| | | set_daemon_running(pid_file); |
| | | } |
| | | |
| | | record_daemon_pid(pid_file); |
| | |
| | | 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; |
| | | |
| | |
| | | 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; |
| | |
| | | } |
| | | } |
| | | |
| | | 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; |
| | | } |
| | |
| | | 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++) |
| | |
| | | |
| | | if( (rv=socket_recv(sock, buf, sizeof(buf), timeout)) < 0 ) |
| | | { |
| | | log_err("read ACK from server failure, rv=%d\n"); |
| | | return -2; |
| | | log_err("read ACK from server failure, rv=%d\n", rv); |
| | | return 0; |
| | | } |
| | | |
| | | /* todo: parser ACK from buf */ |
| | | if( ACK ) |
| | | break; |
| | | } |
| | | |
| | | return 0; |