From 0007a0beea36408539e623d742787c38c03b5c80 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Sun, 14 Oct 2018 17:42:44 +0800
Subject: [PATCH] Update ds18b20 and move ds18b20 and sht20 into modules folder

---
 /dev/null                          |   93 -----------------------
 program/modules/ds18b20/ds18b20.c  |  119 +++++++++++++++++++++++++++++
 program/modules/sht20/sht20.c      |    0 
 program/modules/ds18b20/ds18b20.py |    0 
 program/modules/sht20/sht20.py     |    0 
 program/modules/ds18b20/makefile   |   11 ++
 6 files changed, 130 insertions(+), 93 deletions(-)

diff --git a/program/ds18b20/ds18b20.c b/program/ds18b20/ds18b20.c
deleted file mode 100644
index c04d69b..0000000
--- a/program/ds18b20/ds18b20.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-
-int ds18b20_get_temperature(float *temp);
-
-
-int main(int argc, char *argv[])
-{
-	float       temp;
-
-	if( ds18b20_get_temperature(&temp) < 0 )
-	{
-		printf("ERROR: ds18b20 get temprature failure\n");
-		return 1;
-	}
-
-       	printf("DS19B20 get temperature: %f ℃\n", temp);
-       	return 0;
-}
-
-int ds18b20_get_temperature(float *temp)
-{
-    char            w1_path[50] = "/sys/bus/w1/devices/";
-    char            chip[20];
-    char            buf[128];
-    DIR            *dirp;
-    struct dirent  *direntp;
-    int             fd =-1;
-    char           *ptr;
-    float           value;
-    int             found = 0;
-
-    if( !temp )
-    {
-	    return -1;
-    }
-
-    if((dirp = opendir(w1_path)) == NULL)
-    {
-        printf("opendir error: %s\n", strerror(errno));
-        return -2;
-    }
-
-    while((direntp = readdir(dirp)) != NULL)
-    {
-        if(strstr(direntp->d_name,"28-"))
-        {
-            strcpy(chip,direntp->d_name);
-	    found = 1;
-        }
-    }
-    closedir(dirp);
-
-    if( !found )
-    {
-	    printf("Can not find ds18b20 in %s\n", w1_path);
-	    return -3;
-    }
-
-    strncat(w1_path, chip, sizeof(w1_path));
-    strncat(w1_path, "/w1_slave", sizeof(w1_path));
-
-    if( (fd=open(w1_path, O_RDONLY)) < 0 ) 
-    { 
-	    printf("open %s error: %s\n", w1_path, strerror(errno)); 
-	    return -4;
-    } 
-    
-    if(read(fd, buf, sizeof(buf)) < 0)
-    {
-	    printf("read %s error: %s\n", w1_path, strerror(errno)); 
-	    return -5;
-    } 
-    
-    ptr = strstr(buf, "t=")+2;
-
-    if( !ptr )
-    {
-	    printf("ERROR: Can not get temperature\n");
-	    return -6;
-    }
-
-    *temp = atof(ptr)/1000;
-   
-    return 0;
-}
-
diff --git a/program/modules/ds18b20/ds18b20.c b/program/modules/ds18b20/ds18b20.c
new file mode 100644
index 0000000..19eeca5
--- /dev/null
+++ b/program/modules/ds18b20/ds18b20.c
@@ -0,0 +1,119 @@
+/*********************************************************************************
+ *      Copyright:  (C) 2018 LingYun IoT System Studio
+ *                  All rights reserved.
+ *
+ *       Filename:  ds18b20.c
+ *    Description:  This file 
+ *                 
+ *        Version:  1.0.0(2018/10/14)
+ *         Author:  Guo Wenxue <guowenxue@gmail.com>
+ *      ChangeLog:  1, Release initial version on "2018/10/14 12:13:26"
+ *                 
+ ********************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <string.h>
+#include <time.h>
+#include <errno.h>
+
+int ds18b20_get_temperature(float *temp);
+
+int main(int argc, char *argv[])
+{
+        float       temp;
+
+        if( ds18b20_get_temperature(&temp) < 0 )
+        {
+                printf("ERROR: ds18b20 get temprature failure\n");
+                return 1;
+        }
+
+        printf("DS19B20 get temperature: %f ℃\n", temp);
+        return 0;
+}
+
+
+/* File Content:
+   pi@raspberrypi:~/guowenxue $ cat /sys/bus/w1/devices/28-041731f7c0ff/w1_slave 
+   3a 01 4b 46 7f ff 0c 10 a5 : crc=a5 YES
+   3a 01 4b 46 7f ff 0c 10 a5 t=19625
+ */
+
+int ds18b20_get_temperature(float *temp)
+{
+    char            w1_path[50] = "/sys/bus/w1/devices/";
+    char            chip[20];
+    char            buf[128];
+    DIR            *dirp;
+    struct dirent  *direntp;
+    int             fd =-1;
+    char           *ptr;
+    float           value;
+    int             found = 0;
+
+    if( !temp )
+    {
+            return -1;
+    }
+
+    /*+-------------------------------------------------------------------+
+     *|  open dierectory /sys/bus/w1/devices to get chipset Serial Number |
+     *+-------------------------------------------------------------------+*/
+    if((dirp = opendir(w1_path)) == NULL)
+    {
+        printf("opendir error: %s\n", strerror(errno));
+        return -2;
+    }
+
+    while((direntp = readdir(dirp)) != NULL)
+    {
+        if(strstr(direntp->d_name,"28-"))
+        {
+            /* find and get the chipset SN filename */
+            strcpy(chip,direntp->d_name);
+            found = 1;
+        }
+    }
+    closedir(dirp);
+
+    if( !found )
+    {
+            printf("Can not find ds18b20 in %s\n", w1_path);
+            return -3;
+    }
+
+    /* get DS18B20 sample file full path: /sys/bus/w1/devices/28-xxxx/w1_slave */
+    strncat(w1_path, chip, sizeof(w1_path)-strlen(w1_path));
+    strncat(w1_path, "/w1_slave", sizeof(w1_path)-strlen(w1_path));
+
+    /* open file /sys/bus/w1/devices/28-xxxx/w1_slave to get temperature */
+    if( (fd=open(w1_path, O_RDONLY)) < 0 ) 
+    { 
+            printf("open %s error: %s\n", w1_path, strerror(errno)); 
+            return -4;
+    } 
+    
+    if(read(fd, buf, sizeof(buf)) < 0)
+    {
+            printf("read %s error: %s\n", w1_path, strerror(errno)); 
+            return -5;
+    } 
+    
+    ptr = strstr(buf, "t=");
+    if( !ptr )
+    {
+            printf("ERROR: Can not get temperature\n");
+            return -6;
+    }
+
+    ptr+=2;
+
+    /* convert string value to float value */
+    *temp = atof(ptr)/1000;
+   
+    return 0;
+}
diff --git a/program/ds18b20/ds18b20.py b/program/modules/ds18b20/ds18b20.py
similarity index 100%
rename from program/ds18b20/ds18b20.py
rename to program/modules/ds18b20/ds18b20.py
diff --git a/program/modules/ds18b20/makefile b/program/modules/ds18b20/makefile
new file mode 100644
index 0000000..8288331
--- /dev/null
+++ b/program/modules/ds18b20/makefile
@@ -0,0 +1,11 @@
+INST_PATH=/usr/bin
+BIN_NAME=ds18b20
+
+all: 
+	gcc ds18b20.c -o ${BIN_NAME}
+
+clean: 
+	rm -f ${BIN_NAME}
+
+install: 
+	@cp ${BIN_NAME} ${INST_PATH}
diff --git a/program/sht20/sht20.c b/program/modules/sht20/sht20.c
similarity index 100%
rename from program/sht20/sht20.c
rename to program/modules/sht20/sht20.c
diff --git a/program/sht20/sht20.py b/program/modules/sht20/sht20.py
similarity index 100%
rename from program/sht20/sht20.py
rename to program/modules/sht20/sht20.py

--
Gitblit v1.9.1