5 'require modemmanager_helper as helper';
7 network
.registerPatternVirtual(/^mobiledata-.+$/);
8 network
.registerErrorCode('MM_CONNECT_FAILED', _('Connection attempt failed.'));
9 network
.registerErrorCode('MM_DISCONNECT_IN_PROGRESS', _('Modem disconnection in progress. Please wait.'));
10 network
.registerErrorCode('MM_CONNECT_IN_PROGRESS', _('Modem connection in progress. Please wait. This process will timeout after 2 minutes.'));
11 network
.registerErrorCode('MM_TEARDOWN_IN_PROGRESS', _('Modem bearer teardown in progress.'));
12 network
.registerErrorCode('MM_MODEM_DISABLED', _('Modem is disabled.'));
13 network
.registerErrorCode('DEVICE_NOT_MANAGED', _('Device not managed by ModemManager.'));
14 network
.registerErrorCode('INVALID_BEARER_LIST', _('Invalid bearer list. Possibly too many bearers created. This protocol supports one and only one bearer.'));
15 network
.registerErrorCode('UNKNOWN_METHOD', _('Unknown and unsupported connection method.'));
16 network
.registerErrorCode('DISCONNECT_FAILED', _('Disconnection attempt failed.'));
18 return network
.registerProtocol('modemmanager', {
20 return _('ModemManager');
23 getIfname: function() {
24 return this._ubus('l3_device') || 'modemmanager-%s'.format(this.sid
);
27 getOpkgPackage: function() {
28 return 'modemmanager';
31 isFloating: function() {
35 isVirtual: function() {
39 getDevices: function() {
43 containsDevice: function(ifname
) {
44 return (network
.getIfnameOf(ifname
) == this.getIfname());
47 renderFormOptions: function(s
) {
48 var dev
= this.getL3Device() || this.getDevice(), o
;
50 o
= s
.taboption('general', form
.ListValue
, '_modem_device', _('Modem device'));
51 o
.ucioption
= 'device';
53 o
.load = function(section_id
) {
54 return helper
.getModems().then(L
.bind(function(devices
) {
55 for (var i
= 0; i
< devices
.length
; i
++) {
56 var generic
= devices
[i
].modem
.generic
;
57 this.value(generic
.device
,
58 '%s - %s'.format(generic
.manufacturer
, generic
.model
));
60 return form
.Value
.prototype.load
.apply(this, [section_id
]);
64 o
= s
.taboption('general', form
.Value
, 'apn', _('APN'));
65 o
.validate = function(section_id
, value
) {
66 if (value
== null || value
== '')
69 if (!/^[a-zA-Z0-9\-.]*[a-zA-Z0-9]$/.test(value
))
70 return _('Invalid APN provided');
75 o
= s
.taboption('general', form
.Value
, 'pincode', _('PIN'));
76 o
.datatype
= 'and(uinteger,minlength(4),maxlength(8))';
78 o
= s
.taboption('general', form
.ListValue
, 'auth', _('Authentication Type'));
79 o
.value('both', _('PAP/CHAP (both)'));
80 o
.value('pap', 'PAP');
81 o
.value('chap', 'CHAP');
82 o
.value('none', _('None'));
85 o
= s
.taboption('general', form
.ListValue
, 'allowedmode', _('Allowed network technology'),
86 _('Setting the allowed network technology.'));
101 o
.value('5g|4g|3g|2g');
102 o
.value('',_('any'));
105 o
= s
.taboption('general', form
.ListValue
, 'preferredmode', _('Preferred network technology'),
106 _('Setting the preferred network technology.'));
111 o
.depends('allowedmode','3g|2g');
112 o
.depends('allowedmode','4g|2g');
113 o
.depends('allowedmode','4g|3g');
114 o
.depends('allowedmode','4g|3g|2g');
115 o
.depends('allowedmode','5g|2g');
116 o
.depends('allowedmode','5g|3g');
117 o
.depends('allowedmode','5g|3g|2g');
118 o
.depends('allowedmode','5g|4g');
119 o
.depends('allowedmode','5g|4g|2g');
120 o
.depends('allowedmode','5g|4g|3g');
121 o
.depends('allowedmode','5g|4g|3g|2g');
123 o
= s
.taboption('general', form
.Value
, 'username', _('PAP/CHAP username'));
124 o
.depends('auth', 'pap');
125 o
.depends('auth', 'chap');
126 o
.depends('auth', 'both');
128 o
= s
.taboption('general', form
.Value
, 'password', _('PAP/CHAP password'));
129 o
.depends('auth', 'pap');
130 o
.depends('auth', 'chap');
131 o
.depends('auth', 'both');
134 o
= s
.taboption('general', form
.ListValue
, 'iptype', _('IP Type'));
135 o
.value('ipv4v6', _('IPv4/IPv6 (both - defaults to IPv4)'))
136 o
.value('ipv4', _('IPv4 only'));
137 o
.value('ipv6', _('IPv6 only'));
138 o
.default = 'ipv4v6';
140 o
= s
.taboption('advanced', form
.Value
, 'mtu', _('Override MTU'));
141 o
.placeholder
= dev
? (dev
.getMTU() || '1500') : '1500';
142 o
.datatype
= 'max(9200)';
144 o
= s
.taboption('general', form
.Value
, 'signalrate', _('Signal Refresh Rate'), _("In seconds"));
145 o
.datatype
= 'uinteger';