local sys = require "luci.sys"

m = Map("imei_cell_locker", "IMEI 修改", "在此页面可以查看和修改设备的 IMEI，并选择模块类型")

-- 执行 AT 指令，获取当前设备的 IMEI
local current_imei = sys.exec(sendat 2 'AT+CGSN' | sed -n '2p' | sed 's/\r//g')

-- 设置表单，显示当前 IMEI
s = m:section(TypedSection, "imei", "IMEI 信息")
s.addremove = false
s.anonymous = true

-- 显示当前设备 IMEI
current_imei_field = s:option(DummyValue, "current_imei", "当前 IMEI")
current_imei_field.default = current_imei  -- 将获取到的 IMEI 显示在表单中

-- 添加模块选择框（移远或广和通）
module_type = s:option(ListValue, "module_type", "模块选择")
module_type:value("quectel", "移远")
module_type:value("fibocom", "广和通")
module_type.default = "quectel"  -- 设置默认值为移远

-- 输入新的 IMEI
imei = s:option(Value, "imei", "请输入新的 IMEI")
imei.datatype = "string"

-- 添加应用按钮
apply = s:option(Button, "_apply", "应用修改")
apply.inputtitle = "应用"
apply.inputstyle = "apply"

-- 点击应用按钮时执行操作
function apply.write(self, section)
    local new_imei = imei:formvalue(section)
    local selected_module = module_type:formvalue(section)
    
    if new_imei and new_imei ~= "" then
        if selected_module == "quectel" then
            -- 使用移远模块的 AT 指令修改 IMEI
            sys.call("sendat 2 'AT+EGMR=1,7,\"%s\"'" % new_imei)
        elseif selected_module == "fibocom" then
            -- 使用广和通模块的 AT 指令修改 IMEI
            sys.call("sendat 2 'AT+CGSETIMEI=\"%s\"'" % new_imei)
        end
    end
end

return m
