1syntax = "proto3"; 2package service.proto; 3import "src/fastpair/rpcs.proto"; 4import "src/fastpair/fast_pair_string.proto"; 5 6// db information for Fast Pair that gets from server. 7message ServerResponseDbItem { 8 // Device's model id. 9 string model_id = 1; 10 11 // Response was received from the server. Contains data needed to display 12 // FastPair notification such as device name, txPower of device, image used 13 // in the notification, etc. 14 GetObservedDeviceResponse get_observed_device_response = 2; 15 16 // The timestamp that make the server fetch. 17 int64 last_fetch_info_timestamp_millis = 3; 18 19 // Whether the item in the cache is expirable or not (when offline mode this 20 // will be false). 21 bool expirable = 4; 22} 23 24 25// Client side scan result. 26message StoredScanResult { 27 // REQUIRED 28 // Unique ID generated based on scan result 29 string id = 1; 30 31 // REQUIRED 32 NearbyType type = 2; 33 34 // REQUIRED 35 // The most recent all upper case mac associated with this item. 36 // (Mac-to-DiscoveryItem is a many-to-many relationship) 37 string mac_address = 4; 38 39 // Beacon's RSSI value 40 int32 rssi = 10; 41 42 // Beacon's tx power 43 int32 tx_power = 11; 44 45 // The mac address encoded in beacon advertisement. Currently only used by 46 // chromecast. 47 string device_setup_mac = 12; 48 49 // Uptime of the device in minutes. Stops incrementing at 255. 50 int32 uptime_minutes = 13; 51 52 // REQUIRED 53 // Client timestamp when the beacon was first observed in BLE scan. 54 int64 first_observation_timestamp_millis = 14; 55 56 // REQUIRED 57 // Client timestamp when the beacon was last observed in BLE scan. 58 int64 last_observation_timestamp_millis = 15; 59 60 // Deprecated fields. 61 reserved 3, 5, 6, 7, 8, 9; 62} 63 64 65// Data for a DiscoveryItem created from server response and client scan result. 66// Only caching original data from scan result, server response, timestamps 67// and user actions. Do not save generated data in this object. 68// Next ID: 50 69message StoredDiscoveryItem { 70 enum State { 71 // Default unknown state. 72 STATE_UNKNOWN = 0; 73 74 // The item is normal. 75 STATE_ENABLED = 1; 76 77 // The item has been muted by user. 78 STATE_MUTED = 2; 79 80 // The item has been disabled by us (likely temporarily). 81 STATE_DISABLED_BY_SYSTEM = 3; 82 } 83 84 // The status of the item. 85 // TODO(b/204409421) remove enum 86 enum DebugMessageCategory { 87 // Default unknown state. 88 STATUS_UNKNOWN = 0; 89 90 // The item is valid and visible in notification. 91 STATUS_VALID_NOTIFICATION = 1; 92 93 // The item made it to list but not to notification. 94 STATUS_VALID_LIST_VIEW = 2; 95 96 // The item is filtered out on client. Never made it to list view. 97 STATUS_DISABLED_BY_CLIENT = 3; 98 99 // The item is filtered out by server. Never made it to client. 100 STATUS_DISABLED_BY_SERVER = 4; 101 } 102 103 enum ExperienceType { 104 EXPERIENCE_UNKNOWN = 0; 105 EXPERIENCE_GOOD = 1; 106 EXPERIENCE_BAD = 2; 107 } 108 109 // REQUIRED 110 // Offline item: unique ID generated on client. 111 // Online item: unique ID generated on server. 112 string id = 1; 113 114 // REQUIRED 115 // The most recent all upper case mac associated with this item. 116 // (Mac-to-DiscoveryItem is a many-to-many relationship) 117 string mac_address = 4; 118 119 // REQUIRED 120 string action_url = 5; 121 122 // The bluetooth device name from advertisment 123 string device_name = 6; 124 125 // REQUIRED 126 // Item's title 127 string title = 7; 128 129 // Item's description. 130 string description = 8; 131 132 // The URL for display 133 string display_url = 9; 134 135 // REQUIRED 136 // Client timestamp when the beacon was last observed in BLE scan. 137 int64 last_observation_timestamp_millis = 10; 138 139 // REQUIRED 140 // Client timestamp when the beacon was first observed in BLE scan. 141 int64 first_observation_timestamp_millis = 11; 142 143 // REQUIRED 144 // Item's current state. e.g. if the item is blocked. 145 State state = 17; 146 147 // The resolved url type for the action_url. 148 ResolvedUrlType action_url_type = 19; 149 150 // The timestamp when the user is redirected to Play Store after clicking on 151 // the item. 152 int64 pending_app_install_timestamp_millis = 20; 153 154 // Beacon's RSSI value 155 int32 rssi = 22; 156 157 // Beacon's tx power 158 int32 tx_power = 23; 159 160 // Human readable name of the app designated to open the uri 161 // Used in the second line of the notification, "Open in {} app" 162 string app_name = 25; 163 164 // The timestamp when the attachment was created on PBS server. In case there 165 // are duplicate 166 // items with the same scanId/groupID, only show the one with the latest 167 // timestamp. 168 int64 attachment_creation_sec = 28; 169 170 // Package name of the App that owns this item. 171 string package_name = 30; 172 173 // The average star rating of the app. 174 float star_rating = 31; 175 176 // TriggerId identifies the trigger/beacon that is attached with a message. 177 // It's generated from server for online messages to synchronize formatting 178 // across client versions. 179 // Example: 180 // * BLE_UID: 3||deadbeef 181 // * BLE_URL: http://trigger.id 182 // See go/discovery-store-message-and-trigger-id for more details. 183 string trigger_id = 34; 184 185 // Bytes of item icon in PNG format displayed in Discovery item list. 186 bytes icon_png = 36; 187 188 // A FIFE URL of the item icon displayed in Discovery item list. 189 string icon_fife_url = 49; 190 191 // See equivalent field in NearbyItem. 192 bytes authentication_public_key_secp256r1 = 45; 193 194 // See equivalent field in NearbyItem. 195 FastPairInformation fast_pair_information = 46; 196 197 // Companion app detail. 198 CompanionAppDetails companion_detail = 47; 199 200 // Fast pair strings 201 FastPairStrings fast_pair_strings = 48; 202 203 // Deprecated fields. 204 reserved 2, 3, 12, 13, 14, 15, 16, 18, 21, 24, 26, 27, 29, 32, 33, 35, 37, 38, 39, 40, 41, 42, 43, 44; 205} 206enum ResolvedUrlType { 207 RESOLVED_URL_TYPE_UNKNOWN = 0; 208 209 // The url is resolved to a web page that is not a play store app. 210 // This can be considered as the default resolved type when it's 211 // not the other specific types. 212 WEBPAGE = 1; 213 214 // The url is resolved to the Google Play store app 215 // ie. play.google.com/store 216 APP = 2; 217} 218enum DiscoveryAttachmentType { 219 DISCOVERY_ATTACHMENT_TYPE_UNKNOWN = 0; 220 221 // The attachment is posted in the prod namespace (without "-debug") 222 DISCOVERY_ATTACHMENT_TYPE_NORMAL = 1; 223 224 // The attachment is posted in the debug namespace (with "-debug") 225 DISCOVERY_ATTACHMENT_TYPE_DEBUG = 2; 226} 227// Additional information relevant only for Fast Pair devices. 228message FastPairInformation { 229 // When true, Fast Pair will only create a bond with the device and not 230 // attempt to connect any profiles (for example, A2DP or HFP). 231 bool data_only_connection = 1; 232 233 // Additional images that are attached specifically for true wireless Fast 234 // Pair devices. 235 TrueWirelessHeadsetImages true_wireless_images = 3; 236 237 // When true, this device can support assistant function. 238 bool assistant_supported = 4; 239 240 // Features supported by the Fast Pair device. 241 repeated FastPairFeature features = 5; 242 243 // Optional, the name of the company producing this Fast Pair device. 244 string company_name = 6; 245 246 // Optional, the type of device. 247 DeviceType device_type = 7; 248 249 reserved 2; 250} 251 252 253enum NearbyType { 254 NEARBY_TYPE_UNKNOWN = 0; 255 // Proximity Beacon Service (PBS). This is the only type of nearbyItems which 256 // can be customized by 3p and therefore the intents passed should not be 257 // completely trusted. Deprecated already. 258 NEARBY_PROXIMITY_BEACON = 1; 259 // Physical Web URL beacon. Deprecated already. 260 NEARBY_PHYSICAL_WEB = 2; 261 // Chromecast beacon. Used on client-side only. 262 NEARBY_CHROMECAST = 3; 263 // Wear beacon. Used on client-side only. 264 NEARBY_WEAR = 4; 265 // A device (e.g. a Magic Pair device that needs to be set up). The special- 266 // case devices above (e.g. ChromeCast, Wear) might migrate to this type. 267 NEARBY_DEVICE = 6; 268 // Popular apps/urls based on user's current geo-location. 269 NEARBY_POPULAR_HERE = 7; 270 271 reserved 5; 272} 273 274// A locally cached Fast Pair device associating an account key with the 275// bluetooth address of the device. 276message StoredFastPairItem { 277 // The device's public mac address. 278 string mac_address = 1; 279 280 // The account key written to the device. 281 bytes account_key = 2; 282 283 // When user need to update provider name, enable this value to trigger 284 // writing new name to provider. 285 bool need_to_update_provider_name = 3; 286 287 // The retry times to update name into provider. 288 int32 update_name_retries = 4; 289 290 // Latest firmware version from the server. 291 string latest_firmware_version = 5; 292 293 // The firmware version that is on the device. 294 string device_firmware_version = 6; 295 296 // The timestamp from the last time we fetched the firmware version from the 297 // device. 298 int64 last_check_firmware_timestamp_millis = 7; 299 300 // The timestamp from the last time we fetched the firmware version from 301 // server. 302 int64 last_server_query_timestamp_millis = 8; 303 304 // Only allows one bloom filter check process to create gatt connection and 305 // try to read the firmware version value. 306 bool can_read_firmware = 9; 307 308 // Device's model id. 309 string model_id = 10; 310 311 // Features that this Fast Pair device supports. 312 repeated FastPairFeature features = 11; 313 314 // Keeps the stored discovery item in local cache, we can have most 315 // information of fast pair device locally without through footprints, i.e. we 316 // can have most fast pair features locally. 317 StoredDiscoveryItem discovery_item = 12; 318 319 // When true, the latest uploaded event to FMA is connected. We use 320 // it as the previous ACL state when getting the BluetoothAdapter STATE_OFF to 321 // determine if need to upload the disconnect event to FMA. 322 bool fma_state_is_connected = 13; 323 324 // Device's buffer size range. 325 repeated BufferSizeRange buffer_size_range = 18; 326 327 // The additional account key if this device could be associated with multiple 328 // accounts. Notes that for this device, the account_key field is the basic 329 // one which will not be associated with the accounts. 330 repeated bytes additional_account_key = 19; 331 332 // Deprecated fields. 333 reserved 14, 15, 16, 17; 334} 335 336// Contains information about Fast Pair devices stored through our scanner. 337// Next ID: 29 338message ScanFastPairStoreItem { 339 // Device's model id. 340 string model_id = 1; 341 342 // Device's RSSI value 343 int32 rssi = 2; 344 345 // Device's tx power 346 int32 tx_power = 3; 347 348 // Bytes of item icon in PNG format displayed in Discovery item list. 349 bytes icon_png = 4; 350 351 // A FIFE URL of the item icon displayed in Discovery item list. 352 string icon_fife_url = 28; 353 354 // Device name like "Bose QC 35". 355 string device_name = 5; 356 357 // Client timestamp when user last saw Fast Pair device. 358 int64 last_observation_timestamp_millis = 6; 359 360 // Action url after user click the notification. 361 string action_url = 7; 362 363 // Device's bluetooth address. 364 string address = 8; 365 366 // The computed threshold rssi value that would trigger FastPair notifications 367 int32 threshold_rssi = 9; 368 369 // Populated with the contents of the bloom filter in the event that 370 // the scanned device is advertising a bloom filter instead of a model id 371 bytes bloom_filter = 10; 372 373 // Device name from the BLE scan record 374 string ble_device_name = 11; 375 376 // Strings used for the FastPair UI 377 FastPairStrings fast_pair_strings = 12; 378 379 // A key used to authenticate advertising device. 380 // See NearbyItem.authentication_public_key_secp256r1 for more information. 381 bytes anti_spoofing_public_key = 13; 382 383 // When true, Fast Pair will only create a bond with the device and not 384 // attempt to connect any profiles (for example, A2DP or HFP). 385 bool data_only_connection = 14; 386 387 // The type of the manufacturer (first party, third party, etc). 388 int32 manufacturer_type_num = 15; 389 390 // Additional images that are attached specifically for true wireless Fast 391 // Pair devices. 392 TrueWirelessHeadsetImages true_wireless_images = 16; 393 394 // When true, this device can support assistant function. 395 bool assistant_supported = 17; 396 397 // Optional, the name of the company producing this Fast Pair device. 398 string company_name = 18; 399 400 // Features supported by the Fast Pair device. 401 FastPairFeature features = 19; 402 403 // The interaction type that this scan should trigger 404 InteractionType interaction_type = 20; 405 406 // The copy of the advertisement bytes, used to pass along to other 407 // apps that use Fast Pair as the discovery vehicle. 408 bytes full_ble_record = 21; 409 410 // Companion app related information 411 CompanionAppDetails companion_detail = 22; 412 413 // Client timestamp when user first saw Fast Pair device. 414 int64 first_observation_timestamp_millis = 23; 415 416 // The type of the device (wearable, headphones, etc). 417 int32 device_type_num = 24; 418 419 // The type of notification (app launch smart setup, etc). 420 NotificationType notification_type = 25; 421 422 // The customized title. 423 string customized_title = 26; 424 425 // The customized description. 426 string customized_description = 27; 427} 428