diff options
Diffstat (limited to 'protocols/luci-proto-qmi')
-rw-r--r-- | protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js | 101 | ||||
-rw-r--r-- | protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua | 63 |
2 files changed, 101 insertions, 63 deletions
diff --git a/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js b/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js new file mode 100644 index 0000000000..eeda91f6e6 --- /dev/null +++ b/protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js @@ -0,0 +1,101 @@ +'use strict'; +'require rpc'; +'require form'; +'require network'; + +var callFileList = rpc.declare({ + object: 'file', + method: 'list', + params: [ 'path' ], + expect: { entries: [] }, + filter: function(list, params) { + var rv = []; + for (var i = 0; i < list.length; i++) + if (list[i].name.match(/^cdc-wdm/)) + rv.push(params.path + list[i].name); + return rv.sort(); + } +}); + +network.registerPatternVirtual(/^qmi-.+$/); +network.registerErrorCode('CALL_FAILED', _('Call failed')); +network.registerErrorCode('NO_CID', _('Unable to obtain client ID')); +network.registerErrorCode('PLMN_FAILED', _('Setting PLMN failed')); + +return network.registerProtocol('qmi', { + getI18n: function() { + return _('QMI Cellular'); + }, + + getIfname: function() { + return this._ubus('l3_device') || 'qmi-%s'.format(this.sid); + }, + + getOpkgPackage: function() { + return 'uqmi'; + }, + + isFloating: function() { + return true; + }, + + isVirtual: function() { + return true; + }, + + getDevices: function() { + return null; + }, + + containsDevice: function(ifname) { + return (network.getIfnameOf(ifname) == this.getIfname()); + }, + + renderFormOptions: function(s) { + var dev = this.getL3Device() || this.getDevice(), o; + + o = s.taboption('general', form.Value, 'device', _('Modem device')); + o.rmempty = false; + o.load = function(section_id) { + return callFileList('/dev/').then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) + this.value(devices[i]); + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }; + + s.taboption('general', form.Value, 'apn', _('APN')); + s.taboption('general', form.Value, 'pincode', _('PIN')); + + o = s.taboption('general', form.ListValue, 'auth', _('Authentication Type')); + o.value('both', 'PAP/CHAP (both)'); + o.value('pap', 'PAP'); + o.value('chap', 'CHAP'); + o.value('none', 'NONE'); + o.default = 'none'; + + o = s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + + o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + o.password = true; + + if (L.hasSystemFeature('ipv6')) { + o = s.taboption('advanced', form.Flag, 'ipv6', _('Enable IPv6 negotiation')); + o.default = o.disabled; + } + + o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Maximum amount of seconds to wait for the modem to become ready')); + o.placeholder = '10'; + o.datatype = 'min(1)'; + + o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU')); + o.placeholder = dev ? (dev.getMTU() || '1500') : '1500'; + o.datatype = 'max(9200)'; + } +}); diff --git a/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua b/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua deleted file mode 100644 index 383bc4662f..0000000000 --- a/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua +++ /dev/null @@ -1,63 +0,0 @@ --- Copyright 2016 David Thornley <david.thornley@touchstargroup.com> --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, apn, pincode, username, password -local auth, ipv6, delay, mtu - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*") - -if device_suggestions then - local node - for node in device_suggestions do - device:value(node) - end -end - - -apn = section:taboption("general", Value, "apn", translate("APN")) - - -pincode = section:taboption("general", Value, "pincode", translate("PIN")) - - -auth = section:taboption("general", Value, "auth", translate("Authentication Type")) -auth:value("both", "PAP/CHAP (both)") -auth:value("pap", "PAP") -auth:value("chap", "CHAP") -auth:value("none", "NONE") -auth.default = "none" - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) -username:depends("auth", "pap") -username:depends("auth", "chap") -username:depends("auth", "both") - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password:depends("auth", "pap") -password:depends("auth", "chap") -password:depends("auth", "both") -password.password = true - - -if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", translate("Enable IPv6 negotiation")) - ipv6.default = ipv6.disabled -end - -delay = section:taboption("advanced", Value, "delay", - translate("Modem init timeout"), - translate("Maximum amount of seconds to wait for the modem to become ready")) -delay.placeholder = "10" -delay.datatype = "min(1)" - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" |