blob: 2a55496d2cd1cb0b63f6da85270700969f130463 [file] [log] [blame]
/**
* 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();
}
}
}