Wifi updates part #1
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_network / wifi.lua
index 64a4928..a1d676a 100644 (file)
@@ -27,7 +27,8 @@ function en.cfgvalue(self, section)
        return Flag.cfgvalue(self, section) or "0"
 end
 
-t = s:option(DummyValue, "type", translate("type"))
+s:option(DummyValue, "type", translate("type"))
+local hwtype = m:get(arg[1], "type")
 
 mode = s:option(ListValue, "mode", translate("mode"))
 mode:value("", "standard")
@@ -35,9 +36,30 @@ mode:value("11b", "802.11b")
 mode:value("11g", "802.11g")
 mode:value("11a", "802.11a")
 mode:value("11bg", "802.11b+g")
+
+if hwtype == "atheros" then
+       mode:value("11gdt", "802.11adt")
+       mode:value("11adt", "802.11adt")
+       mode:value("fh", "fh")
+end
+
+
 mode.rmempty = true
 
-s:option(Value, "channel", translate("a_w_channel"))
+ch = s:option(Value, "channel", translate("a_w_channel"))
+for i=1, 14 do
+       ch:value(i, i .. " (2.4 GHz)")
+end
+for i=36, 64, 4 do
+       ch:value(i, i .. " (5 GHz)")
+end
+for i=100, 140, 4 do
+       ch:value(i, i .. " (5 GHz)")
+end
+ch:value(147, 147 .. " (5 GHz)")
+ch:value(151, 151 .. " (5 GHz)")
+ch:value(155, 155 .. " (5 GHz)")
+ch:value(167, 167 .. " (5 GHz)")
 
 s:option(Value, "txantenna", translate("a_w_txantenna")).optional = true
 
@@ -58,6 +80,8 @@ maxassoc.optional = true
 
 
 
+----------------------- Interface -----------------------
+
 s = m:section(TypedSection, "wifi-iface", translate("interfaces"))
 s.addremove = true
 s.anonymous = true
@@ -66,18 +90,39 @@ s.defaults.device = arg[1]
 
 s:option(Value, "ssid", translate("a_w_netid")).maxlength = 32
 
-network = s:option(ListValue, "network", translate("network"), translate("a_w_network1"))
+network = s:option(Value, "network", translate("network"), translate("a_w_network1"))
+network.rmempty = true
 network:value("")
+network.combobox_manual = translate("a_w_netmanual")
 luci.tools.webadmin.cbi_add_networks(network)
 
+function network.write(self, section, value)   
+       if not m.uci:get("network", value) then 
+               m:chain("network")
+               m.uci:set("network", value, "interface")
+               Value.write(self, section, value)
+       else
+               if m.uci:get("network", value) == "interface" then
+                       Value.write(self, section, value)
+               end
+       end
+end
+
 mode = s:option(ListValue, "mode", translate("mode"))
 mode:value("ap", translate("a_w_ap"))
 mode:value("adhoc", translate("a_w_adhoc"))
 mode:value("ahdemo", translate("a_w_ahdemo"))
 mode:value("sta", translate("a_w_client"))
-mode:value("wds", translate("a_w_wds"))
 mode:value("monitor", translate("a_w_monitor"))
 
+if hwtype ~= "atheros" then
+       mode:value("wds", translate("a_w_wds"))
+end
+
+if hwtype == "atheros" then
+       s:option(Flag, "wds", translate("a_w_wds"))
+end
+
 s:option(Value, "bssid", "BSSID").optional = true
 
 s:option(Value, "txpower", translate("a_w_txpwr"), "dbm").rmempty = true