+ mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)"))
+ mode:value("monitor", translate("Monitor"))
+ mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")})
+ mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")})
+ mode:value("wds", translate("Static WDS"))
+
+ function mode.write(self, section, value)
+ if value == "ap-wds" then
+ ListValue.write(self, section, "ap")
+ m.uci:set("wireless", section, "wds", 1)
+ elseif value == "sta-wds" then
+ ListValue.write(self, section, "sta")
+ m.uci:set("wireless", section, "wds", 1)
+ else
+ ListValue.write(self, section, value)
+ m.uci:delete("wireless", section, "wds")
+ end
+ end
+
+ function mode.cfgvalue(self, section)
+ local mode = ListValue.cfgvalue(self, section)
+ local wds = m.uci:get("wireless", section, "wds") == "1"
+
+ if mode == "ap" and wds then
+ return "ap-wds"
+ elseif mode == "sta" and wds then
+ return "sta-wds"
+ else
+ return mode
+ end
+ end
+
+ bssid:depends({mode="adhoc"})
+ bssid:depends({mode="ahdemo"})
+ bssid:depends({mode="wds"})
+
+ wdssep = s:taboption("advanced", Flag, "wdssep", translate("Separate WDS"))
+ wdssep:depends({mode="ap-wds"})
+
+ s:taboption("advanced", Flag, "doth", "802.11h")
+ hidden = s:taboption("general", Flag, "hidden", translate("Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
+ hidden:depends({mode="ap"})
+ hidden:depends({mode="adhoc"})
+ hidden:depends({mode="ap-wds"})
+ hidden:depends({mode="sta-wds"})
+ isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"),
+ translate("Prevents client-to-client communication"))
+ isolate:depends({mode="ap"})
+ s:taboption("advanced", Flag, "bgscan", translate("Background Scan"))
+
+ mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter"))
+ mp:value("", translate("disable"))
+ mp:value("deny", translate("Allow listed only"))
+ mp:value("allow", translate("Allow all except listed"))
+ ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List"))
+ ml:depends({macpolicy="allow"})
+ ml:depends({macpolicy="deny"})
+
+ s:taboption("advanced", Value, "rate", translate("Transmission Rate"))
+ s:taboption("advanced", Value, "mcast_rate", translate("Multicast Rate"))
+ s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
+ s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
+ s:taboption("advanced", Value, "minrate", translate("Minimum Rate"))
+ s:taboption("advanced", Value, "maxrate", translate("Maximum Rate"))
+ s:taboption("advanced", Flag, "compression", translate("Compression"))
+
+ s:taboption("advanced", Flag, "bursting", translate("Frame Bursting"))
+ s:taboption("advanced", Flag, "turbo", translate("Turbo Mode"))
+ s:taboption("advanced", Flag, "ff", translate("Fast Frames"))
+
+ s:taboption("advanced", Flag, "wmm", translate("WMM Mode"))
+ s:taboption("advanced", Flag, "xr", translate("XR Support"))
+ s:taboption("advanced", Flag, "ar", translate("AR Support"))
+
+ local swm = s:taboption("advanced", Flag, "sw_merge", translate("Disable HW-Beacon timer"))
+ swm:depends({mode="adhoc"})
+
+ local nos = s:taboption("advanced", Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
+ nos:depends({mode="sta"})
+ nos:depends({mode="sta-wds"})
+
+ local probereq = s:taboption("advanced", Flag, "probereq", translate("Do not send probe responses"))
+ probereq.enabled = "0"
+ probereq.disabled = "1"