From eeb821fa6846e84c9fe3e80d58f41b7a5a418e70 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Wed, 21 Apr 2021 22:27:56 +0800
Subject: [PATCH] update hal.x

---
 iotd/main.c |   78 +++++++++++++++++++++------------------
 1 files changed, 42 insertions(+), 36 deletions(-)

diff --git a/iotd/main.c b/iotd/main.c
index e7833ff..54619b8 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 *args);
 
 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,27 @@
     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");
+
 
     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    |
@@ -147,7 +141,6 @@
         }
     }
 
-
     /*+--------------------------------------------+
      *|  Start  MQTT publisher thread if enable    |
      *+--------------------------------------------+*/
@@ -164,31 +157,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 +171,37 @@
 } /* ----- End of main() ----- */
 
 
+void control_thread_loop(void *args)
+{
+    iotd_ctx_t            *ctx = (iotd_ctx_t *)args;
+    hal_ctx_t             *hal_ctx;
+    float                  lux = 0.0;
+
+    hal_ctx = &ctx->hal_ctx;
+
+    while( ! g_signal.stop )
+    { 
+        if( hal_ctx->lux_enable )
+        {
+            lux = tsl2561_get_lux(); 
+            log_dbg("TSL2561 get Lux[%.3f].\n", 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;
+            }
+        }
+
+        log_nrml("start infrared monitor detect...\n");
+        if( infrared_detect() ) 
+        {
+            log_nrml("Someone incoming detected by infrared\n");
+        }
+
+        sleep(1);
+    }
+}
+
+

--
Gitblit v1.9.1