syntax = "proto3"; package dev.yanshouwang.bluetooth_low_energy; message Message { MessageCategory category = 1; oneof value { BluetoothState state = 2; StartDiscoveryArguments startDiscoveryArguments = 3; Discovery discovery = 4; ConnectArguments connectArguments = 5; GattDisconnectArguments disconnectArguments = 6; GattConnectionLost connectionLost = 7; GattCharacteristicReadArguments characteristicReadArguments = 8; GattCharacteristicWriteArguments characteristicWriteArguments = 9; GattCharacteristicNotifyArguments characteristicNotifyArguments = 10; GattCharacteristicValue characteristicValue = 11; GattDescriptorReadArguments descriptorReadArguments = 12; GattDescriptorWriteArguments descriptorWriteArguments = 13; } } message StartDiscoveryArguments { repeated string services = 1; } message Discovery { string uuid = 1; sint32 rssi = 2; bytes advertisements = 3; bool connectable = 4; } message ConnectArguments { string uuid = 1; } message GATT { string key = 1; int32 maximumWriteLength = 2; repeated GattService services = 3; } message GattService { string key = 1; string uuid = 2; repeated GattCharacteristic characteristics = 3; } message GattCharacteristic { string key = 1; string uuid = 2; bool canRead = 3; bool canWrite = 4; bool canWriteWithoutResponse = 5; bool canNotify = 6; repeated GattDescriptor descriptors = 7; } message GattDescriptor { string key = 1; string uuid = 2; } message GattDisconnectArguments{ string key = 1; } message GattConnectionLost { string key = 1; string error = 2; } message GattCharacteristicReadArguments { string gatt_key = 1; string service_key = 2; string key = 3; } message GattCharacteristicWriteArguments { string gatt_key = 1; string service_key = 2; string key = 3; bytes value = 4; bool withoutResponse = 5; } message GattCharacteristicNotifyArguments{ string gatt_key = 1; string service_key = 2; string key = 3; bool state = 4; } message GattCharacteristicValue { string gatt_key = 1; string service_key = 2; string key = 3; bytes value = 4; } message GattDescriptorReadArguments { string gatt_key = 1; string service_key = 2; string characteristic_key = 3; string key = 4; } message GattDescriptorWriteArguments { string gatt_key = 1; string service_key = 2; string characteristic_key = 3; string key = 4; bytes value = 5; } enum MessageCategory { BLUETOOTH_STATE = 0; CENTRAL_START_DISCOVERY = 1; CENTRAL_STOP_DISCOVERY = 2; CENTRAL_DISCOVERED = 3; CENTRAL_CONNECT = 4; GATT_DISCONNECT = 5; GATT_CONNECTION_LOST = 6; GATT_CHARACTERISTIC_READ = 7; GATT_CHARACTERISTIC_WRITE = 8; GATT_CHARACTERISTIC_NOTIFY = 9; GATT_DESCRIPTOR_READ = 10; GATT_DESCRIPTOR_WRITE = 11; } enum BluetoothState { UNSUPPORTED = 0; POWERED_OFF = 1; POWERED_ON = 2; }