158 lines
5.3 KiB
C
158 lines
5.3 KiB
C
|
#ifndef __APP_THIRDPARTY_H__
|
||
|
#define __APP_THIRDPARTY_H__
|
||
|
|
||
|
#define INVALID_THIRDPARTY_ENTRY_INDEX 0xFFFF
|
||
|
#define APP_THIRDPARTY_DISABLE 0x5A5A
|
||
|
|
||
|
#define ALEXA_WWE_LIB_NAME alexa_wwe
|
||
|
#define KWS_ALEXA_LIB_NAME kws_demo
|
||
|
#define CYBERON_LIB_NAME cyberon
|
||
|
#define KNOWLES_LIB_NAME knowles
|
||
|
#define NOISE_TRACKER_LIB_NAME nt_demo
|
||
|
#define VOICESPOT_LIB_NAME kws_engine
|
||
|
#define DEMO_LIB_NAME demo
|
||
|
#define BIXBY_NAME bixby
|
||
|
|
||
|
|
||
|
#ifndef ARRAY_SIZE
|
||
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||
|
#endif
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
THIRDPARTY_FUNC_DEMO, // Each library has a unique id
|
||
|
THIRDPARTY_FUNC_NO1, // KWS
|
||
|
THIRDPARTY_FUNC_NO2, // knowles
|
||
|
THIRDPARTY_FUNC_NO3, // Noise tracker for anc
|
||
|
THIRDPARTY_FUNC_KWS, // key words
|
||
|
THIRDPARTY_FUNC_NUMBER,
|
||
|
} THIRDPARTY_FUNC_ID;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
THIRDPARTY_ID_DEMO, // Each library has a unique id
|
||
|
THIRDPARTY_ID_BES_ALEXA, // key words
|
||
|
THIRDPARTY_ID_ALEXA_WWE, // AMA wakeup word engine
|
||
|
THIRDPARTY_ID_BIXBY, // Bixby wakeup word engine
|
||
|
THIRDPARTY_ID_NUMBER,
|
||
|
} THIRDPARTY_LIB_ID;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
THIRDPARTY_INIT = 0x00,
|
||
|
THIRDPARTY_START = 0x01,
|
||
|
THIRDPARTY_STOP = 0x02,
|
||
|
THIRDPARTY_START2MIC = 0x03,
|
||
|
THIRDPARTY_STOP2MIC = 0x04,
|
||
|
THIRDPARTY_DEINIT = 0x05,
|
||
|
THIRDPARTY_BT_CONNECTABLE = 0x06,
|
||
|
THIRDPARTY_BT_DISCOVERABLE = 0x07,
|
||
|
THIRDPARTY_BT_CONNECTED = 0x08,
|
||
|
THIRDPARTY_A2DP_STREAMING = 0x09,
|
||
|
THIRDPARTY_HFP_SETUP = 0x0A,
|
||
|
THIRDPARTY_MIC_OPEN = 0x0B,
|
||
|
THIRDPARTY_MIC_CLOSE = 0x0C,
|
||
|
THIRDPARTY_BURSTING = 0x0D,
|
||
|
THIRDPARTY_AI_PROVIDE_SPEECH = 0x0E,
|
||
|
THIRDPARTY_AI_STOP_SPEECH = 0x0F,
|
||
|
THIRDPARTY_AI_CONNECT = 0x10,
|
||
|
THIRDPARTY_AI_DISCONNECT = 0x11,
|
||
|
THIRDPARTY_CALL_START = 0x12,
|
||
|
THIRDPARTY_CALL_STOP = 0x13,
|
||
|
THIRDPARTY_OTHER_EVENT = 0x14,
|
||
|
THIRDPARTY_EVENT_NUMBER,
|
||
|
}THIRDPARTY_EVENT_TYPE;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
THIRDPARTY_DATA_COME_CALLBACK = 0x0,
|
||
|
THIRDPARTY_WAKE_UP_CALLBACK,
|
||
|
THIRDPARTY_START_SPEECH_CALLBACK,
|
||
|
THIRDPARTY_STOP_SPEECH_CALLBACK,
|
||
|
}THIRDPARTY_CALLBACK_TYPE;
|
||
|
|
||
|
//the ai wake up type
|
||
|
typedef enum {
|
||
|
THIRDPARTY_TYPE__NONE,
|
||
|
THIRDPARTY_TYPE__PRESS_AND_HOLD,
|
||
|
THIRDPARTY_TYPE__TAP,
|
||
|
THIRDPARTY_TYPE__KEYWORD_WAKEUP
|
||
|
} THIRDPARTY_WAKE_UP_TYPE_E;
|
||
|
|
||
|
typedef int (*APP_THIRDPARTY_HANDLE_CB_T)(unsigned char, void *param);
|
||
|
typedef uint32_t (*APP_THIRDPARTY_CUSTOM_CB_T)(void*, uint32_t);
|
||
|
|
||
|
typedef struct {
|
||
|
int score;
|
||
|
uint32_t start_index;
|
||
|
uint32_t end_index;
|
||
|
THIRDPARTY_WAKE_UP_TYPE_E wake_up_type;
|
||
|
}APP_THIRDPARTY_WAKE_WORD_T;
|
||
|
|
||
|
typedef struct {
|
||
|
THIRDPARTY_FUNC_ID func_id;
|
||
|
THIRDPARTY_LIB_ID lib_id;
|
||
|
THIRDPARTY_EVENT_TYPE event;
|
||
|
}APP_THIRDPARTY_SIGN;
|
||
|
|
||
|
typedef struct {
|
||
|
APP_THIRDPARTY_SIGN thirdparty_sign;
|
||
|
APP_THIRDPARTY_HANDLE_CB_T function;
|
||
|
unsigned char status;
|
||
|
void *param;
|
||
|
} APP_THIRDPARTY_HANDLE;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
// Pointer to the thirdparty handler table
|
||
|
const APP_THIRDPARTY_HANDLE *thirdparty_handler_tab;
|
||
|
// Number of thirdparty handler
|
||
|
uint16_t thirdparty_handler_cnt;
|
||
|
THIRDPARTY_FUNC_ID thirdparty_func_id;
|
||
|
THIRDPARTY_LIB_ID thirdparty_lib_id;
|
||
|
|
||
|
APP_THIRDPARTY_CUSTOM_CB_T _app_thirdparty_data_come_callback;
|
||
|
APP_THIRDPARTY_CUSTOM_CB_T _app_thirdparty_wake_up_callback;
|
||
|
APP_THIRDPARTY_CUSTOM_CB_T _app_thirdparty_start_callback;
|
||
|
APP_THIRDPARTY_CUSTOM_CB_T _app_thirdparty_stop_callback;
|
||
|
}APP_THIRDPARTY_HANDLE_TAB_T;
|
||
|
|
||
|
|
||
|
#define _THIRDPARTY_HANDLER_TAB(id_name) const APP_THIRDPARTY_HANDLE id_name##_handler_tab[] =
|
||
|
#define _THIRDPARTY_GET_HANDLER_TAB(id_name) id_name##_handler_tab
|
||
|
#define _THIRDPARTY_HANDLER_TAB_SIZE(id_name) const uint32_t id_name##_handler_tab_size = ARRAY_SIZE(id_name##_handler_tab);
|
||
|
#define _THIRDPARTY_GET_HANDLER_TAB_SIZE(id_name) id_name##_handler_tab_size
|
||
|
#define _EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(id_name) extern const APP_THIRDPARTY_HANDLE id_name##_handler_tab[]; \
|
||
|
extern const uint32_t id_name##_handler_tab_size;
|
||
|
|
||
|
#define THIRDPARTY_HANDLER_TAB(id_name) _THIRDPARTY_HANDLER_TAB(id_name)
|
||
|
#define THIRDPARTY_GET_HANDLER_TAB(id_name) _THIRDPARTY_GET_HANDLER_TAB(id_name)
|
||
|
#define THIRDPARTY_HANDLER_TAB_SIZE(id_name) _THIRDPARTY_HANDLER_TAB_SIZE(id_name)
|
||
|
#define THIRDPARTY_GET_HANDLER_TAB_SIZE(id_name) _THIRDPARTY_GET_HANDLER_TAB_SIZE(id_name)
|
||
|
#define EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(id_name) _EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(id_name)
|
||
|
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(ALEXA_WWE_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(KWS_ALEXA_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(CYBERON_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(KNOWLES_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(NOISE_TRACKER_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(VOICESPOT_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(DEMO_LIB_NAME)
|
||
|
EXTERN_THIRDPARTY_HANDLER_TAB_AND_SIZE(BIXBY_NAME)
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
void app_thirdparty_callback_init(THIRDPARTY_CALLBACK_TYPE type, APP_THIRDPARTY_CUSTOM_CB_T cb);
|
||
|
uint32_t app_thirdparty_callback_handble(THIRDPARTY_CALLBACK_TYPE type, void* param1, uint32_t param2);
|
||
|
int app_thirdparty_specific_lib_event_handle(THIRDPARTY_FUNC_ID funcId,THIRDPARTY_EVENT_TYPE event_type);
|
||
|
void app_thirdparty_init(void);
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|