thermferm/server.c

changeset 163
3d813570a5e3
parent 158
f1b7e2ef90be
child 167
56b008563db8
--- a/thermferm/server.c	Thu Jul 31 21:04:06 2014 +0200
+++ b/thermferm/server.c	Thu Jul 31 22:15:22 2014 +0200
@@ -348,10 +348,9 @@
     units_list		*unit;
     profiles_list	*profile;
     prof_step		*step;
-    int			j, ref;
-    DIR			*fd;
+    devices_list	*device;
+    int			j;
     FILE		*fp;
-    struct dirent	*de;
 
     opt = strtok(buf, " \0");
     opt = strtok(NULL, "\0");
@@ -369,63 +368,14 @@
 
     } else if (strcmp(opt, (char *)"BUS") == 0) {
 	/*
-	 * 1-wire bus
+	 * Bus devices
 	 */
-	if ((fd = opendir((char *)"/sys/bus/w1/devices"))) {
-	    srv_send((char *)"212 1-wire bus devices:");
-	    while ((de = readdir(fd))) {
-		if (de->d_name[0] != '.') {
-		    ref = 0;
-		    if (strncmp(de->d_name, (char *)"w1", 2) == 0) {
-			srv_send((char *)"%s,0,NA,System device", de->d_name);
-		    } else if (strncmp(de->d_name, (char *)"10", 2) == 0) {
-			if (Config.air_address && (strcmp(de->d_name, Config.air_address) == 0))
-			    ref++;
-			for (unit = Config.units; unit; unit = unit->next) {
-			    if (unit->air_address && (strcmp(de->d_name, unit->air_address) == 0))
-				ref++;
-			    if (unit->beer_address && (strcmp(de->d_name, unit->beer_address) == 0))
-				ref++;
-			}
-			srv_send((char *)"%s,%d,18S20,Digital thermometer", de->d_name, ref);
-		    } else if (strncmp(de->d_name, (char *)"28", 2) == 0) {
-			if (Config.air_address && (strcmp(de->d_name, Config.air_address) == 0))
-			    ref++;
-			for (unit = Config.units; unit; unit = unit->next) {
-			    if (unit->air_address && (strcmp(de->d_name, unit->air_address) == 0))
-				ref++;
-			    if (unit->beer_address && (strcmp(de->d_name, unit->beer_address) == 0))
-				ref++;
-			}
-			srv_send((char *)"%s,%d,18B20,Digital thermometer", de->d_name, ref);
-		    } else if (strncmp(de->d_name, (char *)"29", 2) == 0) {
-			for (unit = Config.units; unit; unit = unit->next) {
-			    if (unit->io1_address && (strncmp((char *)"29", unit->io1_address, 2) == 0))
-				ref++;
-			    if (unit->io2_address && (strncmp((char *)"29", unit->io2_address, 2) == 0))
-				ref++;
-			}
-			srv_send((char *)"%s,%d,2408,8 Channel addressable switch/LCD", de->d_name, ref);
-		    } else if (strncmp(de->d_name, (char *)"3a", 2) == 0) {
-			for (unit = Config.units; unit; unit = unit->next) {
-			    if (unit->io1_address && (strncmp((char *)"3a", unit->io1_address, 2) == 0))
-				ref++;
-			    if (unit->io2_address && (strncmp((char *)"3a", unit->io2_address, 2) == 0))
-				ref++;
-			}
-			srv_send((char *)"%s,%d,2413,Dual channel addressable switch", de->d_name, ref);
-		    } else {
-			srv_send((char *)"%s,0,NA,Unknown device", de->d_name);
-		    }
-		}
-	    }
-	    srv_send((char *)".");
-	    closedir(fd);
-	    return 0;
-	} else {
-	    srv_send((char *)"503 directory /sys/bus/w1/devices: %s", strerror(errno));
-	    return 1;
+	srv_send((char *)"212 bus devices:");
+	for (device = Config.devices; device; device = device->next) {
+	    srv_send((char *)"%s,%s,%d,%d,%s", device->uuid, device->address, device->subdevice, device->inuse, device->comment);
 	}
+	srv_send((char *)".");
+	return 0;
 
     } else if (strcmp(opt, (char *)"LOG") == 0) {
 	/*

mercurial