ENABLE_INDICATION_VALUE ENABLE_NOTIFICATION_VALUE
时间: 2023-08-17 08:07:14 浏览: 65
在使用 GATT 协议进行 BLE 设备之间的通讯时,可以使用 ENABLE_INDICATION_VALUE 和 ENABLE_NOTIFICATION_VALUE 来开启设备的通知和指示功能。
ENABLE_NOTIFICATION_VALUE 表示开启通知功能。当一个特征值被设置为通知时,当这个特征值的值发生改变时,BLE 设备会发送一个通知给连接的另一个设备,告知其特征值的变化。这时,另一个设备可以立即接收到通知并做出相应处理。
ENABLE_INDICATION_VALUE 表示开启指示功能。当一个特征值被设置为指示时,当这个特征值的值发生改变时,BLE 设备会发送一个指示给连接的另一个设备,告知其特征值的变化。与通知不同的是,当一个设备收到指示时,必须向发送指示的设备发送一个确认(ACK)才能继续进行通讯,这样可以保证数据的可靠性。
在 Android 中,可以通过 BluetoothGattCharacteristic 类的 setCharacteristicNotification 方法来开启通知和指示功能,并通过 BluetoothGattDescriptor 类的 setValue 方法来设置特征值的值。
相关问题
MSG_INDICATION含义
MSG_INDICATION是一个IT类问题中常见的术语,它表示一种用于指示消息状态或类型的标识符或指示符。在通信协议或通信系统中,MSG_INDICATION通常用于描述传输过程中的信息状态或类型,以便接收方能够正确地处理消息。例如,MSG_INDICATION可以用于指示消息的优先级、安全等级、消息类型、错误状态、确认状态等。
openssl SSL_get_servername
`SSL_get_servername` 是 OpenSSL 库中的一个函数,用于获取 SSL/TLS 握手过程中客户端发送的 Server Name Indication (SNI),即客户端请求访问的服务器主机名。
函数原型如下:
```c
const char *SSL_get_servername(const SSL *ssl, const int type);
```
其中,参数 `ssl` 是一个 SSL/TLS 连接对象,参数 `type` 指定了 SNI 的类型,一般为 `TLSEXT_NAMETYPE_host`。函数返回一个指向服务器主机名的常量字符串指针,如果没有设置 SNI,返回 `NULL`。
使用示例:
```c
SSL *ssl = ...;
const char *hostname = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host);
if (hostname == NULL) {
// SNI 未设置
} else {
// 处理 hostname
}
```
需要注意的是,SNI 只在 SSL/TLS 握手期间发送一次,因此只能在握手期间获取。如果需要在握手后获取服务器主机名,需要另行实现。