362 lines
15 KiB
PHP
362 lines
15 KiB
PHP
<?php namespace pineapple;
|
|
|
|
class LEDController extends Module
|
|
{
|
|
public function route()
|
|
{
|
|
switch ($this->request->action) {
|
|
case 'getDeviceType':
|
|
$this->getDeviceType();
|
|
break;
|
|
case 'resetLEDs':
|
|
$this->resetLEDs();
|
|
break;
|
|
case 'getTetraYellow':
|
|
$this->getTetraYellow();
|
|
break;
|
|
case 'setTetraYellow':
|
|
$this->setTetraYellow();
|
|
break;
|
|
case 'getTetraBlue':
|
|
$this->getTetraBlue();
|
|
break;
|
|
case 'setTetraBlue':
|
|
$this->setTetraBlue();
|
|
break;
|
|
case 'getTetraRed':
|
|
$this->getTetraRed();
|
|
break;
|
|
case 'setTetraRed':
|
|
$this->setTetraRed();
|
|
break;
|
|
case 'getNanoBlue':
|
|
$this->getNanoBlue();
|
|
break;
|
|
case 'setNanoBlue':
|
|
$this->setNanoBlue();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private function restartLEDs()
|
|
{
|
|
exec('/etc/init.d/led restart');
|
|
}
|
|
|
|
private function getDeviceType()
|
|
{
|
|
$device = $this->getDevice();
|
|
|
|
if ($device == 'tetra') {
|
|
$this->response = 'tetra';
|
|
} else {
|
|
$this->response = 'nano';
|
|
}
|
|
}
|
|
|
|
private function getTetraYellow()
|
|
{
|
|
$trigger = $this->uciGet('system.led_eth0.trigger');
|
|
|
|
if ($trigger == 'none') {
|
|
$default = $this->uciGet('system.led_eth0.default');
|
|
if ($default == 0) {
|
|
$this->response = array('enabled' => false, 'trigger' => $trigger);
|
|
} elseif ($default == 1) {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
} elseif ($trigger == 'netdev') {
|
|
$mode = $this->uciGet('system.led_eth0.mode');
|
|
$interface = $this->uciGet('system.led_eth0.dev');
|
|
if ($mode == 'link tx rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx rx', 'interface' => $interface);
|
|
} elseif ($mode == 'link tx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx', 'interface' => $interface);
|
|
} elseif ($mode == 'link rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link rx', 'interface' => $interface);
|
|
}
|
|
} elseif ($trigger == 'timer') {
|
|
$delayOn = $this->uciGet('system.led_eth0.delayon');
|
|
$delayOff = $this->uciGet('system.led_eth0.delayoff');
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'delayOn' => $delayOn, 'delayOff' => $delayOff);
|
|
} else {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
}
|
|
|
|
private function setTetraYellow()
|
|
{
|
|
$enabled = $this->request->enabled;
|
|
$trigger = $this->request->trigger;
|
|
$mode = $this->request->mode;
|
|
$delayOn = $this->request->delayOn;
|
|
$delayOff = $this->request->delayOff;
|
|
$interface = $this->request->interface;
|
|
|
|
if ($enabled == true) {
|
|
if ($trigger == 'none') {
|
|
$this->uciSet('system.led_eth0.trigger', 'none');
|
|
$this->uciSet('system.led_eth0.default', '1');
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'netdev') {
|
|
$this->uciSet('system.led_eth0.trigger', 'netdev');
|
|
$this->uciSet('system.led_eth0.mode', "$mode");
|
|
$this->uciSet('system.led_eth0.dev', "$interface");
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'timer') {
|
|
$this->uciSet('system.led_eth0.trigger', 'timer');
|
|
$this->uciSet('system.led_eth0.delayon', "$delayOn");
|
|
$this->uciSet('system.led_eth0.delayoff', "$delayOff");
|
|
$this->restartLEDs();
|
|
}
|
|
} elseif ($enabled == false) {
|
|
$this->uciSet('system.led_eth0.trigger', 'none');
|
|
$this->uciSet('system.led_eth0.default', '0');
|
|
$this->restartLEDs();
|
|
}
|
|
|
|
$this->response = array('enabled' => $enabled, 'trigger' => $trigger,
|
|
'mode' => $mode, 'delayOn' => $delayOn,
|
|
'delayOff' => $delayOff, 'interface' => $interface, 'success' => true);
|
|
}
|
|
|
|
private function getTetraBlue()
|
|
{
|
|
$trigger = $this->uciGet('system.led_wlan0.trigger');
|
|
|
|
if ($trigger == 'none') {
|
|
$default = $this->uciGet('system.led_wlan0.default');
|
|
if ($default == 0) {
|
|
$this->response = array('enabled' => false, 'trigger' => $trigger);
|
|
} elseif ($default == 1) {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
} elseif ($trigger == 'netdev') {
|
|
$mode = $this->uciGet('system.led_wlan0.mode');
|
|
$interface = $this->uciGet('system.led_wlan0.dev');
|
|
if ($mode == 'link tx rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx rx', 'interface' => $interface);
|
|
} elseif ($mode == 'link tx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx', 'interface' => $interface);
|
|
} elseif ($mode == 'link rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link rx', 'interface' => $interface);
|
|
}
|
|
} elseif ($trigger == 'timer') {
|
|
$delayOn = $this->uciGet('system.led_wlan0.delayon');
|
|
$delayOff = $this->uciGet('system.led_wlan0.delayoff');
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'delayOn' => $delayOn, 'delayOff' => $delayOff);
|
|
} else {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
}
|
|
|
|
private function setTetraBlue()
|
|
{
|
|
$enabled = $this->request->enabled;
|
|
$trigger = $this->request->trigger;
|
|
$mode = $this->request->mode;
|
|
$delayOn = $this->request->delayOn;
|
|
$delayOff = $this->request->delayOff;
|
|
$interface = $this->request->interface;
|
|
|
|
if ($enabled == true) {
|
|
if ($trigger == 'none') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'none');
|
|
$this->uciSet('system.led_wlan0.default', '1');
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'netdev') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan0.mode', "$mode");
|
|
$this->uciSet('system.led_wlan0.dev', "$interface");
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'timer') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'timer');
|
|
$this->uciSet('system.led_wlan0.delayon', "$delayOn");
|
|
$this->uciSet('system.led_wlan0.delayoff', "$delayOff");
|
|
$this->restartLEDs();
|
|
}
|
|
} elseif ($enabled == false) {
|
|
$this->uciSet('system.led_wlan0.trigger', 'none');
|
|
$this->uciSet('system.led_wlan0.default', '0');
|
|
$this->restartLEDs();
|
|
}
|
|
|
|
$this->response = array('enabled' => $enabled, 'trigger' => $trigger,
|
|
'mode' => $mode, 'delayOn' => $delayOn,
|
|
'delayOff' => $delayOff, 'interface' => $interface, 'success' => true);
|
|
}
|
|
|
|
private function getTetraRed()
|
|
{
|
|
$trigger = $this->uciGet('system.led_wlan1mon.trigger');
|
|
|
|
if ($trigger == 'none') {
|
|
$default = $this->uciGet('system.led_wlan1mon.default');
|
|
if ($default == 0) {
|
|
$this->response = array('enabled' => false, 'trigger' => $trigger);
|
|
} elseif ($default == 1) {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
} elseif ($trigger == 'netdev') {
|
|
$mode = $this->uciGet('system.led_wlan1mon.mode');
|
|
$interface = $this->uciGet('system.led_wlan1mon.dev');
|
|
if ($mode == 'link tx rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx rx', 'interface' => $interface);
|
|
} elseif ($mode == 'link tx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx', 'interface' => $interface);
|
|
} elseif ($mode == 'link rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link rx', 'interface' => $interface);
|
|
}
|
|
} elseif ($trigger == 'timer') {
|
|
$delayOn = $this->uciGet('system.led_wlan1mon.delayon');
|
|
$delayOff = $this->uciGet('system.led_wlan1mon.delayoff');
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'delayOn' => $delayOn, 'delayOff' => $delayOff);
|
|
} else {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
}
|
|
|
|
private function setTetraRed()
|
|
{
|
|
$enabled = $this->request->enabled;
|
|
$trigger = $this->request->trigger;
|
|
$mode = $this->request->mode;
|
|
$delayOn = $this->request->delayOn;
|
|
$delayOff = $this->request->delayOff;
|
|
$interface = $this->request->interface;
|
|
|
|
if ($enabled == true) {
|
|
if ($trigger == 'none') {
|
|
$this->uciSet('system.led_wlan1mon.trigger', 'none');
|
|
$this->uciSet('system.led_wlan1mon.default', '1');
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'netdev') {
|
|
$this->uciSet('system.led_wlan1mon.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan1mon.mode', "$mode");
|
|
$this->uciSet('system.led_wlan1mon.dev', "$interface");
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'timer') {
|
|
$this->uciSet('system.led_wlan1mon.trigger', 'timer');
|
|
$this->uciSet('system.led_wlan1mon.delayon', "$delayOn");
|
|
$this->uciSet('system.led_wlan1mon.delayoff', "$delayOff");
|
|
$this->restartLEDs();
|
|
}
|
|
} elseif ($enabled == false) {
|
|
$this->uciSet('system.led_wlan1mon.trigger', 'none');
|
|
$this->uciSet('system.led_wlan1mon.default', '0');
|
|
$this->restartLEDs();
|
|
}
|
|
|
|
$this->response = array('enabled' => $enabled, 'trigger' => $trigger,
|
|
'mode' => $mode, 'delayOn' => $delayOn,
|
|
'delayOff' => $delayOff, 'interface' => $interface, 'success' => true);
|
|
}
|
|
|
|
private function getNanoBlue()
|
|
{
|
|
$trigger = $this->uciGet('system.led_wlan0.trigger');
|
|
|
|
if ($trigger == 'none') {
|
|
$default = $this->uciGet('system.led_wlan0.default');
|
|
if ($default == 0) {
|
|
$this->response = array('enabled' => false, 'trigger' => $trigger);
|
|
} elseif ($default == 1) {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
} elseif ($trigger == 'netdev') {
|
|
$mode = $this->uciGet('system.led_wlan0.mode');
|
|
$interface = $this->uciGet('system.led_wlan0.dev');
|
|
if ($mode == 'link tx rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx rx', 'interface' => $interface);
|
|
} elseif ($mode == 'link tx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link tx', 'interface' => $interface);
|
|
} elseif ($mode == 'link rx') {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'mode' => 'link rx', 'interface' => $interface);
|
|
}
|
|
} elseif ($trigger == 'timer') {
|
|
$delayOn = $this->uciGet('system.led_wlan0.delayon');
|
|
$delayOff = $this->uciGet('system.led_wlan0.delayoff');
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger,
|
|
'delayOn' => $delayOn, 'delayOff' => $delayOff);
|
|
} else {
|
|
$this->response = array('enabled' => true, 'trigger' => $trigger);
|
|
}
|
|
}
|
|
|
|
private function setNanoBlue()
|
|
{
|
|
$enabled = $this->request->enabled;
|
|
$trigger = $this->request->trigger;
|
|
$mode = $this->request->mode;
|
|
$delayOn = $this->request->delayOn;
|
|
$delayOff = $this->request->delayOff;
|
|
$interface = $this->request->interface;
|
|
|
|
if ($enabled == true) {
|
|
if ($trigger == 'none') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'none');
|
|
$this->uciSet('system.led_wlan0.default', '1');
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'netdev') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan0.mode', "$mode");
|
|
$this->uciSet('system.led_wlan0.dev', "$interface");
|
|
$this->restartLEDs();
|
|
} elseif ($trigger == 'timer') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'timer');
|
|
$this->uciSet('system.led_wlan0.delayon', "$delayOn");
|
|
$this->uciSet('system.led_wlan0.delayoff', "$delayOff");
|
|
$this->restartLEDs();
|
|
}
|
|
} elseif ($enabled == false) {
|
|
$this->uciSet('system.led_wlan0.trigger', 'none');
|
|
$this->uciSet('system.led_wlan0.default', '0');
|
|
$this->restartLEDs();
|
|
}
|
|
|
|
$this->response = array('enabled' => $enabled, 'trigger' => $trigger,
|
|
'mode' => $mode, 'delayOn' => $delayOn,
|
|
'delayOff' => $delayOff, 'interface' => $interface, 'success' => true);
|
|
}
|
|
|
|
private function resetLEDs()
|
|
{
|
|
$device = $this->getDevice();
|
|
|
|
if ($device == 'tetra') {
|
|
$this->uciSet('system.led_wlan0.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan0.mode', 'link tx rx');
|
|
$this->uciSet('system.led_wlan0.dev', 'wlan0');
|
|
$this->uciSet('system.led_wlan1mon.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan1mon.mode', 'link tx rx');
|
|
$this->uciSet('system.led_wlan1mon.dev', 'wlan1mon');
|
|
$this->uciSet('system.led_eth0.trigger', 'netdev');
|
|
$this->uciSet('system.led_eth0.mode', 'link tx rx');
|
|
$this->uciSet('system.led_eth0.dev', 'eth0');
|
|
$this->restartLEDs();
|
|
$this->response = array('success' => true);
|
|
} else {
|
|
$this->uciSet('system.led_wlan0.trigger', 'netdev');
|
|
$this->uciSet('system.led_wlan0.mode', 'link tx rx');
|
|
$this->uciSet('system.led_wlan0.dev', 'wlan0');
|
|
$this->restartLEDs();
|
|
$this->response = array('success' => true);
|
|
}
|
|
}
|
|
}
|