From ea435789dc2fab30ec16fa765a0b6577fe08166a Mon Sep 17 00:00:00 2001
From: GuoWenxue <“guowenxue@gmail.com”>
Date: Tue, 19 Apr 2022 10:06:03 +0800
Subject: [PATCH] update client and socket.c, add DNS support

---
 iotd/main.c |   60 +++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/iotd/main.c b/iotd/main.c
index d418185..53cdf9c 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'},
@@ -117,10 +117,8 @@
     }
     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;
 
@@ -142,7 +140,6 @@
             log_nrml("Start MQTT subsciber worker thread ok\n"); 
         }
     }
-
 
     /*+--------------------------------------------+
      *|  Start  MQTT publisher thread if enable    |
@@ -174,37 +171,54 @@
 } /* ----- End of main() ----- */
 
 
-void control_thread_loop(void *ctx)
+void control_thread_loop(void *args)
 {
-    iotd_ctx_t            *ctx = (iotd_ctx_t *)ctx;
+    iotd_ctx_t            *ctx = (iotd_ctx_t *)args;
     hal_ctx_t             *hal_ctx;
-
+    float                  lux = 0.0;
+    int                    rv;
 
     hal_ctx = &ctx->hal_ctx;
 
-    log_nrml("Start control thread working...\n");
+    log_dbg("infrared configured [%d], lux configured [%d]\n", hal_ctx->gpio.infrared_enable, hal_ctx->lux_enable);
 
     while( ! g_signal.stop )
     { 
-        lux = tsl2561_get_lux(); 
-        if( lux > hal_ctx->lux_threshold )
+        if( hal_ctx->gpio.infrared_enable )
         {
-            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 )
+            if( hal_ctx->lux_enable )
             {
-                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);
+                lux = tsl2561_get_lux(); 
+
+                log_dbg("TSL2561 get Lux[%.3f] Treshold[%.3f].\n", lux, hal_ctx->lux_threshold);
+
+                if( lux > hal_ctx->lux_threshold )
+                {
+                    log_nrml("Lux[%.3f] > Treshold[%.3f], don't need light on and sleep now.\n", lux, hal_ctx->lux_threshold);
+                    if( hal_ctx->gpio.light_intval > 0) 
+                        sleep( hal_ctx->gpio.light_intval );
+                    else
+                        sleep(30);
+
+                    continue;
+                }
+            }
+
+            rv = infrared_detect();
+            if( rv & FLAG_INFRARED_INDOOR ) 
+            {
+                log_nrml("Someone incoming detected by indoor infrared\n");
+                thread_start(NULL, light_on_worker, "indoor" );
+            }
+
+            if( rv & FLAG_INFRARED_HALLWAY ) 
+            {
+                log_nrml("Someone incoming detected by hallway infrared\n");
+                thread_start(NULL, light_on_worker, "hallway" );
             }
         }
+
+        msleep(100);
     }
 }
 

--
Gitblit v1.9.1