Bluetooth 蓝牙管理API:读取控制器信息命令,蓝牙版本,可读

Bluetooth 蓝牙管理API:读取控制器信息命令,蓝牙版本,可读,bluetooth,bluetooth-lowenergy,bluez,Bluetooth,Bluetooth Lowenergy,Bluez,BlueZ bluetooth Management API的读取控制器信息命令返回的bluetooth_版本映射到哪个人类可读版本号 例如,我的控制器返回0x08。这是蓝牙4.1、5.2、1.1还是 我找不到此文件的任何信息。在谷歌上搜索“蓝牙版本二进制到字符串”也没有发现任何有用的东西。而且,没有为“0x08”或“蓝牙版本”显示任何内容。在那个里搜索版本是毫无意义的,因为每个页眉都包含那个单词 新见解 btmon似乎知道 @管理事件:命令组件。。(0x0001)plen 283{0x0003

BlueZ bluetooth Management API的读取控制器信息命令返回的bluetooth_版本映射到哪个人类可读版本号

例如,我的控制器返回0x08。这是蓝牙4.1、5.2、1.1还是

我找不到此文件的任何信息。在谷歌上搜索“蓝牙版本二进制到字符串”也没有发现任何有用的东西。而且,没有为“0x08”或“蓝牙版本”显示任何内容。在那个里搜索版本是毫无意义的,因为每个页眉都包含那个单词

新见解

btmon似乎知道

@管理事件:命令组件。。(0x0001)plen 283{0x0003}[hci0]

11:04:18.712443 读取控制器信息(0x0004)plen 280


我不知道蓝牙版本映射是否有文档记录,在哪里有文档记录

但是,这种映射可以在bluez
lib/hci.c
源文件中找到:

/* Version mapping */
static hci_map ver_map[] = {
    { "1.0b",   0x00 },
    { "1.1",    0x01 },
    { "1.2",    0x02 },
    { "2.0",    0x03 },
    { "2.1",    0x04 },
    { "3.0",    0x05 },
    { "4.0",    0x06 },
    { "4.1",    0x07 },
    { "4.2",    0x08 },
    { "5.0",    0x09 },
    { "5.1",    0x0a },
    { NULL }
};

我还在
监视器/packet.c
中找到了一个映射:

void packet_print_version(const char *label, uint8_t version,
                const char *sublabel, uint16_t subversion)
{
    const char *str;

    switch (version) {
    case 0x00:
        str = "Bluetooth 1.0b";
        break;
    case 0x01:
        str = "Bluetooth 1.1";
        break;
    case 0x02:
        str = "Bluetooth 1.2";
        break;
    case 0x03:
        str = "Bluetooth 2.0";
        break;
    case 0x04:
        str = "Bluetooth 2.1";
        break;
    case 0x05:
        str = "Bluetooth 3.0";
        break;
    case 0x06:
        str = "Bluetooth 4.0";
        break;
    case 0x07:
        str = "Bluetooth 4.1";
        break;
    case 0x08:
        str = "Bluetooth 4.2";
        break;
    case 0x09:
        str = "Bluetooth 5.0";
        break;
    case 0x0a:
        str = "Bluetooth 5.1";
        break;
    default:
        str = "Reserved";
        break;
    }

    if (sublabel)
        print_field("%s: %s (0x%2.2x) - %s %d (0x%4.4x)",
                    label, str, version,
                    sublabel, subversion, subversion);
    else
        print_field("%s: %s (0x%2.2x)", label, str, version);
}
void packet_print_version(const char *label, uint8_t version,
                const char *sublabel, uint16_t subversion)
{
    const char *str;

    switch (version) {
    case 0x00:
        str = "Bluetooth 1.0b";
        break;
    case 0x01:
        str = "Bluetooth 1.1";
        break;
    case 0x02:
        str = "Bluetooth 1.2";
        break;
    case 0x03:
        str = "Bluetooth 2.0";
        break;
    case 0x04:
        str = "Bluetooth 2.1";
        break;
    case 0x05:
        str = "Bluetooth 3.0";
        break;
    case 0x06:
        str = "Bluetooth 4.0";
        break;
    case 0x07:
        str = "Bluetooth 4.1";
        break;
    case 0x08:
        str = "Bluetooth 4.2";
        break;
    case 0x09:
        str = "Bluetooth 5.0";
        break;
    case 0x0a:
        str = "Bluetooth 5.1";
        break;
    default:
        str = "Reserved";
        break;
    }

    if (sublabel)
        print_field("%s: %s (0x%2.2x) - %s %d (0x%4.4x)",
                    label, str, version,
                    sublabel, subversion, subversion);
    else
        print_field("%s: %s (0x%2.2x)", label, str, version);
}