aboutsummaryrefslogtreecommitdiff
path: root/proto/neighbor.proto
blob: 6fb7b05f1538ff0ee8c2c8a58e7aeca5789bdaa3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
syntax = "proto3";

package bluetooth.neighbor;

import "proto/common.proto";

service NeighborFacade {
  rpc SetConnectability(EnableMsg) returns (facade.Empty) {}
  rpc SetDiscoverability(DiscoverabilitiyMsg) returns (facade.Empty) {}
  rpc SetInquiryMode(InquiryMsg) returns (stream InquiryResultMsg) {
    // Sets inquiry mode and fetches inquiry result HCI packet
  }
  rpc ReadRemoteName(RemoteNameRequestMsg) returns (facade.Empty) {}
  rpc GetRemoteNameEvents(facade.Empty) returns (stream RemoteNameResponseMsg) {}
  // TODO: Should we use a blocking call for ReadRemoteName instead? (Note: blocking model may not work for GD stack)
  rpc EnableInquiryScan(EnableMsg) returns (facade.Empty) {}
  rpc EnablePageScan(EnableMsg) returns (facade.Empty) {}
}

message EnableMsg {
  bool enabled = 1;
}

enum DiscoverabilityMode {
  OFF = 0;
  LIMITED = 1;
  GENERAL = 2;
}

message DiscoverabilitiyMsg {
  DiscoverabilityMode mode = 1;
}

enum ResultMode {
  STANDARD = 0;
  RSSI = 1;
  EXTENDED = 2;
}

message InquiryMsg {
  DiscoverabilityMode inquiry_mode = 1;
  ResultMode result_mode = 2;
  uint32 length_1_28s = 3;
  uint32 max_results = 4;  // 0 is unlimited
}

message InquiryResultMsg {
  bytes packet = 1;
}

message RemoteNameRequestMsg {
  bytes address = 1;
  uint32 page_scan_repetition_mode = 2;  // r0, r1, r2
  uint32 clock_offset = 3;
}

message RemoteNameResponseMsg {
  uint32 status = 1;
  bytes address = 2;
  bytes name = 3;
}