-
Notifications
You must be signed in to change notification settings - Fork 8
/
BSSIDApple.proto
76 lines (71 loc) · 3.15 KB
/
BSSIDApple.proto
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
syntax = "proto3";
option go_package = "./pb";
message WifiDevice {
string bssid = 1;
optional Location location = 2;
}
message AppleWLoc {
// optional int64 unknown_value0 = 1;
repeated WifiDevice wifi_devices = 2;
optional sint32 num_cell_results = 3;
optional sint32 num_wifi_results = 4; // Set to -1 to disable
optional string app_bundle_id = 5;
// optional string unknown_value2 = 6;
// optional int64 unknown_value7 = 7;
repeated CellTower cell_tower_response = 22; // LTE cell towers?
optional CellTower cell_tower_request = 25;
// optional int32 unknown_value31 = 31;
// optional int32 unknown_value32 = 32;
optional DeviceType device_type = 33;
}
// https://en.wikipedia.org/wiki/Cell_Global_Identity
message CellTower {
uint32 mmc = 1; // This seems like a typo for mcc
uint32 mnc = 2;
uint32 cell_id = 3;
uint32 tac_id = 4;
optional Location location = 5;
optional uint32 uarfcn = 6;
optional uint32 pid = 7;
}
message DeviceType {
string operating_system = 1;
string model = 2;
}
message Location {
optional int64 latitude = 1;
optional int64 longitude = 2;
optional int64 horizontal_accuracy = 3;
optional int64 unknown_value4 = 4;
optional int64 altitude = 5;
optional int64 vertical_accuracy = 6;
optional int64 speed = 7;
optional int64 course = 8;
optional int64 timestamp = 9;
optional int64 unknown_context = 10; // Unused
optional int64 motion_activity_type = 11;
optional int64 motion_activity_confidence = 12;
optional int64 provider = 13; // Unused from this point on (in responses)
optional int64 floor = 14;
optional int64 unknown15 = 15;
optional int64 motion_vehicle_connected_state_changed = 16;
optional int64 motion_vehicle_connected = 17;
optional int64 raw_motion_activity = 18;
optional int64 motion_activity = 19;
optional int64 dominant_motion_activity = 20;
optional int64 course_accuracy = 21;
optional int64 speed_accuracy = 22;
optional int64 mode_indicator = 23;
// > The first two parameters describe how large and how squished the ellipse is, and the third parameter will be the Azimuth - the rotation of the ellipse. The center of the ellipse is the location lat/long.
// > https://qgis.org/pyqgis/3.28/core/QgsEllipse.html, https://en.wikipedia.org/wiki/Semi-major_and_semi-minor_axes, https://en.wikipedia.org/wiki/Kepler%27s_equation, https://en.wikipedia.org/wiki/Dilution_of_precision_(navigation), https://www.youtube.com/watch?v=aPLTirCbB5A&list=PLGvhNIiu1ubyEOJga50LJMzVXtbUq6CPo&index=16&t=707s
// > - Credits to Luke who sent me these details via email. I don't have a base in math so it'll take a while to fully understand.
// Used to calculate horizontal/vertical accuracy in tracking reports sent to Apple (calculations done on their servers)
optional int64 horzUncSemiMaj = 24;
optional int64 horzUncSemiMin = 25;
optional int64 horzUncSemiMajAz = 26;
optional int64 satellite_report = 27; // Not actually an int64. Unknown data type
optional int64 is_from_location_controller = 28;
optional int64 pipeline_diagnostic_report = 29;
optional int64 baro_calibration_indication = 30;
optional int64 processing_metadata = 31; // Unknown data type
}