7 callInitAction: rpc.declare({
10 params: [ 'name', 'action' ],
11 expect: { result: false }
14 callLeds: rpc.declare({
19 callUSB: rpc.declare({
24 callNetdevs: rpc.declare({
27 expect: { result: [] },
28 filter: function(res) {
30 for (var i = 0; i < res.length; i++)
31 devs[res[i].name] = true;
32 return Object.keys(devs).sort();
44 render: function(results) {
45 var leds = results[0],
52 for (var i = 0; i < leds[k].triggers.length; i++)
53 triggers[leds[k].triggers[i]] = true;
55 m = new form.Map('system',
56 _('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
57 _('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
59 s = m.section(form.TypedSection, 'led', '');
63 s.option(form.Value, 'name', _('Name'));
65 o = s.option(form.ListValue, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
66 Object.keys(leds).sort().forEach(function(name) { o.value(name) });
68 o = s.option(form.Flag, 'default', _('Default state'));
71 trigger = s.option(form.ListValue, 'trigger', _('Trigger'));
72 Object.keys(triggers).sort().forEach(function(t) { trigger.value(t, t.replace(/-/g, '')) });
73 trigger.value('usbdev');
74 trigger.value('usbport');
76 o = s.option(form.Value, 'delayon', _('On-State Delay'));
77 o.depends('trigger', 'timer');
79 o = s.option(form.Value, 'delayoff', _('Off-State Delay'));
80 o.depends('trigger', 'timer');
82 o = s.option(form.ListValue, '_net_dev', _('Device'));
85 o.depends('trigger', 'netdev');
86 o.remove = function(section_id) {
87 var t = trigger.formvalue(section_id);
88 if (t != 'netdev' && t != 'usbdev')
89 uci.unset('system', section_id, 'dev');
92 netdevs.sort().forEach(function(dev) { o.value(dev) });
94 o = s.option(form.MultiValue, 'mode', _('Trigger Mode'));
96 o.depends('trigger', 'netdev');
97 o.value('link', _('Link On'));
98 o.value('tx', _('Transmit'));
99 o.value('rx', _('Receive'));
101 o = s.option(form.ListValue, '_usb_dev', _('USB Device'));
102 o.depends('trigger', 'usbdev');
105 o.remove = function(section_id) {
106 var t = trigger.formvalue(section_id);
107 if (t != 'netdev' && t != 'usbdev')
108 uci.unset('system', section_id, 'dev');
111 (usb.devices || []).forEach(function(usbdev) {
112 o.value(usbdev.id, '%s (%s - %s)'.format(usbdev.id, usbdev.vendor || '?', usbdev.product || '?'));
115 o = s.option(form.MultiValue, 'port', _('USB Ports'));
116 o.depends('trigger', 'usbport');
118 o.cfgvalue = function(section_id) {
120 value = uci.get('system', section_id, 'port');
122 if (!Array.isArray(value))
123 value = String(value || '').split(/\s+/);
125 for (var i = 0; i < value.length; i++)
126 if (value[i].match(/^usb(\d+)-port(\d+)$/))
127 ports.push(value[i]);
128 else if (value[i].match(/^(\d+)-(\d+)$/))
129 ports.push('usb%d-port%d'.format(Regexp.$1, Regexp.$2));
133 (usb.ports || []).forEach(function(usbport) {
134 o.value('usb%d-port%d'.format(usbport.hub, usbport.port),
135 'Hub %d, Port %d'.format(usbport.hub, usbport.port));
138 o = s.option(form.Value, 'port_mask', _('Switch Port Mask'));
139 o.depends('trigger', 'switch0');
140 o.depends('trigger', 'switch1');