Sound Open Firmware
Loading...
Searching...
No Matches
system_service.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause */
2/*
3 * Copyright(c) 2024 Intel Corporation. All rights reserved.
4 *
5 * Author: Adrian Warecki <adrian.warecki@intel.com>
6 */
7
14#ifndef MODULE_MODULE_SYSTEM_SERVICE_H
15#define MODULE_MODULE_SYSTEM_SERVICE_H
16
17#include <stdint.h>
18#include <stddef.h>
19
20#include "logger.h"
21#include "../iadk/adsp_error_code.h"
22
23#ifdef __XTENSA__
24 #define RESTRICT __restrict
25#else
26 #define RESTRICT
27#endif
28
30struct notification_handle;
31
32/* Defines parameters used by ADSP system during notification creation. */
34 uint32_t type;
35 uint16_t user_val_1;
38 uint32_t user_val_2;
44 uint8_t *payload;
45};
46
47/* Defines parameters used by ADSP system during Module Event notification creation. */
50 uint32_t event_id;
51 uint32_t event_data_size;
54 uint32_t event_data[];
57};
58
59/* Defines notification targets supported by ADSP system
60 * FW defines only two notification targets, HOST and ISH (Integrated Sensor Hub).
61 */
63 NOTIFICATION_TARGET_DSP_TO_HOST = 1, /* Notification target is HOST */
64 NOTIFICATION_TARGET_DSP_TO_ISH = 2 /* Notification target is ISH */
65};
66
67/* Defines notification types supported by ADSP system
68 * FW use reserved first 20 positions describing types of notifications.
69 */
71 /* corresponding to PHRASE_DETECTED notification */
73
74 /* corresponding to FW_AUD_CLASS_RESULT notification */
76
77 /* corresponding to MODULE_NOTIFICATION notification */
79};
80
81/* Defines extended interfaces for IADK modules */
83 INTERFACE_ID_GNA = 0x1000, /* Reserved for ADSP system */
84 INTERFACE_ID_INFERENCE_SERVICE = 0x1001, /* See InferenceServiceInterface */
85 INTERFACE_ID_SDCA = 0x1002, /* See SdcaInterface */
86 INTERFACE_ID_ASYNC_MESSAGE_SERVICE = 0x1003, /* See AsyncMessageInterface */
87 INTERFACE_ID_AM_SERVICE = 0x1005, /* Reserved for ADSP system */
88 INTERFACE_ID_KPB_SERVICE = 0x1006, /* See KpbInterface */
89 INTERFACE_ID_TIMESTAMPING_SERVICE = 0x1007 /* See TimestampingInterface */
90};
91
92/* Public interface versions are opaque values used by the versioned GetInterface(). */
104
105/* Versions exposed to modules built against the current IADK headers. */
106#define INTERFACE_VERSION_GNA INTERFACE_VERSION_GNA_V1
107#define INTERFACE_VERSION_INFERENCE_SERVICE INTERFACE_VERSION_INFERENCE_SERVICE_V2
108#define INTERFACE_VERSION_SDCA INTERFACE_VERSION_SDCA_V1
109#define INTERFACE_VERSION_ASYNC_MESSAGE_SERVICE INTERFACE_VERSION_ASYNC_MESSAGE_SERVICE_V1
110#define INTERFACE_VERSION_AM_SERVICE INTERFACE_VERSION_AM_SERVICE_V1
111#define INTERFACE_VERSION_KPB_SERVICE INTERFACE_VERSION_KPB_SERVICE_V2
112#define INTERFACE_VERSION_TIMESTAMPING_SERVICE INTERFACE_VERSION_TIMESTAMPING_SERVICE_V1
113
114/* sub interface definition.
115 * This type may contain generic interface properties like id or struct size if needed.
116 */
117struct system_service_iface;
118
120 void (*log_message)(enum log_priority log_priority, uint32_t log_entry,
121 struct log_handle const *log_handle, uint32_t param1,
122 uint32_t param2, uint32_t param3, uint32_t param4);
123
124 AdspErrorCode (*safe_memcpy)(void *RESTRICT dst, size_t maxlen,
125 const void *RESTRICT src, size_t len);
126
127 AdspErrorCode (*safe_memmove)(void *dst, size_t maxlen,
128 const void *src, size_t len);
129
130 void* (*vec_memset)(void *dst, int c, size_t len);
131
133 uint8_t *notification_buffer,
134 uint32_t notification_buffer_size,
135 struct notification_handle **handle);
137 struct notification_handle *message,
138 uint32_t actual_payload_size);
139
140 AdspErrorCode (*get_interface)(enum interface_id id, struct system_service_iface **iface);
141
143 struct system_service_iface **iface);
144};
145#endif /* MODULE_MODULE_SYSTEM_SERVICE_H */
uint32_t AdspErrorCode
Defines error codes that are returned in the ADSP project.
Definition adsp_error_code.h:18
uint16_t id
Unique identifier of the control.
Definition header.h:0
log_priority
Definition logger.h:12
notification_type
Definition system_service.h:70
@ NOTIFICATION_TYPE_MODULE_EVENT_NOTIFICATION
Definition system_service.h:78
@ NOTIFICATION_TYPE_AUDIO_CLASSIFIER_RESULTS
Definition system_service.h:75
@ NOTIFICATION_TYPE_VOICE_COMMAND_NOTIFICATION
Definition system_service.h:72
interface_id
Definition system_service.h:82
@ INTERFACE_ID_TIMESTAMPING_SERVICE
Definition system_service.h:89
@ INTERFACE_ID_ASYNC_MESSAGE_SERVICE
Definition system_service.h:86
@ INTERFACE_ID_KPB_SERVICE
Definition system_service.h:88
@ INTERFACE_ID_AM_SERVICE
Definition system_service.h:87
@ INTERFACE_ID_SDCA
Definition system_service.h:85
@ INTERFACE_ID_GNA
Definition system_service.h:83
@ INTERFACE_ID_INFERENCE_SERVICE
Definition system_service.h:84
notification_target
Definition system_service.h:62
@ NOTIFICATION_TARGET_DSP_TO_ISH
Definition system_service.h:64
@ NOTIFICATION_TARGET_DSP_TO_HOST
Definition system_service.h:63
#define RESTRICT
Definition system_service.h:26
interface_version
Definition system_service.h:93
@ INTERFACE_VERSION_KPB_SERVICE_V2
Definition system_service.h:101
@ INTERFACE_VERSION_SDCA_V1
Definition system_service.h:97
@ INTERFACE_VERSION_AM_SERVICE_V1
Definition system_service.h:99
@ INTERFACE_VERSION_ASYNC_MESSAGE_SERVICE_V1
Definition system_service.h:98
@ INTERFACE_VERSION_INFERENCE_SERVICE_V2
Definition system_service.h:96
@ INTERFACE_VERSION_INFERENCE_SERVICE_V1
Definition system_service.h:95
@ INTERFACE_VERSION_KPB_SERVICE_V1
Definition system_service.h:100
@ INTERFACE_VERSION_TIMESTAMPING_SERVICE_V1
Definition system_service.h:102
@ INTERFACE_VERSION_GNA_V1
Definition system_service.h:94
Definition system_service.h:48
uint32_t event_id
Definition system_service.h:50
uint32_t event_data[]
Definition system_service.h:54
uint32_t module_instance_id
Definition system_service.h:49
uint32_t event_data_size
Definition system_service.h:51
Definition system_service.h:33
uint32_t user_val_2
Definition system_service.h:38
uint8_t * payload
Definition system_service.h:44
uint32_t max_payload_size
Definition system_service.h:41
uint32_t type
Definition system_service.h:34
uint16_t user_val_1
Definition system_service.h:35
Definition system_service.h:119
void(* log_message)(enum log_priority log_priority, uint32_t log_entry, struct log_handle const *log_handle, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4)
Definition system_service.h:120
AdspErrorCode(* safe_memmove)(void *dst, size_t maxlen, const void *src, size_t len)
Definition system_service.h:127
AdspErrorCode(* notification_send)(enum notification_target notification_target, struct notification_handle *message, uint32_t actual_payload_size)
Definition system_service.h:136
AdspErrorCode(* get_interface_versioned)(enum interface_id id, uint32_t version, struct system_service_iface **iface)
Definition system_service.h:142
AdspErrorCode(* notification_create)(struct notification_params *params, uint8_t *notification_buffer, uint32_t notification_buffer_size, struct notification_handle **handle)
Definition system_service.h:132
AdspErrorCode(* get_interface)(enum interface_id id, struct system_service_iface **iface)
Definition system_service.h:140
AdspErrorCode(* safe_memcpy)(void *RESTRICT dst, size_t maxlen, const void *RESTRICT src, size_t len)
Definition system_service.h:124