| syntax = "proto3"; |
| |
| package bluetooth.l2cap.classic; |
| |
| import "google/protobuf/empty.proto"; |
| import "facade/common.proto"; |
| |
| service L2capClassicModuleFacade { |
| rpc FetchConnectionComplete(google.protobuf.Empty) returns (stream ConnectionCompleteEvent) { |
| // Testing Android Bluetooth stack only. Optional for other stack. |
| } |
| rpc FetchConnectionClose(google.protobuf.Empty) returns (stream ConnectionCloseEvent) { |
| // Testing Android Bluetooth stack only. Optional for other stack. |
| } |
| rpc OpenChannel(OpenChannelRequest) returns (google.protobuf.Empty) {} |
| rpc CloseChannel(CloseChannelRequest) returns (google.protobuf.Empty) {} |
| rpc FetchL2capData(google.protobuf.Empty) returns (stream L2capPacket) {} |
| rpc SetDynamicChannel(SetEnableDynamicChannelRequest) returns (google.protobuf.Empty) {} |
| rpc SendDynamicChannelPacket(DynamicChannelPacket) returns (google.protobuf.Empty) {} |
| rpc SetTrafficPaused(SetTrafficPausedRequest) returns (google.protobuf.Empty) {} |
| rpc GetChannelQueueDepth(google.protobuf.Empty) returns (GetChannelQueueDepthResponse) { |
| // Get the buffer size of channel queue end for L2CAP user (how many packets we can buffer |
| // before L2CAP user dequeues. |
| } |
| rpc InitiateConnectionForSecurity(facade.BluetoothAddress) returns (google.protobuf.Empty) {} |
| rpc FetchSecurityConnectionEvents(google.protobuf.Empty) returns (stream LinkSecurityInterfaceCallbackEvent) {} |
| rpc SecurityLinkEnsureAuthenticated(facade.BluetoothAddress) returns (google.protobuf.Empty) {} |
| rpc SecurityLinkHold(facade.BluetoothAddress) returns (google.protobuf.Empty) {} |
| rpc SecurityLinkDisconnect(facade.BluetoothAddress) returns (google.protobuf.Empty) {} |
| rpc SecurityLinkRelease(facade.BluetoothAddress) returns (google.protobuf.Empty) {} |
| } |
| |
| enum LinkSecurityInterfaceCallbackEventType { |
| ON_CONNECTED = 0; |
| ON_DISCONNECTED = 1; |
| ON_AUTHENTICATION_COMPLETE = 2; |
| ON_ENCRYPTION_CHANGE = 3; |
| ON_READ_REMOTE_VERSION_INFO = 4; |
| ON_READ_REMOTE_EXTENDED_FEATURES = 5; |
| } |
| |
| message LinkSecurityInterfaceCallbackEvent { |
| facade.BluetoothAddress address = 1; |
| LinkSecurityInterfaceCallbackEventType event_type = 2; |
| } |
| |
| message RegisterChannelRequest { |
| uint32 channel = 1; |
| } |
| |
| message ConnectionCompleteEvent { |
| facade.BluetoothAddress remote = 1; |
| } |
| |
| message ConnectionCloseEvent { |
| facade.BluetoothAddress remote = 1; |
| uint32 reason = 2; |
| } |
| |
| enum RetransmissionFlowControlMode { |
| BASIC = 0; |
| ERTM = 1; |
| ERTM_OPTIONAL = 2; |
| } |
| |
| message OpenChannelRequest { |
| facade.BluetoothAddress remote = 1; |
| uint32 psm = 2; |
| RetransmissionFlowControlMode mode = 3; |
| } |
| |
| message CloseChannelRequest { |
| uint32 psm = 1; |
| } |
| |
| enum ChannelSignalEventType { |
| OPEN = 0; |
| CLOSE = 1; |
| CONFIGURE = 2; |
| } |
| |
| message ChannelSignalEvent { |
| uint32 cid = 1; |
| ChannelSignalEventType type = 2; |
| } |
| |
| enum SendL2capPacketResultType { |
| OK = 0; |
| BAD_CID = 1; |
| } |
| |
| message SendL2capPacketResult { |
| SendL2capPacketResultType result_type = 1; |
| } |
| |
| message L2capPacket { |
| oneof channel_type { |
| uint32 psm = 1; |
| uint32 fixed_cid = 2; |
| } |
| bytes payload = 3; |
| } |
| |
| message SetEnableDynamicChannelRequest { |
| uint32 psm = 1; |
| bool enable = 2; |
| RetransmissionFlowControlMode retransmission_mode = 3; |
| } |
| |
| message DynamicChannelPacket { |
| facade.BluetoothAddress remote = 1; |
| uint32 psm = 2; |
| bytes payload = 3; |
| } |
| |
| message SetTrafficPausedRequest { |
| bool paused = 1; |
| uint32 psm = 2; |
| } |
| |
| message GetChannelQueueDepthResponse { |
| uint32 size = 1; |
| } |
| |
| enum ClassicSecurityPolicy { |
| ENCRYPTED_TRANSPORT = 0; |
| AUTHENTICATED_ENCRYPTED_TRANSPORT = 1; |
| BEST = 2; |
| _SDP_ONLY_NO_SECURITY_WHATSOEVER_PLAINTEXT_TRANSPORT_OK = 3; |
| } |