Prechádzať zdrojové kódy

add:增加定位请求失败时候的日志打印

OneLifeHowDo 1 rok pred
rodič
commit
16e8f47269
1 zmenil súbory, kde vykonal 42 pridanie a 52 odobranie
  1. 42 52
      script/libs/airlbs.lua

+ 42 - 52
script/libs/airlbs.lua

@@ -1,8 +1,8 @@
 --[[
 @module airlbs
 @summary airlbs 定位服务(收费服务,需自行联系销售申请)
-@version 1.1
-@date    2024.11.18
+@version 1.0
+@date    2024.11.01
 @author  Dozingfiretruck
 @usage
 --注意:因使用了sys.wait()所有api需要在协程中使用
@@ -13,22 +13,11 @@ local airlbs = require "airlbs"
 sys.taskInit(function()
     sys.waitUntil("IP_READY")
 
-    -- 如需wifi定位,需要硬件以及固件支持wifi扫描功能
-    local wifi_info = nil
-    if wlan then
-        sys.wait(3000) -- 网络可用后等待一段时间才再调用wifi扫描功能,否则可能无法获取wifi信息
-        wlan.init()
-        wlan.scan()
-        sys.waitUntil("WLAN_SCAN_DONE", 15000)
-        wifi_info = wlan.scanResult()
-        log.info("scan", "wifi_info", #wifi_info)
-    end
-
     socket.sntp()
     sys.waitUntil("NTP_UPDATE", 1000)
 
     while 1 do
-        local result , data = airlbs.request({project_id = "xxx",project_key = 'xxx',wifi_info = wifi_info,timeout = 1000})
+        local result , data = airlbs.request({project_id = "xxx",project_key = 'xxx',timeout = 1000})
         if result then
             print("airlbs", json.encode(data))
         end
@@ -36,25 +25,21 @@ sys.taskInit(function()
     end
 
 end)
-]]
-
-sys = require("sys")
+]] sys = require("sys")
 sysplus = require("sysplus")
 libnet = require "libnet"
 
-
 local airlbs_host = "airlbs.openluat.com"
 local airlbs_port = 12413
 
 local lib_name = "airlbs"
-local lib_topic = lib_name.."topic"
+local lib_topic = lib_name .. "topic"
 
 local location_data = 0
 local disconnect = -1
 local airlbs_timeout = 15000
 
-local airlbs ={}
-
+local airlbs = {}
 
 local function airlbs_task(task_name, buff, timeout)
     local netc = socket.create(nil, lib_name)
@@ -67,7 +52,7 @@ local function airlbs_task(task_name, buff, timeout)
         libnet.tx(lib_name, 0, netc, buff)
     else
         log.info(lib_name, "服务器没连上了!!!")
-        sys.publish(lib_topic,disconnect)
+        sys.publish(lib_topic, disconnect)
         libnet.close(lib_name, 5000, netc)
         return
     end
@@ -75,17 +60,17 @@ local function airlbs_task(task_name, buff, timeout)
     while result do
         local succ, param = socket.rx(netc, buff)
         if not succ then
-            log.error(lib_name,"服务器断开了", succ, param)
-            sys.publish(lib_topic,disconnect)
+            log.error(lib_name, "服务器断开了", succ, param)
+            sys.publish(lib_topic, disconnect)
             break
         end
         if buff:used() > 0 then
             local location = nil
-            local data = buff:query(0,1) -- 获取数据
+            local data = buff:query(0, 1) -- 获取数据
             if data:toHex() == '00' then
                 location = json.decode(buff:query(1))
             else
-                log.error(lib_name,"not json data")
+                log.error(lib_name, "not json data")
             end
             sys.publish(lib_topic, location_data, location)
             buff:del()
@@ -94,8 +79,8 @@ local function airlbs_task(task_name, buff, timeout)
         result, param, param2 = libnet.wait(lib_name, timeout, netc)
         log.info(lib_name, "wait", result, param, param2)
         if param == false then
-            log.error(lib_name,"服务器断开了", succ, param)
-            sys.publish(lib_topic,disconnect)
+            log.error(lib_name, "服务器断开了", succ, param)
+            sys.publish(lib_topic, disconnect)
             break
         end
     end
@@ -104,13 +89,13 @@ end
 
 -- 处理未识别的网络消息
 local function netCB(msg)
