|  |  |  | 
|---|
|  |  |  | #include "socket.h" | 
|---|
|  |  |  | #include "sqlite_blob.h" | 
|---|
|  |  |  | #include "util_proc.h" | 
|---|
|  |  |  | #include "util_time.h" | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | void print_usage(char *progname) | 
|---|
|  |  |  | 
|---|
|  |  |  | int                  interval = 30; /* default report termperature every 30 seconds */ | 
|---|
|  |  |  | int                  sn = 1;        /* default serial number for device ID */ | 
|---|
|  |  |  | int                  debug = 0;     /* running in debug mode or not */ | 
|---|
|  |  |  | int                  loglevel = LOG_LEVEL_INFO; | 
|---|
|  |  |  | char                *logfile="client.log"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | socket_ctx_t         sock; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | case 'd': | 
|---|
|  |  |  | debug=1; | 
|---|
|  |  |  | logfile="stdout"; | 
|---|
|  |  |  | loglevel=LOG_LEVEL_DEBUG; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | case 'I': | 
|---|
|  |  |  | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if( debug ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | /* set logger to standard output with level debug */ | 
|---|
|  |  |  | logger_init(NULL, LOG_LEVEL_DEBUG); | 
|---|
|  |  |  | log_info("set program running on debug now.\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | /* set logger to $logfile with level info */ | 
|---|
|  |  |  | if( logger_init(logfile, LOG_LEVEL_INFO) < 0 ) | 
|---|
|  |  |  | if( logger_init(logfile, loglevel) < 0 ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | fprintf(stderr, "Initial logger file '%s' failure: %s\n", logfile, strerror(errno)); | 
|---|
|  |  |  | return 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if( !debug ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | log_info("set program running on background now.\n"); | 
|---|
|  |  |  | daemon(1, 1); /* don't change work path, don't close opened file descriptor */ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* socket disconnected */ | 
|---|
|  |  |  | /* +-------------------------------+ | 
|---|
|  |  |  | * |      socket disconnect        | | 
|---|
|  |  |  | * +-------------------------------+*/ | 
|---|
|  |  |  | if( sock.fd < 0 ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if( sample_flag ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | blobdb_push_packet(pack_buf, pack_bytes); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else /* socket connected */ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | /* +---------------------------------+ | 
|---|
|  |  |  | * |   socket send sample packet     | | 
|---|
|  |  |  | * +---------------------------------+*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* +-------------------------------+ | 
|---|
|  |  |  | * |      socket connected         | | 
|---|
|  |  |  | * +-------------------------------+*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*  socket send sample packet */ | 
|---|
|  |  |  | if( sample_flag ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | log_debug("socket send sample packet bytes[%d]: %s\n", pack_bytes, pack_buf); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* +---------------------------------+ | 
|---|
|  |  |  | * | socket send packet in database  | | 
|---|
|  |  |  | * +---------------------------------+*/ | 
|---|
|  |  |  | /*  socket send packet in database  */ | 
|---|
|  |  |  | if( !blobdb_pop_packet(pack_buf, sizeof(pack_buf), &pack_bytes) ) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | log_debug("socket send database packet bytes[%d]: %s\n", pack_bytes, pack_buf); | 
|---|
|  |  |  | 
|---|
|  |  |  | blobdb_del_packet(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sleep(1); | 
|---|
|  |  |  | msleep(100); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | socket_term(&sock); | 
|---|