/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto3"; package com.android.car.messenger.proto; option java_package = "com.android.car.messenger.NotificationMsgProto"; // Message to be sent from the phone SDK to the IHU SDK. message PhoneToCarMessage { // The unique key of the message notification, same in phone and car. // This will be the StatusBarNotification id of the original message // notification posted on the phone. string notification_key = 1; // The different types of messages to be sent from the phone SDK. oneof message_data { // Metadata of a new conversation (new in the history of the current // connection between phone and IHU SDKs). ConversationNotification conversation = 2; // Metadata of a new conversation received in an existing conversation. MessagingStyleMessage message = 3; // Fulfillment update of an action that was requested previously by // the IHU SDK. ActionStatusUpdate status_update = 4; // Metadata of a new sender avatar icon. AvatarIconSync avatar_icon_sync = 5; // Request to remove all data related to a messaging application. ClearAppDataRequest clear_app_data_request = 6; // Informs SDK whether this feature has been enabled/disabled. FeatureEnabledStateChange feature_enabled_state_change = 7; // Details about the connected phone. PhoneMetadata phone_metadata = 8; } // A byte array containing an undefined message. This field may contain // supplemental information for a message_data, or contain all of the // data for the PhoneToCarMessage. bytes metadata = 9; } // Message to be sent from the IHU SDK to the phone SDK. message CarToPhoneMessage { // The unique key of the message notification, same in phone and car. // This will be the StatusBarNotification id of the original message // notification posted on the phone. string notification_key = 1; // An action request to be fulfilled on the Phone side. Action action_request = 2; // A byte array containing an undefined message. This field may contain // supplemental information for a message_data, or contain all of the // data for the CarToPhoneMessage. bytes metadata = 3; } // Message to be sent from the Phone SDK to the IHU SDK after an Action // has been completed. The request_id in this update will correspond to // the request_id of the original Action message. message ActionStatusUpdate { // The different result types after completing an action. enum Status { UNKNOWN = 0; SUCCESSFUL = 1; ERROR = 2; } // Unique ID of the action. string request_id = 1; // The status of completing the action. Status status = 2; // Optional error message / explanation if the status resulted in an error. string error_explanation = 3; } // A message notification originating from the user's phone. message ConversationNotification { // Display name of the application that posted this notification. string messaging_app_display_name = 1; // Package name of the application that posted this notification. string messaging_app_package_name = 2; // MessagingStyle metadata of this conversation. MessagingStyle messaging_style = 3; // The time, in milliseconds, this message notification was last updated. int64 time_ms = 4; // Small app icon of the application that posted this notification. bytes app_icon = 5; } // MessagingStyle metadata that matches MessagingStyle formatting. message MessagingStyle { // List of messages and their metadata. repeated MessagingStyleMessage messaging_style_msg = 1; // The Conversation title of this conversation. string convo_title = 2; // String of the user, needed for MessagingStyle. string user_display_name = 3; // True if this is a group conversation. bool is_group_convo = 4; } // Message metadata that matches MessagingStyle formatting. message MessagingStyleMessage { // Contents of the message. string text_message = 1; // Timestamp of when the message notification was originally posted on the // phone. int64 timestamp = 2; // Details of the sender who sent the message. Person sender = 3; // If the message is read on the phone. bool is_read = 4; } // Sends over an avatar icon. This should be sent once per unique sender // (per unique app) during a phone to car connection. message AvatarIconSync { // Metadata of the person. Person person = 1; // Display name of the application that posted this notification. string messaging_app_display_name = 2; // Package name of the application that posted this notification. string messaging_app_package_name = 3; } // Request to clear all internal data and remove notifications for // a specific messaging application. message ClearAppDataRequest { // Specifies which messaging app's data to remove. string messaging_app_package_name = 1; } // Message to inform whether user has disabled/enabled this feature. message FeatureEnabledStateChange { // Enabled state of the feature. bool enabled = 1; } // Details of the phone that is connected to the IHU. message PhoneMetadata { // MAC address of the phone. string bluetooth_device_address = 1; } // Metadata about a sender. message Person { // Sender's name. string name = 1; // Sender's avatar icon. bytes avatar = 2; // Sender's low-resolution thumbnail bytes thumbnail = 3; } // Action on a notification, initiated by the user on the IHU. message Action { // Different types of actions user can do on the IHU notification. enum ActionName { UNKNOWN_ACTION_NAME = 0; MARK_AS_READ = 1; REPLY = 2; DISMISS = 3; } // Same as the PhoneToCar and CarToPhone messages's notification_key. // As mentioned above, this notification id should be the same on the // phone and the car. This will be the StatusBarNotification id of the // original message notification posted on the phone. string notification_key = 1; //Optional, used to capture data like the reply string. repeated MapEntry map_entry = 2; // Name of the action. ActionName action_name = 3; // Unique id of this action. string request_id = 4; } // Backwards compatible way of supporting a map. message MapEntry { // Key for the map. string key = 1; // Value that is mapped to this key. string value = 2; }