diff -r 81bf78a7618e -r 547bbe344886 thermferm/server.c --- a/thermferm/server.c Thu Jun 26 20:00:00 2014 +0200 +++ b/thermferm/server.c Thu Jun 26 20:55:34 2014 +0200 @@ -31,6 +31,7 @@ extern unsigned char lcdbuf[MAX_LCDS][20][4]; #endif extern sys_config Config; +extern const char UNITMODE[5][8]; int s; /* connected socket */ int ls; /* listen socket */ @@ -159,6 +160,33 @@ +/* + * LIST + */ +int cmd_list(char *buf) +{ + char *cmd, *opt; + units_list *unit; + int i; + + cmd = strtok(buf, " \0"); + opt = strtok(NULL, " \0"); + if (opt == NULL) { + srv_send((char *)"212 Fermenter list follows:"); + i = 0; + for (unit = Config.units; unit; unit = unit->next) { + i++; + srv_send((char *)"%02d %s %-20s %-7s", i, unit->uuid, unit->name, UNITMODE[unit->mode]); + } + srv_send((char *)"."); + return 0; + } + + return 0; +} + + + void cmd_server(void) { char *inp, *p, *q, buf[SS_BUFSIZE], obuf[SS_BUFSIZE]; @@ -210,6 +238,24 @@ srv_send((char *)""); srv_send((char *)"ADD name Add a new unit with \"name\""); srv_send((char *)"LCD Get LCD screen (allways 4 rows of 20 characters)"); + srv_send((char *)"LIST List all fermenter units"); +// srv_send((char *)"LIST BUS List 1-wire bus"); +// srv_send((char *)"LIST PROFILES List available profiles"); +// srv_send((char *)"LIST UNIT List fermenter unit"); +// srv_send((char *)"MODE off|none|beer|fridge|profile"); +// srv_send((char *)"PROFILE Profile status"); +// srv_send((char *)"PROFILE start|stop|pause Profile start, stop or pause"); +// srv_send((char *)"SET BEER Set beer temperature"); +// srv_send((char *)"SET FRIDGE Set fridge temperature"); +// srv_send((char *)"SET IDLE LOW val Set idle temperature low"); +// srv_send((char *)"SET IDLE HIGH val Set idle temperature high"); +// srv_send((char *)"SET NAME name Set name or beername for the unit"); +// srv_send((char *)"SET OFF Set unit off"); +// srv_send((char *)"SET PROFILE name Set named profile"); +// srv_send((char *)"SET TEMP MIN val Set unit minimum temperature"); +// srv_send((char *)"SET TEMP MAX val Set unit maximum temperature"); +// srv_send((char *)"SET VOLUME Set unit volume"); +// srv_send((char *)"UNIT n|uuid Select unit by number or uuid"); srv_send((char *)"."); } else if (strncmp(buf, "LCD", 3) == 0) { #ifdef HAVE_WIRINGPI_H @@ -225,6 +271,8 @@ #else srv_send((char *)"403 LCD not available"); #endif + } else if (strncmp(buf, "LIST", 4) == 0) { + cmd_list(buf); } else if (strncmp(buf, "ack", 3) == 0) { srv_send((char *)"ack"); } else if (strncmp(buf, "lcd", 3) == 0) {