diff -r 78fb6f99e473 -r 8d2ba4126519 www-thermferm/global.php --- a/www-thermferm/global.php Sun Aug 10 14:45:11 2014 +0200 +++ b/www-thermferm/global.php Sun Aug 10 16:17:03 2014 +0200 @@ -23,13 +23,233 @@ require_once('utilities.php'); -$outstr = build_header("ThermFerm - Global Setup"); -$outstr .= '
'.PHP_EOL; -$outstr .= '
'.PHP_EOL; -$outstr .= '
'.PHP_EOL; + +if (isset($_POST['action'])) { + if ($_POST['action'] == "testdata") + testdata(); +} else { + edit_screen(""); +} + + +exit; + + +/***************************************************************************** + * + */ + + +function global_update() { + + if ($_POST['key'] == 'Save') { + $sock = open_socket(); + if ($sock != false) { + /* + * Send command and absorb the result. + */ + socket_write($sock, "GLOBAL PUT", 4096); + usleep(20000); + socket_write($sock, "NAME,".$_POST['Name'], 4096); + usleep(20000); + socket_write($sock, "PORT,".$_POST['Port'], 4096); + usleep(20000); + socket_write($sock, "TEMP_ADDRESS,".$_POST['TempAddress'], 4096); + usleep(20000); + socket_write($sock, "HUM_ADDRESS,".$_POST['HumAddress'], 4096); + usleep(20000); + if (isset($_POST['LCDcols'])) { + socket_write($sock, "LCD_COLS,".$_POST['LCDcols'], 4096); + usleep(20000); + } + if (isset($_POST['LCDrows'])) { + socket_write($sock, "LCD_ROWS,".$_POST['LCDrows'], 4096); + usleep(20000); + } + socket_write($sock, ".", 4096); + while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + } + socket_close($sock); + } + } + + unset($_POST['Name']); + unset($_POST['Port']); + unset($_POST['TempAddress']); + unset($_POST['HumAddress']); + unset($_POST['LCDcols']); + unset($_POST['LCDrows']); + unset($_POST['key']); + load('global.php'); +} + + + +function test_thedata() { + + if (isset($_POST['Name']) && isset($_POST['Port']) && + isset($_POST['TempAddress']) && isset($_POST['HumAddress']) && + isset($_POST['key'])) { + + if ($_POST['key'] == 'Cancel') + return 99; + + if (isset($_POST['LCDcols']) && (($_POST['LCDcols'] != 16) && ($_POST['LCDcols'] != 20))) + return 2; + + if (isset($_POST['LCDrows']) && (($_POST['LCDrows'] != 2) && ($_POST['LCDrows'] != 4))) + return 3; + + } else { + return 1; + } + + return 0; +} + + + +function testdata() +{ + $result = test_thedata(); + $error = ''; + + switch ($result) { + case 0: global_update(); + return; + break; + case 1: $error = 'Missing data'; + break; + case 2: $error = 'LCD columns must be 16 or 20'; + break; + case 3: $error = 'LCD rows must be 2 or 4'; + break; + case 99: + load('global.php'); + break; + } + + edit_screen($error); +} + + -$outstr .= '
'.PHP_EOL; -$outstr .= build_footer(); +function edit_screen($error_message) +{ + /* + * Get list of devices, we need it later + */ + $answer = send_cmd("DEVICE LIST"); + $devices = explode("\r\n", $answer); + + /* + * Get current global data + */ + $answer = send_cmd("GLOBAL GET"); + $reply = explode("\r\n", $answer); + + $outstr = build_header("ThermFerm - Global Setup"); + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.$error_message.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + + if (startsWith($reply[0], "213")) { + $i = 1; + while (1) { + if (strcmp($reply[$i], ".") == 0) + break; + $f = explode(",", $reply[$i]); -echo $outstr; + if ($f[0] == "NAME") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + if ($f[0] == "PORT") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + if ($f[0] == "TEMP_ADDRESS") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + if ($f[0] == "HUM_ADDRESS") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + if ($f[0] == "LCD_COLS") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + if ($f[0] == "LCD_ROWS") { + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + } + $i++; + } + } + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= '
Global Setup
System Name
Telnet port
Room temperature sensor
Room humidity sensor
LCD columns
LCD rows
'; + $outstr .= ''; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= build_footer(); + + echo $outstr; +} + +