/** * Copyright (C) 2023 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. */ package com.android.server.soundtrigger; import android.util.Slog; import com.android.server.utils.EventLogger.Event; import java.util.UUID; public abstract class SoundTriggerEvent extends Event { @Override public Event printLog(int type, String tag) { switch (type) { case ALOGI: Slog.i(tag, eventToString()); break; case ALOGE: Slog.e(tag, eventToString()); break; case ALOGW: Slog.w(tag, eventToString()); break; case ALOGV: default: Slog.v(tag, eventToString()); } return this; } public static class ServiceEvent extends SoundTriggerEvent { public enum Type { ATTACH, LIST_MODULE, DETACH, } private final Type mType; private final String mPackageName; private final String mErrorString; public ServiceEvent(Type type) { this(type, null, null); } public ServiceEvent(Type type, String packageName) { this(type, packageName, null); } public ServiceEvent(Type type, String packageName, String errorString) { mType = type; mPackageName = packageName; mErrorString = errorString; } @Override public String eventToString() { var res = new StringBuilder(String.format("%-12s", mType.name())); if (mErrorString != null) { res.append(" ERROR: ").append(mErrorString); } if (mPackageName != null) { res.append(" for: ").append(mPackageName); } return res.toString(); } } public static class SessionEvent extends SoundTriggerEvent { public enum Type { // Downward calls START_RECOGNITION, STOP_RECOGNITION, LOAD_MODEL, UNLOAD_MODEL, UPDATE_MODEL, DELETE_MODEL, START_RECOGNITION_SERVICE, STOP_RECOGNITION_SERVICE, GET_MODEL_STATE, SET_PARAMETER, GET_MODULE_PROPERTIES, DETACH, // Callback events RECOGNITION, RESUME, RESUME_FAILED, PAUSE, PAUSE_FAILED, RESOURCES_AVAILABLE, MODULE_DIED } private final UUID mModelUuid; private final Type mType; private final String mErrorString; public SessionEvent(Type type, UUID modelUuid, String errorString) { mType = type; mModelUuid = modelUuid; mErrorString = errorString; } public SessionEvent(Type type, UUID modelUuid) { this(type, modelUuid, null); } @Override public String eventToString() { var res = new StringBuilder(String.format("%-25s", mType.name())); if (mErrorString != null) { res.append(" ERROR: ").append(mErrorString); } if (mModelUuid != null) { res.append(" for: ").append(mModelUuid); } return res.toString(); } } }