diff --git a/miner.php b/miner.php index f6250f0d..ecabbdb1 100644 --- a/miner.php +++ b/miner.php @@ -892,7 +892,7 @@ $singlerigsum = array( 'Hardware Errors' => 1, 'Utility' => 1, 'Total MH' => 1), 'pools' => array('Getworks' => 1, 'Accepted' => 1, 'Rejected' => 1, 'Discarded' => 1, 'Stale' => 1, 'Get Failures' => 1, 'Remote Failures' => 1, - 'Diff1 Shares' => 1), + 'Diff1 Shares' => 1, 'Difficulty Accepted' => 1), 'notify' => array('*' => 1)); # function showtotal($total, $when, $oldvalues) @@ -1207,7 +1207,7 @@ function process($cmds, $rig) } } # -function rigbutton($rig, $rigname, $when, $row) +function rigname($rig, $rigname) { global $rigs; @@ -1218,12 +1218,21 @@ function rigbutton($rig, $rigname, $when, $row) $rigname = $parts[2]; } - list($value, $class) = fmt('BUTTON', 'Rig', '', $when, $row); + return $rigname; +} +# +function riginput($rig, $rigname) +{ + $rigname = rigname($rig, $rigname); - $button = ""; + return ""; +} +# +function rigbutton($rig, $rigname, $when, $row) +{ + list($value, $class) = fmt('BUTTON', 'Rig', '', $when, $row); - return $button; + return "".riginput($rig, $rigname).''; } # function showrigs($anss, $headname, $rigname) @@ -1445,16 +1454,43 @@ function pagebuttons($rig, $pg) if ($rig === null) { + $prev = null; + $next = null; + if ($pg === null) $refresh = ''; else $refresh = "&pg=$pg"; } else + { + switch (count($rigs)) + { + case 0: + case 1: + $prev = null; + $next = null; + break; + case 2: + $prev = null; + $next = ($rig + 1) % count($rigs); + break; + default: + $prev = ($rig - 1) % count($rigs); + $next = ($rig + 1) % count($rigs); + break; + } + $refresh = "&rig=$rig"; + } echo '');
'; + if ($prev !== null) + echo riginput($prev, 'Prev').' '; echo " "; + if ($next !== null) + echo riginput($next, 'Next').' '; + echo ' '; if (count($rigs) > 1) echo " "; @@ -1522,7 +1558,8 @@ $sectionmap = array( 'DEVDETAILS' => 'devdetails', 'STATS' => 'stats', 'CONFIG' => 'config', - 'COIN' => 'coin'); + 'COIN' => 'coin', + 'USBSTATS' => 'usbstats'); # function joinfields($section1, $section2, $join, $results) { @@ -1584,6 +1621,79 @@ function joinfields($section1, $section2, $join, $results) return $newres; } # +function joinlr($section1, $section2, $join, $results) +{ + global $sectionmap; + + $name1 = $sectionmap[$section1]; + $name2 = $sectionmap[$section2]; + $newres = array(); + + // foreach rig in section1 + foreach ($results[$name1] as $rig => $result) + { + $status = null; + + // foreach answer section in the rig api call + foreach ($result as $name1b => $fields1b) + { + if ($name1b == 'STATUS') + { + // remember the STATUS from section1 + $status = $result[$name1b]; + continue; + } + + // Build L string to be matched + // : means a string constant otherwise it's a field name + $Lval = ''; + foreach ($join['L'] as $field) + { + if (substr($field, 0, 1) == ':') + $Lval .= substr($field, 1); + else + $Lval .= $fields1b[$field]; + } + + // foreach answer section in the rig api call (for the other api command) + foreach ($results[$name2][$rig] as $name2b => $fields2b) + { + if ($name2b == 'STATUS') + continue; + + // Build R string and compare + // : means a string constant otherwise it's a field name + $Rval = ''; + foreach ($join['R'] as $field) + { + if (substr($field, 0, 1) == ':') + $Rval .= substr($field, 1); + else + $Rval .= $fields2b[$field]; + } + + if ($Lval === $Rval) + { + if ($status != null) + { + $newres[$rig]['STATUS'] = $status; + $status = null; + } + + $subsection = $section1.'+'.$section2; + $subsection .= preg_replace('/[^0-9]/', '', $name1b.$name2b); + + foreach ($fields1b as $nam => $val) + $newres[$rig][$subsection]["$section1.$nam"] = $val; + foreach ($fields2b as $nam => $val) + $newres[$rig][$subsection]["$section2.$nam"] = $val; + } + } + } + } + return $newres; +} +# function joinall($section1, $section2, $results) { global $sectionmap; @@ -1628,8 +1738,6 @@ function joinsections($sections, $results, $errors) { global $sectionmap; -#echo "results['pools']=".print_r($results['pools'],true)."
"; - // GPU's don't have Name,ID fields - so create them foreach ($results as $section => $res) foreach ($res as $rig => $result) @@ -1667,14 +1775,33 @@ function joinsections($sections, $results, $errors) } break; case 'DEVS': - $join = array('Name', 'ID'); switch($both[1]) { case 'NOTIFY': case 'DEVDETAILS': + case 'USBSTATS': + $join = array('Name', 'ID'); $sectionmap[$section] = $section; $results[$section] = joinfields($both[0], $both[1], $join, $results); break; + case 'STATS': + $join = array('L' => array('Name','ID'), 'R' => array('ID')); + $sectionmap[$section] = $section; + $results[$section] = joinlr($both[0], $both[1], $join, $results); + break; + default: + $errors[] = "Error: Invalid section '$section'"; + break; + } + break; + case 'POOL': + switch($both[1]) + { + case 'STATS': + $join = array('L' => array(':POOL','POOL'), 'R' => array('ID')); + $sectionmap[$section] = $section; + $results[$section] = joinlr($both[0], $both[1], $join, $results); + break; default: $errors[] = "Error: Invalid section '$section'"; break; @@ -2099,7 +2226,7 @@ function display() newtable(); doforeach('version', 'rig summary', array(), array(), true); - $sum = array('MHS av', 'Getworks', 'Found Blocks', 'Accepted', 'Rejected', 'Discarded', 'Stale', 'Utility', 'Local Work', 'Total MH', 'Work Utility', 'Diff1 Shares', 'Diff1 Work'); + $sum = array('MHS av', 'Getworks', 'Found Blocks', 'Accepted', 'Rejected', 'Discarded', 'Stale', 'Utility', 'Local Work', 'Total MH', 'Work Utility', 'Diff1 Shares', 'Diff1 Work', 'Difficulty Accepted', 'Difficulty Rejected', 'Difficulty Stale'); doforeach('summary', 'summary information', $sum, array(), false); endtable(); otherrow('