use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum CentralState {
#[default]
Absent,
PoweredOff,
PoweredOn,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum GATTOperationType {
#[default]
Connection,
Discovery,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum CharacteristicWriteType {
#[default]
WriteDefaultDeprecated,
WriteWithResponse,
WriteWithoutResponse,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum CharacteristicOperationType {
#[default]
Read,
Write,
SubscribeToNotifications,
UnsubscribeFromNotifications,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum DescriptorOperationType {
#[default]
Read,
Write,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ManufacturerData {
pub key: i64,
pub data: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ScanRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uuids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appearance: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub txPower: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub manufacturerData: Option<Vec<ManufacturerData>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ScanEntry {
pub deviceAddress: String,
pub rssi: i64,
pub scanRecord: ScanRecord,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CharacteristicProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub broadcast: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub read: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub writeWithoutResponse: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub write: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notify: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub indicate: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authenticatedSignedWrites: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extendedProperties: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EnableParams {
pub state: CentralState,
pub leSupported: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetSimulatedCentralStateParams {
pub state: CentralState,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulatePreconnectedPeripheralParams {
pub address: String,
pub name: String,
pub manufacturerData: Vec<ManufacturerData>,
pub knownServiceUuids: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulateAdvertisementParams {
pub entry: ScanEntry,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulateGATTOperationResponseParams {
pub address: String,
#[serde(rename = "type")]
pub type_: GATTOperationType,
pub code: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulateCharacteristicOperationResponseParams {
pub characteristicId: String,
#[serde(rename = "type")]
pub type_: CharacteristicOperationType,
pub code: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulateDescriptorOperationResponseParams {
pub descriptorId: String,
#[serde(rename = "type")]
pub type_: DescriptorOperationType,
pub code: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddServiceParams {
pub address: String,
pub serviceUuid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddServiceReturns {
pub serviceId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RemoveServiceParams {
pub serviceId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddCharacteristicParams {
pub serviceId: String,
pub characteristicUuid: String,
pub properties: CharacteristicProperties,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddCharacteristicReturns {
pub characteristicId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RemoveCharacteristicParams {
pub characteristicId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddDescriptorParams {
pub characteristicId: String,
pub descriptorUuid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddDescriptorReturns {
pub descriptorId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RemoveDescriptorParams {
pub descriptorId: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SimulateGATTDisconnectionParams {
pub address: String,
}