/* * Copyright (C) 2022 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 = "proto2"; package android.os.statsd.hotword; import "frameworks/proto_logging/stats/atom_field_options.proto"; import "frameworks/proto_logging/stats/enums/hotword/enums.proto"; option java_package = "com.android.os.hotword"; option java_multiple_files = true; /** * Logs information related to creating hotword detector. */ message HotwordDetectorCreateRequested { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // True if the detector is created successfully. optional bool is_created_done = 2; // The UID for which assistant application is active. optional int32 uid = 3 [(is_uid) = true]; } /** * Logs information related to hotword detection service init result. */ message HotwordDetectionServiceInitResultReported { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // The result of initialization. enum Result { // Indicates that the service was initialized successfully. CALLBACK_INIT_STATE_SUCCESS = 0; // Indicates that the service was not initialized successfully. CALLBACK_INIT_STATE_ERROR = 1; // Indicates that the callback was invoked without init state. CALLBACK_INIT_STATE_UNKNOWN_NO_VALUE = 2; // Indicates that the callback was invoked, but the init state value exceeded // the defined maximum. CALLBACK_INIT_STATE_UNKNOWN_OVER_MAX_CUSTOM_VALUE = 3; // Indicates that the callback was not invoked within timeout. CALLBACK_INIT_STATE_UNKNOWN_TIMEOUT = 4; } optional Result result = 2; // The UID for which the assistant application is active. optional int32 uid = 3 [(is_uid) = true]; } /** * Logs information related to restarting hotword detection service. */ message HotwordDetectionServiceRestarted { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // The reason for restarting service. enum Reason { // UNKNOWN value. UNKNOWN = 0; // Indicates that the service was restarted due to audio service died. AUDIO_SERVICE_DIED = 1; // Indicates that the service was restarted regularly. SCHEDULE = 2; // Deprecated. Indicates that the service was restarted due to service crashed. CRASH = 3 [deprecated = true]; } optional Reason reason = 2; // The UID for which the assistant application is active. optional int32 uid = 3 [(is_uid) = true]; } /** * Logs information related to keyphrase trigger. */ message HotwordDetectorKeyphraseTriggered { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // The result of detection. enum Result { // Indicates that the system got the keyphrase from DSP. KEYPHRASE_TRIGGER = 0; // Deprecated. Indicates that the system can not inform the service to verify the keyphrase. FAILED_TO_INFORM_SERVICE = 1 [deprecated = true]; // Indicates that the callback was not invoked within timeout after informing // the service. DETECT_TIMEOUT = 2; // Indicates that the system got the exception after informing the service. DETECT_EXCEPTION = 3; // Indicates that the service crashed. SERVICE_CRASH = 4; // Indicates that the keyphrase was detected. DETECTED = 5; // Indicates that the keyphrase was not detected. REJECTED = 6; // Indicates that the system got the unexpected detected callback. DETECT_UNEXPECTED_CALLBACK = 7; // Indicates that the system got the security exception when handling detected callback. DETECT_SECURITY_EXCEPTION = 8; // Indicates that the system got the unexpected rejected callback. REJECT_UNEXPECTED_CALLBACK = 9; // Indicates that the system called rejected callback when the trusted process was // restarted. REJECTED_FROM_RESTART = 10; // Indicates keyphrase was classified as training data. TRAINING_DATA = 11; // Indicates training data egress limit was reached. TRAINING_DATA_EGRESS_LIMIT_REACHED = 12; // Indicates that system got security exception when handling training data callback. TRAINING_DATA_SECURITY_EXCEPTION = 13; // Indicates that system got remote exception when handling training data callback. TRAINING_DATA_REMOTE_EXCEPTION = 14; } // What result after detecting. optional Result result = 2; // The UID for which the assistant application is active. optional int32 uid = 3 [(is_uid) = true]; } /** * Logs information related to hotword detector events. */ message HotwordDetectorEvents { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // The type of event. enum Event { // UNKNOWN value. UNKNOWN = 0; // Indicates that the system requested to bind the service. REQUEST_BIND_SERVICE = 1; // Indicates that the system connected the service successfully. ON_CONNECTED = 2; // Indicates that the system failed to bind the service. REQUEST_BIND_SERVICE_FAIL = 3; // Indicates that the system called the updateState function of service. REQUEST_UPDATE_STATE = 4; // Indicates that the callback was not invoked within timeout after calling // the updateState function of service. CALLBACK_UPDATE_STATE_AFTER_TIMEOUT = 5; // Indicates that no starting recognition after creating the detector. DID_NOT_CALL_START_RECOGNITION = 6; // Indicates that the system disconnected the service. ON_DISCONNECTED = 7; // Indicates that the application called the updateState function. APP_REQUEST_UPDATE_STATE = 8; // Indicates that starting to listen software detection. START_SOFTWARE_DETECTION = 9; // Indicates that starting to listen external source detection. START_EXTERNAL_SOURCE_DETECTION = 10; // Indicates that the external source detection was detected. EXTERNAL_SOURCE_DETECTED = 11; // Indicates that the external source detection was not detected. EXTERNAL_SOURCE_REJECTED = 12; // Indicates that the system got the security exception when handling external // source detected callback. EXTERNAL_SOURCE_DETECT_SECURITY_EXCEPTION = 13; // Indicates that the callback onStatusReported was not invoked successfully. CALLBACK_ON_STATUS_REPORTED_EXCEPTION = 14; // Indicates that the callback onError was not invoked successfully. CALLBACK_ON_ERROR_EXCEPTION = 15; // Indicates that the callback onRejected was not invoked successfully. CALLBACK_ON_REJECTED_EXCEPTION = 16; // Indicates that the callback onDetected was not invoked successfully. CALLBACK_ON_DETECTED_EXCEPTION = 17; // Indicates that the callback onProcessRestarted was not invoked successfully. CALLBACK_ON_PROCESS_RESTARTED_EXCEPTION = 18; // Indicates that the updateState was not invoked successfully. CALL_UPDATE_STATE_EXCEPTION = 19; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress starts. AUDIO_EGRESS_START = 20 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress ends. AUDIO_EGRESS_END = 21 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress got interrupted exception. AUDIO_EGRESS_INTERRUPTED_EXCEPTION = 22 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the client is not granted permission to access audio egress. AUDIO_EGRESS_NO_PERMISSION = 23 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the client is inactive over a period of time. AUDIO_EGRESS_INACTIVE_CLIENT = 24 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the HotwordDetectionService is inactive over a period // of time. AUDIO_EGRESS_INACTIVE_HOTWORD_DETECTION_SERVICE = 25 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the list of audio stream is empty. AUDIO_EGRESS_EMPTY_AUDIO_STREAM_LIST = 26 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that there is no data from the system audio stream. AUDIO_EGRESS_SOURCE_IS_EMPTY = 27 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the copy buffer size the client sets is illegal. AUDIO_EGRESS_ILLEGAL_COPY_BUFFER_SIZE = 28 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the system. AUDIO_EGRESS_CLOSE_ERROR_FROM_SYSTEM = 29 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the client // side. AUDIO_EGRESS_CLOSE_ERROR_FROM_CLIENT = 30 [deprecated = true]; // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the // HotwordDetectionService. AUDIO_EGRESS_CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 31 [deprecated = true]; } optional Event event = 2; // The UID for which assistant application is active. optional int32 uid = 3 [(is_uid) = true]; } /** * Logs information related to audio egress in hotword. */ message HotwordAudioEgressEventReported { // The type of detector. optional android.hotword.HotwordDetectorType detector_type = 1; // The type of event. enum Event { // UNKNOWN value. UNKNOWN = 0; // Indicates that the audio egress started. STARTED = 1; // Indicates that the audio egress ended. ENDED = 2; // Indicates that the audio egress got interrupted exception. INTERRUPTED_EXCEPTION = 3; // Indicates that the client is not granted permission to access audio egress. NO_PERMISSION = 4; // Indicates that the client is inactive over a period of time. INACTIVE_CLIENT = 5; // Indicates that the HotwordDetectionService is inactive over a period // of time. INACTIVE_HOTWORD_DETECTION_SERVICE = 6; // Indicates that the list of audio stream is empty. EMPTY_AUDIO_STREAM_LIST = 7; // Indicates that there is no data from the system audio stream. SOURCE_IS_EMPTY = 8; // Indicates that the copy buffer size the client sets is illegal. ILLEGAL_COPY_BUFFER_SIZE = 9; // Indicates that the audio egress is closed with error from the system. CLOSE_ERROR_FROM_SYSTEM = 10; // Indicates that the audio egress is closed with error from the client side. CLOSE_ERROR_FROM_CLIENT = 11; // Indicates that the audio egress is closed with error from the // HotwordDetectionService. CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 12; } optional Event event = 2; // The UID for which the assistant application is active. optional int32 uid = 3 [(is_uid) = true]; // The number of bytes egressed in audio stream optional int32 egressed_stream_size_bytes = 4; // The number of bytes egressed in metadata bundle optional int32 egressed_metadata_bundle_size_bytes = 5; // The count of audio streams optional int32 stream_count = 6; }