328 opt = strtok(buf, " \0"); |
328 opt = strtok(buf, " \0"); |
329 opt = strtok(NULL, " \0"); |
329 opt = strtok(NULL, " \0"); |
330 |
330 |
331 if (opt == NULL) { |
331 if (opt == NULL) { |
332 srv_send((char *)"501 Subcommand missing"); |
332 srv_send((char *)"501 Subcommand missing"); |
333 return 1; |
333 return 0; |
334 } |
334 } |
335 param = strtok(NULL, "\0"); |
335 param = strtok(NULL, "\0"); |
336 |
336 |
337 if (strcmp(opt, (char *)"HELP") == 0) { |
337 if (strcmp(opt, (char *)"HELP") == 0) { |
338 srv_send((char *)"100 Help text follows:"); |
338 srv_send((char *)"100 Help text follows:"); |
646 opt = strtok(buf, " \0"); |
645 opt = strtok(buf, " \0"); |
647 opt = strtok(NULL, " \0"); |
646 opt = strtok(NULL, " \0"); |
648 |
647 |
649 if (opt == NULL) { |
648 if (opt == NULL) { |
650 srv_send((char *)"501 Subcommand missing"); |
649 srv_send((char *)"501 Subcommand missing"); |
651 return 1; |
650 return 0; |
652 } |
651 } |
653 param = strtok(NULL, "\0"); |
652 param = strtok(NULL, "\0"); |
654 |
653 |
655 if (strcmp(opt, (char *)"HELP") == 0) { |
654 if (strcmp(opt, (char *)"HELP") == 0) { |
656 srv_send((char *)"100 Help text follows:"); |
655 srv_send((char *)"100 Help text follows:"); |
669 for (device = Config.devices; device; device = device->next) { |
668 for (device = Config.devices; device; device = device->next) { |
670 srv_send((char *)"%s,%s,%d,%d,%s,%s,%d", device->uuid, device->address, device->subdevice, |
669 srv_send((char *)"%s,%s,%d,%d,%s,%s,%d", device->uuid, device->address, device->subdevice, |
671 device->inuse, device->comment, DEVDIR[device->direction], device->value + device->offset); |
670 device->inuse, device->comment, DEVDIR[device->direction], device->value + device->offset); |
672 } |
671 } |
673 srv_send((char *)"."); |
672 srv_send((char *)"."); |
674 return 1; |
673 return 0; |
675 } |
674 } |
676 |
675 |
677 if (param == NULL) { |
676 if (param == NULL) { |
678 srv_send((char *)"502 Parameter missing"); |
677 srv_send((char *)"502 Parameter missing"); |
679 return 1; |
678 return 1; |
719 #ifdef HAVE_WIRINGPI_H |
718 #ifdef HAVE_WIRINGPI_H |
720 piUnlock(LOCK_DEVICES); |
719 piUnlock(LOCK_DEVICES); |
721 #endif |
720 #endif |
722 syslog(LOG_NOTICE, "Device %s added", device->uuid); |
721 syslog(LOG_NOTICE, "Device %s added", device->uuid); |
723 srv_send((char *)"211 Device %s added", device->uuid); |
722 srv_send((char *)"211 Device %s added", device->uuid); |
724 return 0; |
723 return 1; |
725 |
724 |
726 } else { |
725 } else { |
727 srv_send((char *)"503 Parameter error"); |
726 srv_send((char *)"503 Parameter error"); |
728 return 1; |
727 return 0; |
729 } |
728 } |
730 } |
729 } |
731 |
730 |
732 if (strcmp(opt, (char *)"DEL") == 0) { |
731 if (strcmp(opt, (char *)"DEL") == 0) { |
733 |
732 |
739 piUnlock(LOCK_DEVICES); |
738 piUnlock(LOCK_DEVICES); |
740 #endif |
739 #endif |
741 if (rc) { |
740 if (rc) { |
742 syslog(LOG_NOTICE, "Device %s deleted", param); |
741 syslog(LOG_NOTICE, "Device %s deleted", param); |
743 srv_send((char *)"211 Device %s deleted", param); |
742 srv_send((char *)"211 Device %s deleted", param); |
744 return 0; |
743 return 1; |
745 } else { |
744 } else { |
746 srv_send((char *)"440 No such device"); |
745 srv_send((char *)"440 No such device"); |
747 return 1; |
746 return 0; |
748 } |
747 } |
749 } |
748 } |
750 |
749 |
751 if (strcmp(opt, (char *)"GET") == 0) { |
750 if (strcmp(opt, (char *)"GET") == 0) { |
752 for (device = Config.devices; device; device = device->next) { |
751 for (device = Config.devices; device; device = device->next) { |
771 srv_send((char *)"DESCRIPTION,%s", device->description); |
770 srv_send((char *)"DESCRIPTION,%s", device->description); |
772 srv_send((char *)"INUSE,%d", device->inuse); |
771 srv_send((char *)"INUSE,%d", device->inuse); |
773 srv_send((char *)"COMMENT,%s", device->comment); |
772 srv_send((char *)"COMMENT,%s", device->comment); |
774 srv_send((char *)"TIMESTAMP,%d", my_timestamp); |
773 srv_send((char *)"TIMESTAMP,%d", my_timestamp); |
775 srv_send((char *)"."); |
774 srv_send((char *)"."); |
776 return 1; |
775 return 0; |
777 } |
776 } |
778 } |
777 } |
779 srv_send((char *)"440 No such device"); |
778 srv_send((char *)"440 No such device"); |
780 return 1; |
779 return 0; |
781 } |
780 } |
782 |
781 |
783 if (strcmp(opt, (char *)"PUT") == 0) { |
782 if (strcmp(opt, (char *)"PUT") == 0) { |
784 for (device = Config.devices; device; device = device->next) { |
783 for (device = Config.devices; device; device = device->next) { |
785 if (strcmp(device->uuid, param) == 0) { |
784 if (strcmp(device->uuid, param) == 0) { |
786 while (1) { |
785 while (1) { |
787 rlen = srv_recv(ibuf); |
786 rlen = srv_recv(ibuf); |
788 if (rlen == -1) { |
787 if (rlen == -1) { |
789 return 1; |
788 return 0; |
790 } |
789 } |
791 if (strlen(ibuf)) { |
790 if (strlen(ibuf)) { |
792 if (strcmp(ibuf, (char *)".") == 0) { |
791 if (strcmp(ibuf, (char *)".") == 0) { |
793 srv_send((char *)"219 Accepted Device record"); |
792 srv_send((char *)"219 Accepted Device record"); |
794 return 0; |
793 return 1; |
795 } |
794 } |
796 kwd = strtok(ibuf, ",\0"); |
795 kwd = strtok(ibuf, ",\0"); |
797 val = strtok(NULL, "\0"); |
796 val = strtok(NULL, "\0"); |
798 if (kwd && val) { |
797 if (kwd && val) { |
799 if (strcmp(kwd, (char *)"TYPE") == 0) { |
798 if (strcmp(kwd, (char *)"TYPE") == 0) { |
966 opt = strtok(buf, " \0"); |
965 opt = strtok(buf, " \0"); |
967 opt = strtok(NULL, "\0"); |
966 opt = strtok(NULL, "\0"); |
968 |
967 |
969 if (opt == NULL) { |
968 if (opt == NULL) { |
970 srv_send((char *)"501 Subcommand missing"); |
969 srv_send((char *)"501 Subcommand missing"); |
971 return 1; |
970 return 0; |
972 } |
971 } |
973 |
972 |
974 if (strcmp(opt, (char *)"HELP") == 0) { |
973 if (strcmp(opt, (char *)"HELP") == 0) { |
975 srv_send((char *)"100 Help text follows:"); |
974 srv_send((char *)"100 Help text follows:"); |
976 srv_send((char *)"Recognized commands:"); |
975 srv_send((char *)"Recognized commands:"); |
995 #ifdef HAVE_WIRINGPI_H |
994 #ifdef HAVE_WIRINGPI_H |
996 srv_send((char *)"LCD_COLS,%d", Config.lcd_cols); |
995 srv_send((char *)"LCD_COLS,%d", Config.lcd_cols); |
997 srv_send((char *)"LCD_ROWS,%d", Config.lcd_rows); |
996 srv_send((char *)"LCD_ROWS,%d", Config.lcd_rows); |
998 #endif |
997 #endif |
999 srv_send((char *)"."); |
998 srv_send((char *)"."); |
1000 return 1; |
999 return 0; |
1001 } |
1000 } |
1002 |
1001 |
1003 if (strcmp(opt, (char *)"PUT") == 0) { |
1002 if (strcmp(opt, (char *)"PUT") == 0) { |
1004 while (1) { |
1003 while (1) { |
1005 rlen = srv_recv(ibuf); |
1004 rlen = srv_recv(ibuf); |
1006 if (rlen == -1) { |
1005 if (rlen == -1) { |
1007 return 1; |
1006 return 0; |
1008 } |
1007 } |
1009 if (strlen(ibuf)) { |
1008 if (strlen(ibuf)) { |
1010 if (strcmp(ibuf, (char *)".") == 0) { |
1009 if (strcmp(ibuf, (char *)".") == 0) { |
1011 srv_send((char *)"219 Accepted Global record"); |
1010 srv_send((char *)"219 Accepted Global record"); |
1012 return 0; |
1011 return 1; |
1013 } |
1012 } |
1014 kwd = strtok(ibuf, ",\0"); |
1013 kwd = strtok(ibuf, ",\0"); |
1015 val = strtok(NULL, "\0"); |
1014 val = strtok(NULL, "\0"); |
1016 if (kwd) { |
1015 if (kwd) { |
1017 if (strcmp(kwd, (char *)"NAME") == 0) { |
1016 if (strcmp(kwd, (char *)"NAME") == 0) { |
1115 srv_send((char *)"212 Fermenter list follows:"); |
1114 srv_send((char *)"212 Fermenter list follows:"); |
1116 for (unit = Config.units; unit; unit = unit->next) { |
1115 for (unit = Config.units; unit; unit = unit->next) { |
1117 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]); |
1116 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]); |
1118 } |
1117 } |
1119 srv_send((char *)"."); |
1118 srv_send((char *)"."); |
1120 return 1; |
1119 return 0; |
1121 |
1120 |
1122 } else if (strcmp(opt, (char *)"HELP") == 0) { |
1121 } else if (strcmp(opt, (char *)"HELP") == 0) { |
1123 srv_send((char *)"100 Help text follows:"); |
1122 srv_send((char *)"100 Help text follows:"); |
1124 srv_send((char *)"Recognized commands:"); |
1123 srv_send((char *)"Recognized commands:"); |
1125 srv_send((char *)"LIST List available units"); |
1124 srv_send((char *)"LIST List available units"); |
1130 } else if (strcmp(opt, (char *)"LOG") == 0) { |
1129 } else if (strcmp(opt, (char *)"LOG") == 0) { |
1131 |
1130 |
1132 param = strtok(NULL, "\0"); |
1131 param = strtok(NULL, "\0"); |
1133 if (param == NULL) { |
1132 if (param == NULL) { |
1134 srv_send((char *)"502 Parameter missing"); |
1133 srv_send((char *)"502 Parameter missing"); |
1135 return 1; |
1134 return 0; |
1136 } |
1135 } |
1137 |
1136 |
1138 q[0] = q[1] = q[2] = q[3] = q[4] = 'a'; |
1137 q[0] = q[1] = q[2] = q[3] = q[4] = 'a'; |
1139 for (unit = Config.units; unit; unit = unit->next) { |
1138 for (unit = Config.units; unit; unit = unit->next) { |
1140 if (strcmp(param, unit->uuid) == 0) |
1139 if (strcmp(param, unit->uuid) == 0) |
1265 opt = strtok(buf, " \0"); |
1264 opt = strtok(buf, " \0"); |
1266 opt = strtok(NULL, " \0"); |
1265 opt = strtok(NULL, " \0"); |
1267 |
1266 |
1268 if (opt == NULL) { |
1267 if (opt == NULL) { |
1269 srv_send((char *)"501 Subcommand missing"); |
1268 srv_send((char *)"501 Subcommand missing"); |
1270 return 1; |
1269 return 0; |
1271 } |
1270 } |
1272 |
1271 |
1273 if (strcmp(opt, (char *)"HELP") == 0) { |
1272 if (strcmp(opt, (char *)"HELP") == 0) { |
1274 srv_send((char *)"100 Help text follows:"); |
1273 srv_send((char *)"100 Help text follows:"); |
1275 srv_send((char *)"Recognized commands:"); |
1274 srv_send((char *)"Recognized commands:"); |
1295 for (step = profile->steps; step; step = step->next) |
1294 for (step = profile->steps; step; step = step->next) |
1296 j++; |
1295 j++; |
1297 srv_send((char *)"%s,%s,%d,%d", profile->uuid, profile->name, j, profile->busy); |
1296 srv_send((char *)"%s,%s,%d,%d", profile->uuid, profile->name, j, profile->busy); |
1298 } |
1297 } |
1299 srv_send((char *)"."); |
1298 srv_send((char *)"."); |
1300 return 1; |
1299 return 0; |
1301 } |
1300 } |
1302 |
1301 |
1303 param = strtok(NULL, "\0"); |
1302 param = strtok(NULL, "\0"); |
1304 if (param == NULL) { |
1303 if (param == NULL) { |
1305 srv_send((char *)"502 Parameter missing"); |
1304 srv_send((char *)"502 Parameter missing"); |
1306 return 1; |
1305 return 0; |
1307 } |
1306 } |
1308 |
1307 |
1309 if (strcmp(opt, (char *)"ADD") == 0) { |
1308 if (strcmp(opt, (char *)"ADD") == 0) { |
1310 profile = (profiles_list *)malloc(sizeof(profiles_list)); |
1309 profile = (profiles_list *)malloc(sizeof(profiles_list)); |
1311 profile->next = NULL; |
1310 profile->next = NULL; |
1328 } |
1327 } |
1329 } |
1328 } |
1330 |
1329 |
1331 syslog(LOG_NOTICE, "Profile %s added", profile->uuid); |
1330 syslog(LOG_NOTICE, "Profile %s added", profile->uuid); |
1332 srv_send((char *)"211 Profile %s added", profile->uuid); |
1331 srv_send((char *)"211 Profile %s added", profile->uuid); |
1333 return 0; |
1332 return 1; |
1334 |
1333 |
1335 |
1334 |
1336 } else if (strcmp(opt, (char *)"DEL") == 0) { |
1335 } else if (strcmp(opt, (char *)"DEL") == 0) { |
1337 if (delete_Profile(param)) { |
1336 if (delete_Profile(param)) { |
1338 syslog(LOG_NOTICE, "Profile %s deleted", param); |
1337 syslog(LOG_NOTICE, "Profile %s deleted", param); |
1339 srv_send((char *)"211 Profile %s deleted", param); |
1338 srv_send((char *)"211 Profile %s deleted", param); |
1340 return 0; |
1339 return 1; |
1341 } else { |
1340 } else { |
1342 srv_send((char *)"440 No such profile"); |
1341 srv_send((char *)"440 No such profile"); |
1343 return 1; |
1342 return 0; |
1344 } |
1343 } |
1345 |
1344 |
1346 } else if (strcmp(opt, (char *)"GET") == 0) { |
1345 } else if (strcmp(opt, (char *)"GET") == 0) { |
1347 for (profile = Config.profiles; profile; profile = profile->next) { |
1346 for (profile = Config.profiles; profile; profile = profile->next) { |
1348 if (strcmp(profile->uuid, param) == 0) { |
1347 if (strcmp(profile->uuid, param) == 0) { |
1349 srv_send((char *)"213 Profile record follows:"); |
1348 srv_send((char *)"213 Profile record follows:"); |
1350 srv_send((char *)"UUID,%s", profile->uuid); |
1349 srv_send((char *)"UUID,%s", profile->uuid); |
1351 srv_send((char *)"NAME,%s", profile->name); |
1350 srv_send((char *)"NAME,%s", profile->name); |
1352 srv_send((char *)"INITTEMP,%.1f", profile->inittemp); |
1351 srv_send((char *)"INITTEMP,%.1f", profile->inittemp); |
1353 srv_send((char *)"."); |
1352 srv_send((char *)"."); |
1354 return 1; |
1353 return 0; |
1355 } |
1354 } |
1356 } |
1355 } |
1357 srv_send((char *)"440 No such profile"); |
1356 srv_send((char *)"440 No such profile"); |
1358 return 1; |
1357 return 0; |
1359 |
1358 |
1360 } else if (strcmp(opt, (char *)"PUT") == 0) { |
1359 } else if (strcmp(opt, (char *)"PUT") == 0) { |
1361 for (profile = Config.profiles; profile; profile = profile->next) { |
1360 for (profile = Config.profiles; profile; profile = profile->next) { |
1362 if (strcmp(profile->uuid, param) == 0) { |
1361 if (strcmp(profile->uuid, param) == 0) { |
1363 while (1) { |
1362 while (1) { |
1364 rlen = srv_recv(ibuf); |
1363 rlen = srv_recv(ibuf); |
1365 if (rlen == -1) { |
1364 if (rlen == -1) { |
1366 return 1; |
1365 return 0; |
1367 } |
1366 } |
1368 if (strlen(ibuf)) { |
1367 if (strlen(ibuf)) { |
1369 if (strcmp(ibuf, (char *)".") == 0) { |
1368 if (strcmp(ibuf, (char *)".") == 0) { |
1370 srv_send((char *)"219 Accepted Profile record"); |
1369 srv_send((char *)"219 Accepted Profile record"); |
1371 return 0; |
1370 return 1; |
1372 } |
1371 } |
1373 kwd = strtok(ibuf, ",\0"); |
1372 kwd = strtok(ibuf, ",\0"); |
1374 val = strtok(NULL, "\0"); |
1373 val = strtok(NULL, "\0"); |
1375 if (kwd && val) { |
1374 if (kwd && val) { |
1376 if (strcmp(kwd, (char *)"NAME") == 0) { |
1375 if (strcmp(kwd, (char *)"NAME") == 0) { |
1391 } |
1390 } |
1392 } |
1391 } |
1393 } |
1392 } |
1394 } |
1393 } |
1395 srv_send((char *)"440 No such profile"); |
1394 srv_send((char *)"440 No such profile"); |
1396 return 1; |
1395 return 0; |
1397 |
1396 |
1398 } else if (strcmp(opt, (char *)"GETS") == 0) { |
1397 } else if (strcmp(opt, (char *)"GETS") == 0) { |
1399 |
1398 |
1400 for (profile = Config.profiles; profile; profile = profile->next) { |
1399 for (profile = Config.profiles; profile; profile = profile->next) { |
1401 if (strcmp(profile->uuid, param) == 0) { |
1400 if (strcmp(profile->uuid, param) == 0) { |
1402 srv_send((char *)"215 Profile steps follow:"); |
1401 srv_send((char *)"215 Profile steps follow:"); |
1403 for (step = profile->steps; step; step = step->next) { |
1402 for (step = profile->steps; step; step = step->next) { |
1404 srv_send((char *)"%d,%d,%.1f", step->steptime, step->resttime, step->target); |
1403 srv_send((char *)"%d,%d,%.1f", step->steptime, step->resttime, step->target); |
1405 } |
1404 } |
1406 srv_send((char *)"."); |
1405 srv_send((char *)"."); |
1407 return 1; |
1406 return 0; |
1408 } |
1407 } |
1409 } |
1408 } |
1410 |
1409 |
1411 srv_send((char *)"440 No such profile"); |
1410 srv_send((char *)"440 No such profile"); |
1412 return 1; |
1411 return 0; |
1413 |
1412 |
1414 } else if (strcmp(opt, (char *)"PUTS") == 0) { |
1413 } else if (strcmp(opt, (char *)"PUTS") == 0) { |
1415 |
1414 |
1416 for (profile = Config.profiles; profile; profile = profile->next) { |
1415 for (profile = Config.profiles; profile; profile = profile->next) { |
1417 if (strcmp(profile->uuid, param) == 0) { |
1416 if (strcmp(profile->uuid, param) == 0) { |
1427 |
1426 |
1428 j = 0; |
1427 j = 0; |
1429 while (1) { |
1428 while (1) { |
1430 rlen = srv_recv(ibuf); |
1429 rlen = srv_recv(ibuf); |
1431 if (rlen == -1) { |
1430 if (rlen == -1) { |
1432 return 1; |
1431 return 0; |
1433 } else { |
1432 } else { |
1434 if (strlen(ibuf)) { |
1433 if (strlen(ibuf)) { |
1435 if (strcmp(ibuf, (char *)".") == 0) { |
1434 if (strcmp(ibuf, (char *)".") == 0) { |
1436 |
1435 |
1437 srv_send((char *)"219 Accepted Profile steps"); |
1436 srv_send((char *)"219 Accepted Profile steps"); |
1438 return 0; |
1437 return 1; |
1439 } |
1438 } |
1440 sstep = strtok(ibuf, ",\0"); |
1439 sstep = strtok(ibuf, ",\0"); |
1441 rest = strtok(NULL, ",\0"); |
1440 rest = strtok(NULL, ",\0"); |
1442 targ = strtok(NULL, "\0"); |
1441 targ = strtok(NULL, "\0"); |
1443 |
1442 |
1536 opt = strtok(buf, " \0"); |
1535 opt = strtok(buf, " \0"); |
1537 opt = strtok(NULL, " \0"); |
1536 opt = strtok(NULL, " \0"); |
1538 |
1537 |
1539 if (opt == NULL) { |
1538 if (opt == NULL) { |
1540 srv_send((char *)"501 Subcommand missing"); |
1539 srv_send((char *)"501 Subcommand missing"); |
1541 return 1; |
1540 return 0; |
1542 } |
1541 } |
1543 param = strtok(NULL, "\0"); |
1542 param = strtok(NULL, "\0"); |
1544 |
1543 |
1545 if (strcmp(opt, (char *)"HELP") == 0) { |
1544 if (strcmp(opt, (char *)"HELP") == 0) { |
1546 srv_send((char *)"100 Help text follows:"); |
1545 srv_send((char *)"100 Help text follows:"); |
1558 srv_send((char *)"212 Simulators list follows:"); |
1557 srv_send((char *)"212 Simulators list follows:"); |
1559 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1558 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1560 srv_send((char *)"%s,%s", simulator->uuid, simulator->name); |
1559 srv_send((char *)"%s,%s", simulator->uuid, simulator->name); |
1561 } |
1560 } |
1562 srv_send((char *)"."); |
1561 srv_send((char *)"."); |
1563 return 1; |
1562 return 0; |
1564 } |
1563 } |
1565 |
1564 |
1566 if (param == NULL) { |
1565 if (param == NULL) { |
1567 srv_send((char *)"502 Parameter missing"); |
1566 srv_send((char *)"502 Parameter missing"); |
1568 return 1; |
1567 return 0; |
1569 } |
1568 } |
1570 |
1569 |
1571 if (strcmp(opt, (char *)"ADD") == 0) { |
1570 if (strcmp(opt, (char *)"ADD") == 0) { |
1572 |
1571 |
1573 /* |
1572 /* |
1574 * For now, only one simulator is allowed. |
1573 * For now, only one simulator is allowed. |
1575 */ |
1574 */ |
1576 if (Config.simulators) { |
1575 if (Config.simulators) { |
1577 srv_send((char *)"441 Maximum simulators reached"); |
1576 srv_send((char *)"441 Maximum simulators reached"); |
1578 return 1; |
1577 return 0; |
1579 } |
1578 } |
1580 |
1579 |
1581 simulator = (simulator_list *)malloc(sizeof(simulator_list)); |
1580 simulator = (simulator_list *)malloc(sizeof(simulator_list)); |
1582 simulator->next = NULL; |
1581 simulator->next = NULL; |
1583 simulator->version = 1; |
1582 simulator->version = 1; |
1610 } |
1609 } |
1611 } |
1610 } |
1612 |
1611 |
1613 syslog(LOG_NOTICE, "Simulator %s added", simulator->uuid); |
1612 syslog(LOG_NOTICE, "Simulator %s added", simulator->uuid); |
1614 srv_send((char *)"211 Simulator %s added", simulator->uuid); |
1613 srv_send((char *)"211 Simulator %s added", simulator->uuid); |
1615 return 0; |
1614 return 1; |
1616 } |
1615 } |
1617 |
1616 |
1618 if (strcmp(opt, (char *)"DEL") == 0) { |
1617 if (strcmp(opt, (char *)"DEL") == 0) { |
1619 rc = delete_Simulator(param); |
1618 rc = delete_Simulator(param); |
1620 if (rc) { |
1619 if (rc) { |
1621 syslog(LOG_NOTICE, "Simulator %s deleted", param); |
1620 syslog(LOG_NOTICE, "Simulator %s deleted", param); |
1622 srv_send((char *)"211 Simulator %s deleted", param); |
1621 srv_send((char *)"211 Simulator %s deleted", param); |
1623 return 0; |
1622 return 1; |
1624 } else { |
1623 } else { |
1625 srv_send((char *)"440 No such simulator"); |
1624 srv_send((char *)"440 No such simulator"); |
1626 return 1; |
1625 return 0; |
1627 } |
1626 } |
1628 } |
1627 } |
1629 |
1628 |
1630 if (strcmp(opt, (char *)"GET") == 0) { |
1629 if (strcmp(opt, (char *)"GET") == 0) { |
1631 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1630 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1645 srv_send((char *)"HEATER_SIZE,%.3f", simulator->heater_size); |
1644 srv_send((char *)"HEATER_SIZE,%.3f", simulator->heater_size); |
1646 srv_send((char *)"HEATER_STATE,%d", simulator->heater_state); |
1645 srv_send((char *)"HEATER_STATE,%d", simulator->heater_state); |
1647 srv_send((char *)"COOLER_STATE,%d", simulator->cooler_state); |
1646 srv_send((char *)"COOLER_STATE,%d", simulator->cooler_state); |
1648 srv_send((char *)"FRIGO_ISOLATION,%.3f", simulator->frigo_isolation); |
1647 srv_send((char *)"FRIGO_ISOLATION,%.3f", simulator->frigo_isolation); |
1649 srv_send((char *)"."); |
1648 srv_send((char *)"."); |
1650 return 1; |
1649 return 0; |
1651 } |
1650 } |
1652 } |
1651 } |
1653 srv_send((char *)"440 No such simulator"); |
1652 srv_send((char *)"440 No such simulator"); |
1654 return 1; |
1653 return 0; |
1655 } |
1654 } |
1656 |
1655 |
1657 if (strcmp(opt, (char *)"PUT") == 0) { |
1656 if (strcmp(opt, (char *)"PUT") == 0) { |
1658 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1657 for (simulator = Config.simulators; simulator; simulator = simulator->next) { |
1659 if (strcmp(simulator->uuid, param) == 0) { |
1658 if (strcmp(simulator->uuid, param) == 0) { |
1660 while (1) { |
1659 while (1) { |
1661 rlen = srv_recv(ibuf); |
1660 rlen = srv_recv(ibuf); |
1662 if (rlen == -1) { |
1661 if (rlen == -1) { |
1663 return 1; |
1662 return 0; |
1664 } |
1663 } |
1665 if (strlen(ibuf)) { |
1664 if (strlen(ibuf)) { |
1666 if (strcmp(ibuf, (char *)".") == 0) { |
1665 if (strcmp(ibuf, (char *)".") == 0) { |
1667 srv_send((char *)"219 Accepted Simulator record"); |
1666 srv_send((char *)"219 Accepted Simulator record"); |
1668 return 0; |
1667 return 1; |
1669 } |
1668 } |
1670 kwd = strtok(ibuf, ",\0"); |
1669 kwd = strtok(ibuf, ",\0"); |
1671 val = strtok(NULL, "\0"); |
1670 val = strtok(NULL, "\0"); |
1672 if (kwd && val) { |
1671 if (kwd && val) { |
1673 |
1672 |
1913 opt = strtok(buf, " \0"); |
1912 opt = strtok(buf, " \0"); |
1914 opt = strtok(NULL, " \0"); |
1913 opt = strtok(NULL, " \0"); |
1915 |
1914 |
1916 if (opt == NULL) { |
1915 if (opt == NULL) { |
1917 srv_send((char *)"501 Subcommand missing"); |
1916 srv_send((char *)"501 Subcommand missing"); |
1918 return 1; |
1917 return 0; |
1919 } |
1918 } |
1920 param = strtok(NULL, "\0"); |
1919 param = strtok(NULL, "\0"); |
1921 |
1920 |
1922 if (strcmp(opt, (char *)"HELP") == 0) { |
1921 if (strcmp(opt, (char *)"HELP") == 0) { |
1923 srv_send((char *)"100 Help text follows:"); |
1922 srv_send((char *)"100 Help text follows:"); |
1935 srv_send((char *)"212 Fermenter list follows:"); |
1934 srv_send((char *)"212 Fermenter list follows:"); |
1936 for (unit = Config.units; unit; unit = unit->next) { |
1935 for (unit = Config.units; unit; unit = unit->next) { |
1937 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]); |
1936 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]); |
1938 } |
1937 } |
1939 srv_send((char *)"."); |
1938 srv_send((char *)"."); |
1940 return 1; |
1939 return 0; |
1941 } |
1940 } |
1942 |
1941 |
1943 if (param == NULL) { |
1942 if (param == NULL) { |
1944 srv_send((char *)"502 Parameter missing"); |
1943 srv_send((char *)"502 Parameter missing"); |
1945 return 1; |
1944 return 0; |
1946 } |
1945 } |
1947 |
1946 |
1948 if (strcmp(opt, (char *)"ADD") == 0) { |
1947 if (strcmp(opt, (char *)"ADD") == 0) { |
1949 unit = (units_list *)malloc(sizeof(units_list)); |
1948 unit = (units_list *)malloc(sizeof(units_list)); |
1950 unit->next = NULL; |
1949 unit->next = NULL; |
2094 srv_send((char *)"PROF_PEAK_REL,%.3f", unit->prof_peak_rel); |
2093 srv_send((char *)"PROF_PEAK_REL,%.3f", unit->prof_peak_rel); |
2095 srv_send((char *)"PROF_PRIMARY_DONE,%d", (int)unit->prof_primary_done); |
2094 srv_send((char *)"PROF_PRIMARY_DONE,%d", (int)unit->prof_primary_done); |
2096 srv_send((char *)"TEMP_SET_MIN,%.1f", unit->temp_set_min); |
2095 srv_send((char *)"TEMP_SET_MIN,%.1f", unit->temp_set_min); |
2097 srv_send((char *)"TEMP_SET_MAX,%.1f", unit->temp_set_max); |
2096 srv_send((char *)"TEMP_SET_MAX,%.1f", unit->temp_set_max); |
2098 srv_send((char *)"."); |
2097 srv_send((char *)"."); |
2099 return 1; |
2098 return 0; |
2100 } |
2099 } |
2101 } |
2100 } |
2102 srv_send((char *)"440 No such unit"); |
2101 srv_send((char *)"440 No such unit"); |
2103 return 1; |
2102 return 0; |
2104 } |
2103 } |
2105 |
2104 |
2106 if (strcmp(opt, (char *)"PUT") == 0) { |
2105 if (strcmp(opt, (char *)"PUT") == 0) { |
2107 /* |
2106 /* |
2108 * Block main process |
2107 * Block main process |
2118 if (strcmp(unit->uuid, param) == 0) { |
2117 if (strcmp(unit->uuid, param) == 0) { |
2119 while (1) { |
2118 while (1) { |
2120 rlen = srv_recv(ibuf); |
2119 rlen = srv_recv(ibuf); |
2121 if (rlen == -1) { |
2120 if (rlen == -1) { |
2122 run_pause = FALSE; |
2121 run_pause = FALSE; |
2123 return 1; |
2122 return 0; |
2124 } |
2123 } |
2125 if (strlen(ibuf)) { |
2124 if (strlen(ibuf)) { |
2126 if (strcmp(ibuf, (char *)".") == 0) { |
2125 if (strcmp(ibuf, (char *)".") == 0) { |
2127 srv_send((char *)"219 Accepted Unit record"); |
2126 srv_send((char *)"219 Accepted Unit record"); |
2128 run_pause = FALSE; |
2127 run_pause = FALSE; |
2129 return 0; |
2128 return 1; |
2130 } |
2129 } |
2131 kwd = strtok(ibuf, ",\0"); |
2130 kwd = strtok(ibuf, ",\0"); |
2132 val = strtok(NULL, "\0"); |
2131 val = strtok(NULL, "\0"); |
2133 if (kwd) { |
2132 if (kwd) { |
2134 /* |
2133 /* |
2529 /* |
2528 /* |
2530 * Process commands from the client |
2529 * Process commands from the client |
2531 */ |
2530 */ |
2532 if (strncmp(buf, "ARCHIVE", 7) == 0) { |
2531 if (strncmp(buf, "ARCHIVE", 7) == 0) { |
2533 cmd_archive(buf); |
2532 cmd_archive(buf); |
|
2533 |
2534 } else if (strncmp(buf, "DEVICE", 6) == 0) { |
2534 } else if (strncmp(buf, "DEVICE", 6) == 0) { |
2535 if (cmd_device(buf) == 0) |
2535 if (cmd_device(buf)) |
2536 wrconfig(); |
2536 wrconfig(); |
|
2537 |
2537 } else if (strncmp(buf, "GLOBAL", 6) == 0) { |
2538 } else if (strncmp(buf, "GLOBAL", 6) == 0) { |
2538 if (cmd_global(buf) == 0) |
2539 if (cmd_global(buf)) |
2539 wrconfig(); |
2540 wrconfig(); |
|
2541 |
2540 } else if (strncmp(buf, "HELP", 4) == 0) { |
2542 } else if (strncmp(buf, "HELP", 4) == 0) { |
2541 srv_send((char *)"100 Help text follows"); |
2543 srv_send((char *)"100 Help text follows"); |
2542 srv_send((char *)"Recognized commands:"); |
2544 srv_send((char *)"Recognized commands:"); |
2543 srv_send((char *)""); |
2545 srv_send((char *)""); |
2544 // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
2546 // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
2558 srv_send((char *)"SIMULATOR HELP Simulator help screen"); |
2560 srv_send((char *)"SIMULATOR HELP Simulator help screen"); |
2559 #endif |
2561 #endif |
2560 srv_send((char *)"UNIT <CMD> [parameters] Unit commands"); |
2562 srv_send((char *)"UNIT <CMD> [parameters] Unit commands"); |
2561 srv_send((char *)"UNIT HELP Unit help screen"); |
2563 srv_send((char *)"UNIT HELP Unit help screen"); |
2562 srv_send((char *)"."); |
2564 srv_send((char *)"."); |
|
2565 |
2563 } else if (strncmp(buf, "LIST", 4) == 0) { |
2566 } else if (strncmp(buf, "LIST", 4) == 0) { |
2564 cmd_list(buf); |
2567 cmd_list(buf); |
|
2568 |
2565 } else if (strncmp(buf, "PING", 4) == 0) { |
2569 } else if (strncmp(buf, "PING", 4) == 0) { |
2566 srv_send((char *)"101 PONG"); |
2570 srv_send((char *)"101 PONG"); |
|
2571 |
2567 } else if (strncmp(buf, "PROFILE", 7) == 0) { |
2572 } else if (strncmp(buf, "PROFILE", 7) == 0) { |
2568 if (cmd_profile(buf) == 0) |
2573 if (cmd_profile(buf)) |
2569 wrconfig(); |
2574 wrconfig(); |
|
2575 |
2570 #ifdef USE_SIMULATOR |
2576 #ifdef USE_SIMULATOR |
2571 } else if (strncmp(buf, "SIMULATOR", 9) == 0) { |
2577 } else if (strncmp(buf, "SIMULATOR", 9) == 0) { |
2572 if (cmd_simulator(buf) == 0) |
2578 if (cmd_simulator(buf)) |
2573 wrconfig(); |
2579 wrconfig(); |
|
2580 |
2574 #endif |
2581 #endif |
2575 } else if (strncmp(buf, "UNIT", 4) == 0) { |
2582 } else if (strncmp(buf, "UNIT", 4) == 0) { |
2576 if (cmd_unit(buf) == 0) |
2583 if (cmd_unit(buf)) |
2577 wrconfig(); |
2584 wrconfig(); |
|
2585 |
2578 } else { |
2586 } else { |
2579 srv_send((char *)"500 Unknown command"); |
2587 srv_send((char *)"500 Unknown command"); |
2580 } |
2588 } |
2581 } |
2589 } |
2582 } |
2590 } |