/* 用户自定义服务的类型 */ typedef enum { BLE_MODE_TYPE_SLAVE = 0, /* 从机模式 */ BLE_MODE_TYPE_MULTI = 1 /* 主从一体模式 */ } E_BLE_MODE_TYPE; /* 连接参数档位枚举 */ typedef enum { BLE_CONN_SPEED_SLOW = 0, /* 慢速模式 */ BLE_CONN_SPEED_MEDIUM, /* 中速模式 */ BLE_CONN_SPEED_FAST /* 快速模式 */ } E_BLE_CONN_SPEED_MODE; /* 用户自定义服务的类型 */ typedef enum { BLE_UUID_TYPE_16BIT = 1, /* 16-bit UUID */ BLE_UUID_TYPE_128BIT = 2 /* 128-bit UUID */ } E_BLE_UUID_TYPE; /*蓝牙管理配置数据结构定义*/ typedef struct { int SeqNumber; /* 序号:[1,65535]:从1开始:::true:false:*/ E_BLE_MODE_TYPE master_slave_select; /*蓝牙工作模式选择::::BLE_MODE_TYPE_SLAVE:false:true*/ bool_t device_info_uuid_enable; /*设备信息服务使能::::false:true:true*/ bool_t ut_spp_uuid_enable; /*对端设备是否带有公司spp服务::::false:true:true*/ s8 power; /*设备发射功率:[-20,7]::dbm:BLE_TX_POWER_MAX:false:true*/发射功率参考上述枚举模板定义一个枚举为高中低
时间: 2025-07-04 10:03:59 AIGC 浏览: 20
为了定义蓝牙设备的发射功率为高中低三个档位,我们可以创建一个枚举类型 `E_BLE_TX_POWER_LEVEL`。该枚举将代表不同的功率级别,并且可以映射到实际的发射功率值(例如:低功率为 -20 dBm,中功率为 0 dBm,高功率为 +7 dBm)。
### 定义枚举
```c
/* 发射功率级别枚举 */
typedef enum
{
BLE_TX_POWER_LOW = -20, /* 低功率: -20 dBm */
BLE_TX_POWER_MEDIUM = 0, /* 中功率: 0 dBm */
BLE_TX_POWER_HIGH = 7 /* 高功率: +7 dBm */
} E_BLE_TX_POWER_LEVEL;
```
### 在结构体中使用该枚举
接下来我们更新你的蓝牙管理配置结构体,在其中使用这个新定义的枚举:
```c
/*蓝牙管理配置数据结构定义*/
typedef struct
{
int SeqNumber; /* 序号:[1,65535]:从1开始:::true:false:*/
E_BLE_MODE_TYPE master_slave_select; /*蓝牙工作模式选择::::BLE_MODE_TYPE_SLAVE:false:true*/
bool_t device_info_uuid_enable; /*设备信息服务使能::::false:true:true*/
bool_t ut_spp_uuid_enable; /*对端设备是否带有公司spp服务::::false:true:true*/
E_BLE_TX_POWER_LEVEL tx_power_level; /* 设备发射功率级别::::BLE_TX_POWER_MEDIUM:false:true */
} S_BLE_CONFIG;
```
### 使用示例
下面是一个使用示例,展示如何设置和使用这个结构体:
```c
#include <stdio.h>
#include <stdbool.h>
typedef enum
{
BLE_MODE_TYPE_SLAVE = 0, /* 从机模式 */
BLE_MODE_TYPE_MULTI = 1 /* 主从一体模式 */
} E_BLE_MODE_TYPE;
typedef enum
{
BLE_TX_POWER_LOW = -20, /* 低功率: -20 dBm */
BLE_TX_POWER_MEDIUM = 0, /* 中功率: 0 dBm */
BLE_TX_POWER_HIGH = 7 /* 高功率: +7 dBm */
} E_BLE_TX_POWER_LEVEL;
typedef int bool_t;
#define TRUE 1
#define FALSE 0
/*蓝牙管理配置数据结构定义*/
typedef struct
{
int SeqNumber; /* 序号:[1,65535]:从1开始:::true:false:*/
E_BLE_MODE_TYPE master_slave_select; /*蓝牙工作模式选择::::BLE_MODE_TYPE_SLAVE:false:true*/
bool_t device_info_uuid_enable; /*设备信息服务使能::::false:true:true*/
bool_t ut_spp_uuid_enable; /*对端设备是否带有公司spp服务::::false:true:true*/
E_BLE_TX_POWER_LEVEL tx_power_level; /* 设备发射功率级别::::BLE_TX_POWER_MEDIUM:false:true */
} S_BLE_CONFIG;
int main()
{
S_BLE_CONFIG ble_config = {
.SeqNumber = 123,
.master_slave_select = BLE_MODE_TYPE_SLAVE,
.device_info_uuid_enable = TRUE,
.ut_spp_uuid_enable = FALSE,
.tx_power_level = BLE_TX_POWER_HIGH
};
printf("Sequence Number: %d\n", ble_config.SeqNumber);
printf("Mode: %s\n", (ble_config.master_slave_select == BLE_MODE_TYPE_SLAVE) ? "Slave" : "Multi");
printf("Device Info UUID Enabled: %s\n", ble_config.device_info_uuid_enable ? "Yes" : "No");
printf("SPP UUID Enabled: %s\n", ble_config.ut_spp_uuid_enable ? "Yes" : "No");
printf("Transmit Power Level: %d dBm\n", ble_config.tx_power_level);
return 0;
}
```
### 解释
- **E_BLE_TX_POWER_LEVEL** 是一个枚举类型,用于表示蓝牙设备的发射功率级别。
- 枚举中的每个值对应一个具体的发射功率(dBm),分别是 `-20`、`0` 和 `+7`。
- 在结构体 `S_BLE_CONFIG` 中添加了 `tx_power_level` 字段,使得配置信息更加清晰直观。
- 示例程序演示了如何初始化结构体并访问其成员变量,包括打印当前配置。
---
阅读全文
相关推荐




















