From f3122844296bad2700d06d4c74985b080e584e20 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 21 Apr 2021 00:18:47 +0800 Subject: [PATCH] update main.c --- iotd/main.c | 78 ++++++++++++++++++++++----------------- 1 files changed, 44 insertions(+), 34 deletions(-) diff --git a/iotd/main.c b/iotd/main.c index e7833ff..80e90e7 100644 --- a/iotd/main.c +++ b/iotd/main.c @@ -31,6 +31,7 @@ #define PROG_VERSION "v1.0.0" #define DAEMON_PIDFILE "/tmp/.iotd.pid" +void control_thread_loop(void *ctx); static void program_usage(char *progname) { @@ -59,7 +60,6 @@ int debug = 0; int opt; char *progname=NULL; - float lux = 0.0; struct option long_options[] = { {"conf", required_argument, NULL, 'c'}, @@ -103,33 +103,29 @@ if( !conf_file ) debug = 1; - //printf("conf_file: %s debug:%d\n", conf_file, debug); - if( parser_conf(conf_file, &ctx, debug)<0 ) { fprintf(stderr, "Parser mqtted configure file failure\n"); return -2; } - return 0; if( hal_init(hal_ctx) < 0 ) { log_err("Initialise hardware failure\n"); return -3; } - else - { - log_nrml("HAL initialise ok\n"); - } + log_nrml("Initialise hardware okay.\n"); + + return 0; /* todo: debug and removed */ install_default_signal(); if( check_set_program_running(daemon, DAEMON_PIDFILE) < 0 ) goto OUT; - mosquitto_lib_init(); + mosquitto_lib_init(); /*+--------------------------------------------+ *| Start MQTT subsciber thread if enable | @@ -164,31 +160,10 @@ } } - - log_nrml("Start infrared monitor thread working...\n"); - while( ! g_signal.stop ) - { - lux = tsl2561_get_lux(); - if( lux > hal_ctx->lux_threshold ) - { - log_nrml("Lux[%.3f] > Treshold[%.3f], don't need auto light.\n", lux, hal_ctx->lux_threshold); - sleep(30); - continue; - } - - log_nrml("start infrared monitor detect...\n"); - if( infrared_detect() ) - { - log_nrml("Someone incoming detected by infrared\n"); - if( lux < hal_ctx->lux_threshold ) - { - log_nrml("Lux[%.3f] < Treshold[%.3f], auto light on now..\n", lux, hal_ctx->lux_threshold); - //turn_light(LIGHT_HALLWAY, ON); - alarm(hal_ctx->gpio.light_intval); - } - } - } - + /*+--------------------------------------------+ + *| Control thread start dead loop | + *+--------------------------------------------+*/ + control_thread_loop(&ctx); OUT: mosquitto_lib_cleanup(); @@ -199,3 +174,38 @@ } /* ----- End of main() ----- */ +void control_thread_loop(void *args) +{ + iotd_ctx_t *ctx = (iotd_ctx_t *)ctx; + hal_ctx_t *hal_ctx; + float lux = 0.0; + + hal_ctx = &ctx->hal_ctx; + + log_nrml("Start control thread working...\n"); + + while( ! g_signal.stop ) + { + if( hal_ctx->lux_enable ) + { + lux = tsl2561_get_lux(); + if( lux > hal_ctx->lux_threshold ) + { + log_nrml("Lux[%.3f] > Treshold[%.3f], don't need light on.\n", lux, hal_ctx->lux_threshold); + sleep(30); + continue; + } + } + +#if 0 + log_nrml("start infrared monitor detect...\n"); + if( infrared_detect() ) + { + log_nrml("Someone incoming detected by infrared\n"); + log_nrml("Lux[%.3f] < Treshold[%.3f], auto light on now..\n", lux, hal_ctx->lux_threshold); + } +#endif + } +} + + -- Gitblit v1.9.1