-	log.info("未处理消息", msg[1], msg[2], msg[3], msg[4])
+    log.info("未处理消息", msg[1], msg[2], msg[3], msg[4])
 end
 
 --[[
 获取定位数据
 @api airlbs.request(param)
-@param table 参数(联系销售获取id与key) project_id:项目ID project_key:项目密钥 wifi_info:wifi扫描结果(wlan.scanResult()的返回值,wifi定位使用)timeout:超时时间,单位毫秒 默认15000
+@param table 参数(联系销售获取id与key) project_id:项目ID project_key:项目密钥 timeout:超时时间,单位毫秒 默认15000
 @return bool 成功返回true,失败会返回false
 @return table 定位成功生效,成功返回定位数据
 @usage
@@ -120,16 +105,16 @@ if result then
 end
 ]]
 function airlbs.request(param)
-    if not mobile then 
-        log.error(lib_name,"no mobile")
+    if not mobile then
+        log.error(lib_name, "no mobile")
         return false
     end
     if mobile.status() == 0 then
-        log.error(lib_name,"网络未注册")
+        log.error(lib_name, "网络未注册")
         return false
     end
-    if param.project_id ==nil or param.project_key == nil then
-        log.error(lib_name,"param error")
+    if param.project_id == nil or param.project_key == nil then
+        log.error(lib_name, "param error")
         return false
     end
 
@@ -138,7 +123,7 @@ function airlbs.request(param)
     local lbs_data_type = 0x00
     local project_id = param.project_id
     if project_id:len() ~= 6 then
-        log.error("airlbs","project_id len not 6")
+        log.error("airlbs", "project_id len not 6")
     end
     local imei = mobile.imei()
     local muid = mobile.muid()
@@ -152,7 +137,9 @@ function airlbs.request(param)
     sys.waitUntil("CELL_INFO_UPDATE", param.timeout or airlbs_timeout)
     -- log.info("cell", json.encode(mobile.getCellInfo()))
 
-    local lbs_data = {cells={}}
+    local lbs_data = {
+        cells = {}
+    }
     for k, v in pairs(mobile.getCellInfo()) do
         lbs_data.cells[k] = {}
         lbs_data.cells[k][1] = v.mcc
@@ -166,55 +153,58 @@ function airlbs.request(param)
         lbs_data.cells[k][9] = v.rsrq
         lbs_data.cells[k][10] = v.earfcn
     end
-
     if param.wifi_info and #param.wifi_info > 0 then
-        lbs_data.macs={}
+        lbs_data.macs = {}
         for k, v in pairs(param.wifi_info) do
             lbs_data.macs[k] = {}
             lbs_data.macs[k][1] = v.bssid:toHex():gsub("(%x%x)", "%1:"):sub(1, -2)
             lbs_data.macs[k][2] = v.rssi
         end
     end
-
     local lbs_jdata = json.encode(lbs_data)
-
+    log.info("扫描出的数据",lbs_jdata)
     udp_buff:write(string.char(auth_type) .. project_id .. imei .. muid .. timestamp .. nonce .. hmac_data:fromHex() .. string.char(lbs_data_type) .. lbs_jdata)
 
     sysplus.taskInitEx(airlbs_task, lib_name, netCB, lib_name, udp_buff, param.timeout or airlbs_timeout)
 
     while 1 do
         local result, tp, data = sys.waitUntil(lib_topic, param.timeout or airlbs_timeout)
-        log.info("event", result, tp, data)
+        log.info("定位请求的结果", result, "超时时间", tp, data)
         if not result then
-            return false,"timeout"
+            return false, "timeout"
         elseif tp == location_data then
             if not data then
-                log.error(lib_name,"no data, please check project_id and key")
+                log.error(lib_name, "无数据, 请检查project_id和project_key")
                 return false
-            -- data.result 0-找不到 1-成功 2-qps超限 3-欠费? 4-其他错误 
+                -- data.result 0-找不到 1-成功 2-qps超限 3-欠费 4-其他错误 
             elseif data.result == 0 then
-                log.error(lib_name,"no location")
+                log.error(lib_name, "no location(基站定位服务器查询当前地址失败)")
                 return false
             elseif data.result == 1 then
-                return true,{lng = data.lng,lat = data.lat}
+                log.info("多基站请求成功,服务器返回的原始数据", data)
+                return true, {
+                    lng = data.lng,
+                    lat = data.lat
+                }
             elseif data.result == 2 then
-                log.error(lib_name,"qps limit")
+                log.error(lib_name, "qps limit(当前请求已到达限制,请检查当前请求是否过于频繁))")
                 return false
             elseif data.result == 3 then
-                log.error(lib_name,"no money")
+                log.error(lib_name, "当前设备已欠费,请联系销售充值")
                 return false
             elseif data.result == 4 then
-                log.error(lib_name,"other error")
+                log.error(lib_name, "other error")
                 return false
+            else
+                log.error("其他错误,错误码", data.result, lib_name)
             end
         else
-            log.error(lib_name,"net error")
+            log.error(lib_name, "net error")
             return false
         end
     end
 
 end
 
-
 return airlbs