ble_ibeacon.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --[[
  2. @module ble_ibeacon
  3. @summary Air8000演示ibeacon功能模块
  4. @version 1.0
  5. @date 2025.07.01
  6. @author wangshihao
  7. @usage
  8. 本文件为Air8000核心板演示ibeacon功能的代码示例,核心业务逻辑为:
  9. 1. 初始化蓝牙底层框架
  10. 2. 创建BLE对象实例
  11. 3. 配置ibeacon广播数据包
  12. - 包含厂商特定数据格式,ibeacon类型标识符
  13. - 设置UUID、Major、Minor等关键参数
  14. 4. 启动BLE广播功能
  15. ]]
  16. function ble_callback()
  17. -- 无事可做
  18. end
  19. function ble_ibeacon()
  20. local ret = 0
  21. sys.wait(500)
  22. log.info("开始初始化蓝牙核心")
  23. bluetooth_device = bluetooth.init()
  24. sys.wait(100)
  25. log.info("初始化BLE功能")
  26. ble_device = bluetooth_device:ble(ble_callback)
  27. sys.wait(100)
  28. sys.wait(100)
  29. log.info("开始设置广播内容")
  30. local adv_data = string.char(0x4C, 0x00, -- Manufacturer ID(2字节)
  31. 0x02, 0x15, -- ibeacon数据类型(2字节)
  32. 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, -- UUID(16字节)
  33. 0x00, 0x01, -- Major(2字节)
  34. 0x00, 0x02, -- Minor(2字节)
  35. 0xC0) -- Signal Power(1字节)
  36. ble_device:adv_create({
  37. addr_mode = ble.PUBLIC, -- 广播地址模式, 可选值: ble.PUBLIC, ble.RANDOM, ble.RPA, ble.NRPA
  38. channel_map = ble.CHNLS_ALL, -- 广播的通道, 可选值: ble.CHNLS_37, ble.CHNLS_38, ble.CHNLS_39, ble.CHNLS_ALL
  39. intv_min = 120, -- 广播间隔最小值, 单位为0.625ms, 最小值为20, 最大值为10240
  40. intv_max = 120, -- 广播间隔最大值, 单位为0.625ms, 最小值为20, 最大值为10240
  41. adv_data = { -- 支持表格形式, 也支持字符串形式(255字节以内)
  42. {ble.FLAGS, string.char(0x06)},
  43. {ble.MANUFACTURER_SPECIFIC_DATA, adv_data}
  44. }
  45. })
  46. sys.wait(100)
  47. log.info("开始广播")
  48. ble_device:adv_start()
  49. end
  50. sys.taskInit(ble_ibeacon)