--- 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) { /*