diff options
author | Chris Buechler <cmb@pfsense.org> | 2011-12-17 13:08:57 -0800 |
---|---|---|
committer | Chris Buechler <cmb@pfsense.org> | 2011-12-17 13:08:57 -0800 |
commit | f4ef3c8a8d707651138bd08021c2a6104ccfa598 (patch) | |
tree | 49ef4b372eb1e0ff5c539b8bdf6bae31010fc2b3 /config/lcdproc-dev | |
parent | d85e2a1bca6c979dde5ed9ff92f339e1235de06c (diff) | |
parent | 4df6d0b63e07cfe556c1d522e1a59f8223e0aa8d (diff) | |
download | pfsense-packages-f4ef3c8a8d707651138bd08021c2a6104ccfa598.tar.gz pfsense-packages-f4ef3c8a8d707651138bd08021c2a6104ccfa598.tar.bz2 pfsense-packages-f4ef3c8a8d707651138bd08021c2a6104ccfa598.zip |
Merge pull request #141 from mdima/master
Other improvements / new features
Diffstat (limited to 'config/lcdproc-dev')
-rw-r--r-- | config/lcdproc-dev/lcdproc.inc | 140 | ||||
-rw-r--r-- | config/lcdproc-dev/lcdproc.xml | 4 | ||||
-rw-r--r-- | config/lcdproc-dev/lcdproc_client.php | 106 | ||||
-rw-r--r-- | config/lcdproc-dev/lcdproc_screens.xml | 15 |
4 files changed, 225 insertions, 40 deletions
diff --git a/config/lcdproc-dev/lcdproc.inc b/config/lcdproc-dev/lcdproc.inc index d4ff92fa..b82a59e6 100644 --- a/config/lcdproc-dev/lcdproc.inc +++ b/config/lcdproc-dev/lcdproc.inc @@ -49,7 +49,7 @@ if((int)exec('pgrep LCDd | wc -l') > 0) return true; return false; - } + } function lcdproc_write_config($file, $text) { $handle = fopen($file, 'w'); @@ -75,16 +75,16 @@ function before_form_lcdproc($pkg) { global $config; - config_lock(); - + config_lock(); + config_unlock(); } function before_form_lcdproc_screens($pkg) { global $config; - config_lock(); - + config_lock(); + config_unlock(); } @@ -149,6 +149,9 @@ case "20x4": continue; break; + case "40x2": + continue; + break; default: $input_errors[] = "The chosen display size is not valid"; break; @@ -228,12 +231,12 @@ $config_text .= "DownKey=Down\n"; /* lcdproc default driver definitions */ - switch($lcdproc_config[driver]) { + switch($lcdproc_config[driver]) { case "bayrad": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "Device={$realport}\n"; $config_text .= "Speed=9600\n"; - break; + break; case "CFontz": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "Device={$realport}\n"; @@ -292,6 +295,18 @@ $config_text .= "OffBrightness=0\n"; $config_text .= "Brightness=500\n"; break; + case "EyeboxOne": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Backlight=yes\n"; + $config_text .= "Speed=19200\n"; + break; + case "glk": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Contrast=560\n"; + $config_text .= "Speed=19200\n"; + break; case "hd44780": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "driverpath=/usr/local/lib/lcdproc/\n"; @@ -307,13 +322,78 @@ $config_text .= "DelayMult=1\n"; $config_text .= "DelayBus=true\n"; $config_text .= "Size={$lcdproc_config['size']}\n"; - break; + break; + case "icp_a106": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + break; + case "IOWarrior": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + break; + case "lb216": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Brightness=255\n"; + $config_text .= "Speed=9600\n"; + $config_text .= "Reboot=no\n"; + break; + case "lcdm001": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + break; + case "lcterm": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + break; + case "MD8800": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + $config_text .= "Brightness=1000\n"; + $config_text .= "OffBrightness=0\n"; + break; + case "ms6931": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Brightness=255\n"; + $config_text .= "Reboot=no\n"; + break; + case "mtc_s16209x": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Brightness=255\n"; + $config_text .= "Reboot=no\n"; + break; + case "MtxOrb": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + $config_text .= "Contrast=480\n"; + $config_text .= "Type=lcd\n"; + $config_text .= "hasAdjustableBacklight=yes\n"; + $config_text .= "Reboot=no\n"; + $config_text .= "Brightness=1000\n"; + $config_text .= "OffBrightness=0\n"; + $config_text .= "Speed=19200\n"; + break; case "nexcom": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "driverpath =/usr/local/lib/lcdproc/\n"; $config_text .= "Device={$realport}\n"; $config_text .= "Size={$lcdproc_config['size']}\n"; - break; + break; + case "NoritakeVFD": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + $config_text .= "Brightness=1000\n"; + $config_text .= "OffBrightness=0\n"; + $config_text .= "Speed=9600\n"; + $config_text .= "Parity=0\n"; + $config_text .= "Reboot=no\n"; + break; case "picolcd": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "driverpath=/usr/local/lib/lcdproc/\n"; @@ -336,16 +416,48 @@ $config_text .= "Device={$realport}\n"; $config_text .= "Size={$lcdproc_config['size']}\n"; break; + case "sed1330": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + break; + case "sed1520": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + break; + case "serialPOS": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + $config_text .= "Type=AEDEX\n"; + $config_text .= "Speed=9600\n"; + break; + case "serialVFD": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "use_parallel=no\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Size={$lcdproc_config['size']}\n"; + $config_text .= "Type=0\n"; //Just the first + $config_text .= "Brightness=1000\n"; + $config_text .= "OffBrightness=0\n"; + $config_text .= "Speed=9600\n"; + $config_text .= "ISO_8859_1=yes\n"; + break; + case "shuttleVFD": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + break; case "SureElec": $config_text .= "[{$lcdproc_config['driver']}]\n"; $config_text .= "driverpath =/usr/local/lib/lcdproc/\n"; $config_text .= "Device={$realport}\n"; $config_text .= "Size={$lcdproc_config['size']}\n"; - $config_text .= "Edition=2\n"; + $config_text .= "Edition=2\n"; $config_text .= "Contrast=200\n"; - $config_text .= "Brightness=480\n"; + $config_text .= "Brightness=480\n"; $config_text .= "Speed=19200\n"; break; + case "sli": + $config_text .= "[{$lcdproc_config['driver']}]\n"; + $config_text .= "Device={$realport}\n"; + $config_text .= "Speed=9600\n"; + break; default: lcdproc_warn("The chosen lcdproc driver is not a valid choice"); unset($lcdproc_config[driver]); @@ -370,12 +482,12 @@ EOD; $stop = <<<EOD if [ `ps auxw |awk '/LCD[d]/ {print $2}'| wc -l` != 0 ]; then - ps auxw |awk '/LCD[d]/ {print $2}'|xargs kill - sleep 1 + ps auxw |awk '/LCD[d]/ {print $2}'|xargs kill + sleep 1 fi if [ `ps auxw |awk '/lcdclient.s[h]/ {print $2}'| wc -l` != 0 ]; then ps auxw |awk '/lcdclient.s[h]/ {print $2}'|xargs kill - sleep 1 + sleep 1 fi EOD; diff --git a/config/lcdproc-dev/lcdproc.xml b/config/lcdproc-dev/lcdproc.xml index 16fd45b0..85e4ca23 100644 --- a/config/lcdproc-dev/lcdproc.xml +++ b/config/lcdproc-dev/lcdproc.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" ?> <packagegui> - <title>Services: LCDproc 0.5.4 pkg v. 0.1</title> + <title>Services: LCDproc 0.5.4 pkg v. 0.3</title> <name>lcdproc</name> - <version>0.5.4 pkg v. 0.2</version> + <version>0.5.4 pkg v. 0.3</version> <savetext>Save</savetext> <include_file>/usr/local/pkg/lcdproc.inc</include_file> <tabs> diff --git a/config/lcdproc-dev/lcdproc_client.php b/config/lcdproc-dev/lcdproc_client.php index 5c0edb77..52656fdc 100644 --- a/config/lcdproc-dev/lcdproc_client.php +++ b/config/lcdproc-dev/lcdproc_client.php @@ -32,8 +32,9 @@ */ require_once("config.inc"); require_once("functions.inc"); + require_once("interfaces.inc"); require_once("/usr/local/pkg/lcdproc.inc"); - + function get_pfstate() { global $config; $matches = ""; @@ -70,25 +71,12 @@ return $memUsage; } - /*function array_combine($arr1, $arr2) { - $out = array(); - - $arr1 = array_values($arr1); - $arr2 = array_values($arr2); - - foreach($arr1 as $key1 => $value1) { - $out[(string)$value1] = $arr2[$key1]; - } - - return $out; - }*/ - /* Calculates non-idle CPU time and returns as a percentage */ function cpu_usage() { - $duration = 1; + $duration = 250000; $diff = array('user', 'nice', 'sys', 'intr', 'idle'); $cpuTicks = array_combine($diff, explode(" ", `/sbin/sysctl -n kern.cp_time`)); - sleep($duration); + usleep($duration); $cpuTicks2 = array_combine($diff, explode(" ", `/sbin/sysctl -n kern.cp_time`)); $totalStart = array_sum($cpuTicks); @@ -157,6 +145,19 @@ $status = "$curfreq\/$maxfreq Mhz"; return($status); } + + function get_cpufrequency_perc(){ + $cpufreqs = ""; + exec("/sbin/sysctl -n dev.cpu.0.freq_levels", $cpufreqs); + $cpufreqs = explode(" ", trim($cpufreqs[0])); + $maxfreq = explode("/", $cpufreqs[0]); + $maxfreq = $maxfreq[0]; + $curfreq = ""; + exec("/sbin/sysctl -n dev.cpu.0.freq", $curfreq); + $curfreq = trim($curfreq[0]); + $status = $curfreq/$maxfreq * 100; + return($status); + } function get_interfaces_stats() { global $g; @@ -454,6 +455,41 @@ } } + function get_traffic_stats(&$in_data, &$out_data){ + global $config; + global $traffic_last_ugmt, $traffic_last_ifin, $traffic_last_ifout; + $lcdproc_screen_config = $config['installedpackages']['lcdprocscreens']['config'][0]; + /* read the configured interface */ + $ifnum = $lcdproc_screen_config['scr_traffic_interface']; + /* get the real interface name (code from ifstats.php)*/ + $realif = get_real_interface($ifnum); + if(!$realif) + $realif = $ifnum; // Need for IPSec case interface. + /* get the interface stats (code from ifstats.php)*/ + $ifinfo = pfSense_get_interface_stats($realif); + /* get the current time (code from ifstats.php)*/ + $temp = gettimeofday(); + $timing = (double)$temp["sec"] + (double)$temp["usec"] / 1000000.0; + /* calculate the traffic stats */ + $deltatime = $timing - $traffic_last_ugmt; + $in_data = "IN: " . formatSpeedBits(((double)$ifinfo['inbytes']-$traffic_last_ifin)/$deltatime); + $out_data = "OUT: " . formatSpeedBits(((double)$ifinfo['outbytes']-$traffic_last_ifout)/$deltatime); + $traffic_last_ugmt = $timing; + $traffic_last_ifin = (double)$ifinfo['inbytes']; + $traffic_last_ifout = (double)$ifinfo['outbytes']; + } + + function formatSpeedBits($speed) { + /* format speed in bits/sec, input: bytes/sec + Code from: graph.php ported to PHP*/ + if ($speed < 125000) + {return sprintf("%3d.1 Kbps", $speed / 125);} + if ($speed < 125000000) + {return sprintf("%3d.1 Mbps", $speed / 125000);} + // else + return sprintf("%3d.1 Gbps", $speed / 125000000); + } + function add_summary_declaration(&$lcd_cmds, $name) { $lcdpanel_height = get_lcdpanel_height(); if ($lcdpanel_height >= "4") @@ -466,7 +502,10 @@ function add_summary_values(&$lcd_cmds, $name, $lcd_summary_data, $lcdpanel_width) { if ($lcd_summary_data != "") { - $lcd_cmds[] = "widget_set $name title_summary 1 3 $lcdpanel_width 3 h 2 \"CPU MEM STATES\""; + if ($lcdpanel_width > "16") + {$lcd_cmds[] = "widget_set $name title_summary 1 3 $lcdpanel_width 3 h 2 \"CPU MEM STATES FREQ\"";} + else + {$lcd_cmds[] = "widget_set $name title_summary 1 3 $lcdpanel_width 3 h 2 \"CPU MEM STATES\"";} $lcd_cmds[] = "widget_set $name text_summary 1 4 $lcdpanel_width 4 h 2 \"{$lcd_summary_data}\""; } } @@ -597,7 +636,15 @@ $lcd_cmds[] = "screen_set $name duration $refresh_frequency"; $lcd_cmds[] = "widget_add $name title_wdgt string"; $lcd_cmds[] = "widget_add $name text_wdgt scroller"; - break; + break; + case "scr_traffic": + $lcd_cmds[] = "screen_add $name"; + $lcd_cmds[] = "screen_set $name heartbeat off"; + $lcd_cmds[] = "screen_set $name name $name"; + $lcd_cmds[] = "screen_set $name duration $refresh_frequency"; + $lcd_cmds[] = "widget_add $name title_wdgt string"; + $lcd_cmds[] = "widget_add $name text_wdgt string"; + break; } add_summary_declaration($lcd_cmds, $name); } @@ -615,6 +662,7 @@ if(empty($g['product_name'])) { $g['product_name'] = "pfSense"; } + $refresh_frequency = get_lcdpanel_refresh_frequency(); /* keep a counter to see how many times we can loop */ $i = 1; @@ -622,7 +670,10 @@ /* prepare the summary data */ if ($lcdpanel_height >= "4") { $summary_states = split("/",get_pfstate()); - $lcd_summary_data = sprintf("%02d%% %02d%% %6d", cpu_usage(), mem_usage(), $summary_states[0]); + $lcd_summary_data = sprintf("%02d%% %02d%% %6d", cpu_usage(), mem_usage(), $summary_states[0]); + if ($lcdpanel_width > "16") { + $lcd_summary_data = $lcd_summary_data . sprintf(" %3d%%", get_cpufrequency_perc()); + } } else { $lcd_summary_data = "";} @@ -710,16 +761,27 @@ $lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"+ CPU Frequency\""; $lcd_cmds[] = "widget_set $name text_wdgt 1 2 $lcdpanel_width 2 h 2 \"{$cpufreq}\""; break; + case "scr_traffic": + get_traffic_stats($in_data, $out_data); + $lcd_cmds[] = "widget_set $name title_wdgt 1 1 \"{$in_data}\""; + $lcd_cmds[] = "widget_set $name text_wdgt 1 2 \"{$out_data}\""; + break; } add_summary_values($lcd_cmds, $name, $lcd_summary_data, $lcdpanel_width); - $widget_counter++; + if ($name != "scr_traffic_interface") { + $widget_counter++; + add_summary_values($lcd_cmds, $name, $lcd_summary_data, $lcdpanel_width); + } } send_lcd_commands($lcd, $lcd_cmds); sleep($refresh_frequency * $widget_counter); $i++; } } - + /* Initialize the wan traffic counters */ + $traffic_last_ugmt = 0; + $traffic_last_ifin = 0; + $traffic_last_ifout = 0; /* Connect to the LCDd port and interface with the LCD */ $lcd = fsockopen(LCDPROC_HOST, LCDPROC_PORT, $errno, $errstr, 10); if (!$lcd) { @@ -730,4 +792,4 @@ /* loop exited? Close fd and wait for the script to kick in again */ fclose($lcd); } -?> +?>
\ No newline at end of file diff --git a/config/lcdproc-dev/lcdproc_screens.xml b/config/lcdproc-dev/lcdproc_screens.xml index e0597d58..acde02ca 100644 --- a/config/lcdproc-dev/lcdproc_screens.xml +++ b/config/lcdproc-dev/lcdproc_screens.xml @@ -2,7 +2,7 @@ <packagegui> <title>Services: LCDproc: Screens</title> <name>lcdproc_screens</name> - <version>0.5.2_1-p9</version> + <version>0.5.4 pkg v. 0.3</version> <savetext>Save</savetext> <include_file>/usr/local/pkg/lcdproc.inc</include_file> <tabs> @@ -92,7 +92,18 @@ <fielddescr>Enable CPU Frequency</fielddescr> <fieldname>scr_cpufrequency</fieldname> <type>checkbox</type> - </field> + </field> + <field> + <fielddescr>Enable Interface Traffic</fielddescr> + <fieldname>scr_traffic</fieldname> + <type>checkbox</type> + </field> + <field> + <fielddescr> > interface selected</fielddescr> + <fieldname>scr_traffic_interface</fieldname> + <type>interfaces_selection</type> + <description>If Interface Traffic is enabled, here you specify which interface to monitor</description> + </field> </fields> <custom_php_command_before_form> before_form_lcdproc_screens(&$pkg); |