Experimental 12 bits resolution init

Sun, 28 Apr 2019 16:27:54 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 28 Apr 2019 16:27:54 +0200
changeset 587
b8580eedfcc7
parent 586
504463dad07d
child 588
322a29000fd7

Experimental 12 bits resolution init

thermferm/devices.c file | annotate | diff | comparison | revisions
--- a/thermferm/devices.c	Sun Apr 28 11:38:30 2019 +0200
+++ b/thermferm/devices.c	Sun Apr 28 16:27:54 2019 +0200
@@ -734,6 +734,33 @@
 #endif
 
     /*
+     * Set the temperature sensors to 12 bits resolution.
+     */
+    for (device = Config.devices; device; device = device->next) {
+	if ((device->type == DEVTYPE_W1) &&
+	    ((strncmp(device->address, (char *)"10", 2) == 0) ||
+             (strncmp(device->address, (char *)"22", 2) == 0) ||
+             (strncmp(device->address, (char *)"28", 2) == 0) ||
+             (strncmp(device->address, (char *)"3b", 2) == 0) ||
+             (strncmp(device->address, (char *)"42", 2) == 0))) {
+	    addr = xstrcpy((char *)"/sys/bus/w1/devices/");
+            addr = xstrcat(addr, device->address);
+            addr = xstrcat(addr, (char *)"/w1_slave");
+            if ((fp = fopen(addr, "w"))) {
+		rc = fprintf(fp, "12\n0\n");
+		fclose(fp);
+		if (rc == 5) {
+		    syslog(LOG_NOTICE, "written 12 bits setting to %s", addr);
+		} else {
+		    syslog(LOG_NOTICE, "error rc=%d for %s", rc, addr);
+                }
+	    }
+	    free(addr);
+	    addr = NULL;
+	}
+    }
+
+    /*
      * Loop forever until the external shutdown variable is set.
      */
     for (;;) {

mercurial