记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。

LiSun

记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

静态地址规则

这种特定类型的蓝牙地址可作为公共地址的一种流行替代方法,因为使用它无需付费。

随机静态地址可以通过以下两种方式之一使用:

  • 可以在设备的使用寿命内分配和固定它
  • 可以在启动时更改

但是,无法在运行时更改它。

随机静态地址的格式如下:
在这里插入图片描述

随机静态地址格式

  • 1和1固定在最低有效位
  • 剩余的46位由开发人员/制造商随机选择

重要说明:所有蓝牙设备都必须使用以下两种类型之一:公共地址或随机静态地址。

在这里插入图片描述
静态设备地址的特征可总结为:

  • 最高两个 bit 为 “11”。
  • 剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1。
  • 在一个上电周期内保持不变。
  • 下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。
    静态设备地址的使用场景可总结为:

46bits 的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。
地址随机生成,可以解决公共设备地址申请所带来的费用和维护问题。

/* 确认是否为静态地址
静态设备地址的特征可总结为:
最高两个 bit 为 “11”。
剩余的 46bits 是一个随机数,不能全部为0,也不能全部为1。
在一个上电周期内保持不变。
下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。
静态设备地址的使用场景可总结为:
46bits 的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。
地址随机生成,可以解决公共设备地址申请所带来的费用和维护问题
*/

bool mac_addr_is_static(uint8_t *addr)
{
    if ((addr[5] & 0xC0) == 0xC0)
    {
        uint16_t sum = 0;
        for(uint8_t i = 0; i < 6; i++)
        {
            sum += addr[i];
        }
        // 00:00:00:00:00:C0   FF:FF:FF:FF:FF:FF
        if (sum != 0xC0 && sum != 0x5FA)
        {
            return true;
        }
    }
    return false;
}
posted on 2022-08-13 11:00  嵌入式单片机实验室  阅读(53)  评论(0)    收藏  举报
记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。