main.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "ble"
  3. VERSION = "1.0.0"
  4. -- 引入必要的库文件(lua编写), 内部库不需要require
  5. sys = require("sys")
  6. log.info("main", "project name is ", PROJECT, "version is ", VERSION)
  7. -- 通过boot按键方便刷Air8000S
  8. function PWR8000S(val)
  9. gpio.set(23, val)
  10. end
  11. gpio.debounce(0, 1000)
  12. gpio.setup(0, function()
  13. sys.taskInit(function()
  14. log.info("复位Air8000S")
  15. PWR8000S(0)
  16. sys.wait(20)
  17. PWR8000S(1)
  18. end)
  19. end, gpio.PULLDOWN)
  20. local function ble_callback(ble_device, ble_event, ble_param)
  21. if ble_event == ble.EVENT_SCAN_INIT then
  22. log.info("ble", "scan init")
  23. elseif ble_event == ble.EVENT_SCAN_REPORT then
  24. log.info("ble", "scan report", ble_param.rssi, ble_param.adv_addr:toHex(), ble_param.data:toHex())
  25. -- 解析广播数据, 日志很多, 按需使用
  26. -- local adv_data = ble_device:adv_decode(ble_param.data)
  27. -- if adv_data then
  28. -- for k, v in pairs(adv_data) do
  29. -- log.info("ble", "adv data", v.len, v.tp, v.data:toHex())
  30. -- end
  31. -- end
  32. elseif ble_event == ble.EVENT_SCAN_STOP then
  33. log.info("ble", "scan stop")
  34. end
  35. end
  36. local bt_scan = false -- 是否扫描蓝牙
  37. sys.taskInit(function()
  38. sys.wait(500)
  39. log.info("开始初始化蓝牙核心")
  40. bluetooth_device = bluetooth.init()
  41. sys.wait(100)
  42. log.info("初始化BLE功能")
  43. ble_device = bluetooth_device:ble(ble_callback)
  44. if ble_device == nil then
  45. log.error("当前固件不支持完整的BLE")
  46. return
  47. end
  48. sys.wait(100)
  49. -- 扫描模式
  50. sys.wait(1000)
  51. ble_device:scan_create() -- 使用默认参数, addr_mode=0, scan_interval=100, scan_window=100
  52. -- ble_device:scan_create(0, 10, 10) -- 使用自定义参数
  53. sys.wait(100)
  54. log.info("开始扫描")
  55. ble_device:scan_start()
  56. sys.wait(15000)
  57. log.info("停止扫描")
  58. ble_device:scan_stop()
  59. end)
  60. -- 用户代码已结束---------------------------------------------
  61. -- 结尾总是这一句
  62. sys.run()
  63. -- sys.run()之后后面不要加任何语句!!!!!