Revision control
Copy as Markdown
Other Tools
// Licensed under the Apache License, Version 2.0
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use shared::minwindef::{ULONG, USHORT};
use shared::winerror::HRESULT;
use um::bthledef::{
BLUETOOTH_GATT_EVENT_HANDLE, BTH_LE_GATT_EVENT_TYPE, BTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
PBTH_LE_GATT_CHARACTERISTIC, PBTH_LE_GATT_CHARACTERISTIC_VALUE, PBTH_LE_GATT_DESCRIPTOR,
PBTH_LE_GATT_DESCRIPTOR_VALUE, PBTH_LE_GATT_RELIABLE_WRITE_CONTEXT, PBTH_LE_GATT_SERVICE,
PFNBLUETOOTH_GATT_EVENT_CALLBACK,
};
use um::winnt::{HANDLE, PVOID};
extern "system" {
pub fn BluetoothGATTGetServices(
hDevice: HANDLE,
ServicesBufferCount: USHORT,
ServicesBuffer: PBTH_LE_GATT_SERVICE,
ServicesBufferActual: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTGetIncludedServices(
hDevice: HANDLE,
ParentService: PBTH_LE_GATT_SERVICE,
IncludedServicesBufferCount: USHORT,
IncludedServicesBuffer: PBTH_LE_GATT_SERVICE,
IncludedServicesBufferActual: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTGetCharacteristics(
hDevice: HANDLE,
Service: PBTH_LE_GATT_SERVICE,
CharacteristicsBufferCount: USHORT,
CharacteristicsBuffer: PBTH_LE_GATT_CHARACTERISTIC,
CharacteristicsBufferActual: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTGetDescriptors(
hDevice: HANDLE,
Characteristic: PBTH_LE_GATT_CHARACTERISTIC,
DescriptorsBufferCount: USHORT,
DescriptorsBuffer: PBTH_LE_GATT_DESCRIPTOR,
DescriptorsBufferActual: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTGetCharacteristicValue(
hDevice: HANDLE,
Characteristic: PBTH_LE_GATT_CHARACTERISTIC,
CharacteristicValueDataSize: ULONG,
CharacteristicValue: PBTH_LE_GATT_CHARACTERISTIC_VALUE,
CharacteristicValueSizeRequired: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTGetDescriptorValue(
hDevice: HANDLE,
Descriptor: PBTH_LE_GATT_DESCRIPTOR,
DescriptorValueDataSize: ULONG,
DescriptorValue: PBTH_LE_GATT_DESCRIPTOR_VALUE,
DescriptorValueSizeRequired: *mut USHORT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTBeginReliableWrite(
hDevice: HANDLE,
ReliableWriteContext: PBTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTSetCharacteristicValue(
hDevice: HANDLE,
Characteristic: PBTH_LE_GATT_CHARACTERISTIC,
CharacteristicValue: PBTH_LE_GATT_CHARACTERISTIC_VALUE,
ReliableWriteContext: BTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTEndReliableWrite(
hDevice: HANDLE,
ReliableWriteContext: BTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTAbortReliableWrite(
hDevice: HANDLE,
ReliableWriteContext: BTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTSetDescriptorValue(
hDevice: HANDLE,
Descriptor: PBTH_LE_GATT_DESCRIPTOR,
DescriptorValue: PBTH_LE_GATT_DESCRIPTOR_VALUE,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTRegisterEvent(
hService: HANDLE,
EventType: BTH_LE_GATT_EVENT_TYPE,
EventParameterIn: PVOID,
Callback: PFNBLUETOOTH_GATT_EVENT_CALLBACK,
CallbackContext: PVOID,
pEventHandle: *mut BLUETOOTH_GATT_EVENT_HANDLE,
Flags: ULONG,
) -> HRESULT;
pub fn BluetoothGATTUnregisterEvent(
EventHandle: BLUETOOTH_GATT_EVENT_HANDLE,
Flags: ULONG,
) -> HRESULT;
}