virtual bool bring_app_to_foreground(const std::string& appid) = 0;
virtual bool launch_app_async(const std::string& appid, bool background) = 0;
virtual boost::optional<std::string> get_appid_by_pid(pid_t pid) = 0;
+ virtual boost::optional<pid_t> get_pid_by_appid(const std::string& appid) = 0;
};
#ifdef __cplusplus
virtual bool bring_app_to_foreground(const std::string& appid) override;
virtual bool launch_app_async(const std::string& appid, bool background) override;
virtual boost::optional<std::string> get_appid_by_pid(pid_t pid) override;
+ boost::optional<pid_t> get_pid_by_appid(const std::string& appid) override;
};
#ifdef __cplusplus
#endif
typedef struct {
- int pid;
+ pid_t pid;
std::string appid;
} ma_client_s;
virtual ~CClientManager() {}
int set_application_manager(IApplicationManager* manager);
- int create_client(int pid, std::string appid);
- int destroy_client_by_pid(int pid);
+ int create_client(pid_t pid, std::string appid);
+ int destroy_client_by_pid(pid_t pid);
int destroy_client_by_appid(std::string appid);
int get_client_num();
- int find_client_pid_by_index(unsigned int index);
+ pid_t find_client_pid_by_index(unsigned int index);
- int find_client_pid_by_appid(std::string appid);
- std::string find_client_appid_by_pid(int pid);
+ pid_t find_client_pid_by_appid(std::string appid);
+ std::string find_client_appid_by_pid(pid_t pid);
bool check_client_validity_by_appid(std::string appid);
private:
ma_client_s* find_client_by_appid(std::string appid);
- ma_client_s* find_client_by_pid(int pid);
+ ma_client_s* find_client_by_pid(pid_t pid);
ma_client_s* get_client_by_index(unsigned int index);
int destroy_client(ma_client_s* client);
int open_connection();
int close_connection();
- int send_hello(int pid);
+ int send_hello(pid_t pid);
int send_error_message(int reason, const char* err_msg);
- int send_streaming_audio_data(int pid, int event, void* data, unsigned int data_size);
- int change_active_state(int pid, int state);
- int send_preprocessing_information(int pid, const char* app_id);
- int send_streaming_section_changed(int pid, int section);
- int send_preprocessing_result(int pid, bool result);
- int send_wakeup_engine_command(int pid, const char* command);
- int change_service_state(int pid, int state);
- int change_voice_key_status(int pid, int status);
+ int send_streaming_audio_data(pid_t pid, int event, void* data, unsigned int data_size);
+ int change_active_state(pid_t pid, int state);
+ int send_preprocessing_information(pid_t pid, const char* app_id);
+ int send_streaming_section_changed(pid_t pid, int section);
+ int send_preprocessing_result(pid_t pid, bool result);
+ int send_wakeup_engine_command(pid_t pid, const char* command);
+ int change_service_state(pid_t pid, int state);
+ int change_voice_key_status(pid_t pid, int status);
int masc_ui_dbus_send_hello(void);
- int masc_ui_dbus_send_asr_result(int pid, int event, const char* asr_result);
- int masc_ui_dbus_send_result(int pid, const char* display_text, const char* utterance_text, const char* result_json);
+ int masc_ui_dbus_send_asr_result(pid_t pid, int event, const char* asr_result);
+ int masc_ui_dbus_send_result(pid_t pid, const char* display_text, const char* utterance_text, const char* result_json);
int masc_ui_dbus_change_assistant(const char* app_id);
int masc_ui_dbus_send_error_message(int reason, const char* err_msg);
- int masc_ui_dbus_send_recognition_result(int pid, int result);
+ int masc_ui_dbus_send_recognition_result(pid_t pid, int result);
int masc_ui_dbus_enable_common_ui(int enable);
DBusConnection* get_connection_listener() { return mConnectionListener; }
void set_client_manager(CClientManager* manager) {
mClientManager = manager;
}
+ void set_application_manager(IApplicationManager* manager) {
+ mApplicationManager = manager;
+ }
void set_service_ipc_observer(IServiceIpcObserver* observer) {
mDispatcher.set_ipc_observer(observer);
}
int mStreamingDataSerial{0};
CClientManager* mClientManager{nullptr};
+ IApplicationManager* mApplicationManager{nullptr};
};
#ifdef __cplusplus
class IServiceIpcObserver {
public:
- virtual int on_initialize(int pid) = 0;
- virtual int on_deinitialize(int pid) = 0;
- virtual int on_get_audio_format(int pid, int& rate, int& channel, int& audio_type) = 0;
- virtual int on_get_audio_source_type(int pid, std::string& type) = 0;
- virtual int on_send_asr_result(int pid, int event, std::string asr_result) = 0;
- virtual int on_send_result(int pid,
+ virtual int on_initialize(pid_t pid) = 0;
+ virtual int on_deinitialize(pid_t pid) = 0;
+ virtual int on_get_audio_format(pid_t pid, int& rate, int& channel, int& audio_type) = 0;
+ virtual int on_get_audio_source_type(pid_t pid, std::string& type) = 0;
+ virtual int on_send_asr_result(pid_t pid, int event, std::string asr_result) = 0;
+ virtual int on_send_result(pid_t pid,
std::string display_text, std::string utterance_text, std::string result_json) = 0;
- virtual int on_send_recognition_result(int pid, int result) = 0;
- virtual int on_start_streaming_audio_data(int pid, int type) = 0;
- virtual int on_stop_streaming_audio_data(int pid, int type) = 0;
- virtual int on_update_voice_feedback_state(int pid, int state) = 0;
- virtual int on_send_assistant_specific_command(int pid, std::string command) = 0;
- virtual int on_set_background_volume(int pid, double ratio) = 0;
- virtual int on_set_preprocessing_allow_mode(int pid, int mode, std::string app_id) = 0;
- virtual int on_send_preprocessing_result(int pid, int result) = 0;
- virtual int on_set_wake_word_audio_require_flag(int pid, int require) = 0;
- virtual int on_set_assistant_language(int pid, std::string language) = 0;
- virtual int on_add_wake_word(int pid, std::string wake_word, std::string language) = 0;
- virtual int on_remove_wake_word(int pid, std::string wake_word, std::string language) = 0;
+ virtual int on_send_recognition_result(pid_t pid, int result) = 0;
+ virtual int on_start_streaming_audio_data(pid_t pid, int type) = 0;
+ virtual int on_stop_streaming_audio_data(pid_t pid, int type) = 0;
+ virtual int on_update_voice_feedback_state(pid_t pid, int state) = 0;
+ virtual int on_send_assistant_specific_command(pid_t pid, std::string command) = 0;
+ virtual int on_set_background_volume(pid_t pid, double ratio) = 0;
+ virtual int on_set_preprocessing_allow_mode(pid_t pid, int mode, std::string app_id) = 0;
+ virtual int on_send_preprocessing_result(pid_t pid, int result) = 0;
+ virtual int on_set_wake_word_audio_require_flag(pid_t pid, int require) = 0;
+ virtual int on_set_assistant_language(pid_t pid, std::string language) = 0;
+ virtual int on_add_wake_word(pid_t pid, std::string wake_word, std::string language) = 0;
+ virtual int on_remove_wake_word(pid_t pid, std::string wake_word, std::string language) = 0;
- virtual int on_ui_initialize(int pid) = 0;
- virtual int on_ui_deinitialize(int pid) = 0;
+ virtual int on_ui_initialize(pid_t pid) = 0;
+ virtual int on_ui_deinitialize(pid_t pid) = 0;
virtual int on_ui_change_assistant(std::string app_id) = 0;
};
{}
virtual ~CServiceMain() {}
- int mas_client_get_audio_format(int pid, int* rate, int* channel, int* audio_type);
- int mas_client_get_audio_source_type(int pid, char** type);
- int mas_client_send_preprocessing_information(int pid);
- int mas_client_send_voice_key_status_change(int pid, ma_voice_key_status_e status);
- int mas_client_request_speech_data(int pid);
- int mas_client_send_asr_result(int pid, int event, const char* asr_result);
- int mas_client_send_result(int pid, const char* display_text,
+ int client_get_audio_format(pid_t pid, int* rate, int* channel, int* audio_type);
+ int client_get_audio_source_type(pid_t pid, char** type);
+ int client_send_preprocessing_information(pid_t pid);
+ int client_send_voice_key_status_change(pid_t pid, ma_voice_key_status_e status);
+ int client_request_speech_data(pid_t pid);
+ int client_send_asr_result(pid_t pid, int event, const char* asr_result);
+ int client_send_result(pid_t pid, const char* display_text,
const char* utterance_text, const char* result_json);
- int mas_client_send_recognition_result(int pid, int result);
- int mas_client_start_streaming_audio_data(int pid, int type);
- int mas_client_stop_streaming_audio_data(int pid, int type);
- int mas_client_update_voice_feedback_state(int pid, int state);
- int mas_client_set_assistant_specific_command(int pid, const char *command);
- int mas_client_set_background_volume(int pid, double ratio);
- int mas_client_set_preprocessing_allow_mode(int pid, ma_preprocessing_allow_mode_e mode, const char* appid);
- int mas_client_send_preprocessing_result(int pid, bool result);
- int mas_client_set_wake_word_audio_require_flag(int pid, bool require);
- int mas_client_set_assistant_language(int pid, const char* language);
- int mas_client_add_wake_word(int pid, const char* wake_word, const char* language);
- int mas_client_remove_wake_word(int pid, const char* wake_word, const char* language);
- int mas_ui_client_initialize(int pid);
- int mas_ui_client_deinitialize(int pid);
- int mas_ui_client_change_assistant(const char* appid);
- int mas_get_current_client_pid();
- int mas_get_current_preprocessing_client_pid();
- int mas_get_client_pid_by_wakeup_word(const char *wakeup_word);
- int mas_get_client_pid_by_appid(const char *appid);
- std::string mas_get_client_appid_by_pid(int pid);
- bool mas_get_client_custom_ui_option_by_appid(const char *appid);
- const char* mas_get_client_appid_by_wakeup_word(const char *wakeup_word);
- int mas_set_current_client_by_wakeup_word(const char *wakeup_word);
- int mas_set_current_client_by_appid(const char *appid);
- int mas_launch_client_by_wakeup_word(const char *wakeup_word);
- int mas_prelaunch_default_assistant();
- int mas_set_current_service_state(ma_service_state_e state);
- int mas_bring_client_to_foreground(const char* appid);
- ma_service_state_e mas_get_current_service_state();
- int mas_launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode);
- int mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT event);
- int mas_update_voice_key_support_mode();
-
- virtual int on_initialize(int pid) override;
- virtual int on_deinitialize(int pid) override;
- virtual int on_get_audio_format(int pid, int& rate, int& channel, int& audio_type) override;
- virtual int on_get_audio_source_type(int pid, std::string& type) override;
- virtual int on_send_asr_result(int pid, int event, std::string asr_result) override;
- virtual int on_send_result(int pid, std::string display_text,
+ int client_send_recognition_result(pid_t pid, int result);
+ int client_start_streaming_audio_data(pid_t pid, int type);
+ int client_stop_streaming_audio_data(pid_t pid, int type);
+ int client_update_voice_feedback_state(pid_t pid, int state);
+ int client_set_assistant_specific_command(pid_t pid, const char *command);
+ int client_set_background_volume(pid_t pid, double ratio);
+ int client_set_preprocessing_allow_mode(pid_t pid, ma_preprocessing_allow_mode_e mode, const char* appid);
+ int client_send_preprocessing_result(pid_t pid, bool result);
+ int client_set_wake_word_audio_require_flag(pid_t pid, bool require);
+ int client_set_assistant_language(pid_t pid, const char* language);
+ int client_add_wake_word(pid_t pid, const char* wake_word, const char* language);
+ int client_remove_wake_word(pid_t pid, const char* wake_word, const char* language);
+ int ui_client_initialize(pid_t pid);
+ int ui_client_deinitialize(pid_t pid);
+ int ui_client_change_assistant(const char* appid);
+ pid_t get_current_client_pid();
+ pid_t get_current_preprocessing_client_pid();
+ pid_t get_current_audio_processing_pid();
+ int get_client_pid_by_wakeup_word(const char *wakeup_word);
+ int get_client_pid_by_appid(const char *appid);
+ std::string get_client_appid_by_pid(pid_t pid);
+ bool get_client_custom_ui_option_by_appid(const char *appid);
+ const char* get_client_appid_by_wakeup_word(const char *wakeup_word);
+ int set_current_client_by_wakeup_word(const char *wakeup_word);
+ int set_current_client_by_appid(const char *appid);
+ int launch_client_by_wakeup_word(const char *wakeup_word);
+ int prelaunch_default_assistant();
+ int set_current_service_state(ma_service_state_e state);
+ int bring_client_to_foreground(const char* appid);
+ ma_service_state_e get_current_service_state();
+ int launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode);
+ int process_preprocessing_state_event(PREPROCESSING_STATE_EVENT event);
+ int update_voice_key_support_mode();
+
+ virtual int on_initialize(pid_t pid) override;
+ virtual int on_deinitialize(pid_t pid) override;
+ virtual int on_get_audio_format(pid_t pid, int& rate, int& channel, int& audio_type) override;
+ virtual int on_get_audio_source_type(pid_t pid, std::string& type) override;
+ virtual int on_send_asr_result(pid_t pid, int event, std::string asr_result) override;
+ virtual int on_send_result(pid_t pid, std::string display_text,
std::string utterance_text, std::string result_json) override;
- virtual int on_send_recognition_result(int pid, int result) override;
- virtual int on_start_streaming_audio_data(int pid, int type) override;
- virtual int on_stop_streaming_audio_data(int pid, int type) override;
- virtual int on_update_voice_feedback_state(int pid, int state) override;
- virtual int on_send_assistant_specific_command(int pid, std::string command) override;
- virtual int on_set_background_volume(int pid, double ratio) override;
- virtual int on_set_preprocessing_allow_mode(int pid, int mode, std::string app_id) override;
- virtual int on_send_preprocessing_result(int pid, int result) override;
- virtual int on_set_wake_word_audio_require_flag(int pid, int require) override;
- virtual int on_set_assistant_language(int pid, std::string language) override;
- virtual int on_add_wake_word(int pid, std::string wake_word, std::string language) override;
- virtual int on_remove_wake_word(int pid, std::string wake_word, std::string language) override;
-
- virtual int on_ui_initialize(int pid) override;
- virtual int on_ui_deinitialize(int pid) override;
+ virtual int on_send_recognition_result(pid_t pid, int result) override;
+ virtual int on_start_streaming_audio_data(pid_t pid, int type) override;
+ virtual int on_stop_streaming_audio_data(pid_t pid, int type) override;
+ virtual int on_update_voice_feedback_state(pid_t pid, int state) override;
+ virtual int on_send_assistant_specific_command(pid_t pid, std::string command) override;
+ virtual int on_set_background_volume(pid_t pid, double ratio) override;
+ virtual int on_set_preprocessing_allow_mode(pid_t pid, int mode, std::string app_id) override;
+ virtual int on_send_preprocessing_result(pid_t pid, int result) override;
+ virtual int on_set_wake_word_audio_require_flag(pid_t pid, int require) override;
+ virtual int on_set_assistant_language(pid_t pid, std::string language) override;
+ virtual int on_add_wake_word(pid_t pid, std::string wake_word, std::string language) override;
+ virtual int on_remove_wake_word(pid_t pid, std::string wake_word, std::string language) override;
+
+ virtual int on_ui_initialize(pid_t pid) override;
+ virtual int on_ui_deinitialize(pid_t pid) override;
virtual int on_ui_change_assistant(std::string app_id) override;
bool app_create(void *data);
ma_preprocessing_allow_mode_e preprocessing_allow_mode{MA_PREPROCESSING_ALLOW_NONE};
char preprocessing_allow_appid[MAX_APPID_LEN];
+
+ boost::optional<std::string> audio_processing_appid;
} ma_client_info;
ma_client_info mClientInfo[MAX_MACLIENT_INFO_NUM];
return ret;
}
+
+boost::optional<pid_t> CApplicationManagerAul::get_pid_by_appid(const std::string& appid)
+{
+ boost::optional<pid_t> ret;
+
+ pid_t pid = aul_app_get_pid(appid.c_str());
+ if (pid >= 0) {
+ ret = pid;
+ }
+
+ return ret;
+}
\ No newline at end of file
return 0;
}
-int CClientManager::create_client(int pid, std::string appid)
+int CClientManager::create_client(pid_t pid, std::string appid)
{
ma_client_s* data = NULL;
return 0;
}
-int CClientManager::destroy_client_by_pid(int pid)
+int CClientManager::destroy_client_by_pid(pid_t pid)
{
ma_client_s* client = find_client_by_pid(pid);
return destroy_client(client);
return NULL;
}
-ma_client_s* CClientManager::find_client_by_pid(int pid)
+ma_client_s* CClientManager::find_client_by_pid(pid_t pid)
{
ma_client_s *data = NULL;
return static_cast<ma_client_s*>(g_slist_nth_data(mClientList, index));
}
-int CClientManager::find_client_pid_by_index(unsigned int index)
+pid_t CClientManager::find_client_pid_by_index(unsigned int index)
{
- int pid = -1;
+ pid_t pid = -1;
ma_client_s* client = get_client_by_index(index);
if (client) {
pid = client->pid;
return pid;
}
-int CClientManager::find_client_pid_by_appid(std::string appid)
+pid_t CClientManager::find_client_pid_by_appid(std::string appid)
{
- int pid = -1;
+ pid_t pid = -1;
if (nullptr == mApplicationManager) {
MAS_LOGE("ApplicationManager is NULL, can't check if app is running or not");
return pid;
}
-std::string CClientManager::find_client_appid_by_pid(int pid)
+std::string CClientManager::find_client_appid_by_pid(pid_t pid)
{
std::string appid;
bool CClientManager::check_client_validity_by_appid(std::string appid)
{
- int pid = find_client_pid_by_appid(appid);
+ pid_t pid = find_client_pid_by_appid(appid);
if (0 < pid) return true;
return false;
}
return 0;
}
-int CServiceIpcDbus::send_hello(int pid)
+int CServiceIpcDbus::send_hello(pid_t pid)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
"MESSAGE_PORT_ERROR_UNKNOWN");
}
-int CServiceIpcDbus::send_streaming_audio_data(int pid, int event, void* data, unsigned int data_size)
+int CServiceIpcDbus::send_streaming_audio_data(pid_t pid, int event, void* data, unsigned int data_size)
{
if (nullptr == mClientManager) {
MAS_LOGE("mClientManager variable is NULL");
bundle *b = bundle_create();
if (b) {
bundle_add_byte(b, "content", pending_buffer, pending_buffer_size);
- int ret = message_port_send_message(
- mClientManager->find_client_appid_by_pid(pid).c_str(), message_port, b);
- if (MESSAGE_PORT_ERROR_NONE != ret)
- masc_message_port_error(ret);
+ boost::optional<std::string> appid = mApplicationManager->get_appid_by_pid(pid);
+ if (appid) {
+ int ret = message_port_send_message((*appid).c_str(), message_port, b);
+ if (MESSAGE_PORT_ERROR_NONE != ret)
+ masc_message_port_error(ret);
+ } else {
+ MAS_LOGE("AppID for PID %d not found!!!", pid);
+ }
pending_buffer_size = 0;
bundle_free(b);
bundle *b = bundle_create();
if (b) {
bundle_add_byte(b, "content", buffer, total_size);
- int ret = message_port_send_message(
- mClientManager->find_client_appid_by_pid(pid).c_str(), message_port, b);
- if (MESSAGE_PORT_ERROR_NONE != ret)
- masc_message_port_error(ret);
+ boost::optional<std::string> appid = mApplicationManager->get_appid_by_pid(pid);
+ if (appid) {
+ int ret = message_port_send_message((*appid).c_str(), message_port, b);
+ if (MESSAGE_PORT_ERROR_NONE != ret)
+ masc_message_port_error(ret);
+ } else {
+ MAS_LOGE("AppID for PID %d not found!!!", pid);
+ }
bundle_free(b);
} else {
return 0;
}
-int CServiceIpcDbus::change_active_state(int pid, int state)
+int CServiceIpcDbus::change_active_state(pid_t pid, int state)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::send_preprocessing_information(int pid, const char* app_id)
+int CServiceIpcDbus::send_preprocessing_information(pid_t pid, const char* app_id)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::send_streaming_section_changed(int pid, int section)
+int CServiceIpcDbus::send_streaming_section_changed(pid_t pid, int section)
{
if (nullptr == mClientManager) {
MAS_LOGE("mClientManager variable is NULL");
return 0;
}
-int CServiceIpcDbus::send_preprocessing_result(int pid, bool result)
+int CServiceIpcDbus::send_preprocessing_result(pid_t pid, bool result)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::send_wakeup_engine_command(int pid, const char* command)
+int CServiceIpcDbus::send_wakeup_engine_command(pid_t pid, const char* command)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::change_service_state(int pid, int state)
+int CServiceIpcDbus::change_service_state(pid_t pid, int state)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::change_voice_key_status(int pid, int status)
+int CServiceIpcDbus::change_voice_key_status(pid_t pid, int status)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return result;
}
-int CServiceIpcDbus::masc_ui_dbus_send_asr_result(int pid, int event, const char* asr_result)
+int CServiceIpcDbus::masc_ui_dbus_send_asr_result(pid_t pid, int event, const char* asr_result)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::masc_ui_dbus_send_result(int pid, const char* display_text, const char* utterance_text, const char* result_json)
+int CServiceIpcDbus::masc_ui_dbus_send_result(pid_t pid, const char* display_text, const char* utterance_text, const char* result_json)
{
if (0 != __dbus_check()) {
return -1; //MA_ERROR_OPERATION_FAILED;
return 0;
}
-int CServiceIpcDbus::masc_ui_dbus_send_recognition_result(int pid, int result)
+int CServiceIpcDbus::masc_ui_dbus_send_recognition_result(pid_t pid, int result)
{
if (0 != __dbus_check()) {
return -1; //MAS_ERROR_OPERATION_FAILED;
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
int ret = 0;
if (FALSE == dbus_message_get_args(msg, &err,
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
int ret = 0;
if (FALSE == dbus_message_get_args(msg, &err,
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
int rate, channel, audio_type;
int ret;
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
std::string type;
int ret;
DBusError err;
dbus_error_init(&err);
- int pid, event;
+ pid_t pid, event;
char *asr_result;
int ret = 0;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
char* display_text;
char* utterance_text;
char* result_json;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int result;
int ret = 0;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int type;
int ret = 0;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int type;
int ret = 0;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int state;
int ret = 0;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
char* command;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
double ratio;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
int mode;
char* app_id;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
int result;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
int require;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
char* language;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
char* wake_word;
char* language;
DBusError err;
dbus_error_init(&err);
- int pid;
+ pid_t pid;
int ret = 0;
char* wake_word;
char* language;
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
int ret = 0;
if (FALSE == dbus_message_get_args(msg, &err,
DBusError err;
dbus_error_init(&err);
- int pid = -1;
+ pid_t pid = -1;
int ret = 0;
if (FALSE == dbus_message_get_args(msg, &err,
return ret;
}
-int CServiceMain::mas_client_get_audio_format(int pid, int* rate, int* channel, int* audio_type)
+int CServiceMain::client_get_audio_format(pid_t pid, int* rate, int* channel, int* audio_type)
{
MAS_LOGD("[Enter] pid(%d)", pid);
}
#define MAX_LOCAL_VARIABLE_STRING_LEN 256
-int CServiceMain::mas_client_get_audio_source_type(int pid, char** type)
+int CServiceMain::client_get_audio_source_type(pid_t pid, char** type)
{
MAS_LOGD("[Enter] pid(%d)", pid);
return ret;
}
-int CServiceMain::mas_client_send_preprocessing_information(int pid)
+int CServiceMain::client_send_preprocessing_information(pid_t pid)
{
int ret = -1;
MAS_LOGD("[Enter] pid(%d)", pid);
return ret;
}
-int CServiceMain::mas_client_send_voice_key_status_change(int pid, ma_voice_key_status_e status)
+int CServiceMain::client_send_voice_key_status_change(pid_t pid, ma_voice_key_status_e status)
{
int ret = -1;
MAS_LOGD("[Enter] pid(%d)", pid);
return ret;
}
-int CServiceMain::mas_client_send_asr_result(int pid, int event, const char* asr_result)
+int CServiceMain::client_send_asr_result(pid_t pid, int event, const char* asr_result)
{
MAS_LOGD("[Enter] pid(%d), event(%d), asr_result(%s)", pid, event, asr_result);
int ret = mServiceIpc.masc_ui_dbus_send_asr_result(pid, event, asr_result);
return ret;
}
-int CServiceMain::mas_client_send_result(int pid, const char* display_text,
+int CServiceMain::client_send_result(pid_t pid, const char* display_text,
const char* utterance_text, const char* result_json)
{
MAS_LOGD("[Enter] pid(%d), display_text(%s), utterance_text(%s), result_json(%s)", pid, display_text, utterance_text, result_json);
return ret;
}
-int CServiceMain::mas_client_send_recognition_result(int pid, int result)
+int CServiceMain::client_send_recognition_result(pid_t pid, int result)
{
MAS_LOGD("[Enter] pid(%d), result(%d)", pid, result);
int ret = mServiceIpc.masc_ui_dbus_send_recognition_result(pid, result);
return ret;
}
-int CServiceMain::mas_client_start_streaming_audio_data(int pid, int type)
+int CServiceMain::client_start_streaming_audio_data(pid_t pid, int type)
{
int ret = -1;
switch(type) {
case MA_AUDIO_STREAMING_DATA_TYPE_CURRENT_UTTERANCE:
ret = mServicePlugin.start_streaming_utterance_data();
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_UTTERANCE_STREAMING_STARTED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_UTTERANCE_STREAMING_STARTED);
break;
case MA_AUDIO_STREAMING_DATA_TYPE_PREVIOUS_UTTERANCE:
ret = mServicePlugin.start_streaming_previous_utterance_data();
break;
case MA_AUDIO_STREAMING_DATA_TYPE_FOLLOW_UP_SPEECH:
ret = mServicePlugin.start_streaming_follow_up_data();
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_FOLLOW_UP_STREAMING_STARTED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_FOLLOW_UP_STREAMING_STARTED);
break;
}
return ret;
}
-int CServiceMain::mas_client_stop_streaming_audio_data(int pid, int type)
+int CServiceMain::client_stop_streaming_audio_data(pid_t pid, int type)
{
int ret = -1;
switch(type) {
return ret;
}
-int CServiceMain::mas_client_update_voice_feedback_state(int pid, int state)
+int CServiceMain::client_update_voice_feedback_state(pid_t pid, int state)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_set_assistant_specific_command(int pid, const char *command)
+int CServiceMain::client_set_assistant_specific_command(pid_t pid, const char *command)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_set_background_volume(int pid, double ratio)
+int CServiceMain::client_set_background_volume(pid_t pid, double ratio)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_set_preprocessing_allow_mode(int pid, ma_preprocessing_allow_mode_e mode, const char* appid)
+int CServiceMain::client_set_preprocessing_allow_mode(pid_t pid, ma_preprocessing_allow_mode_e mode, const char* appid)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
}
}
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_ALLOW_MODE_CHANGED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_ALLOW_MODE_CHANGED);
return 0;
}
-int CServiceMain::mas_client_send_preprocessing_result(int pid, bool result)
+int CServiceMain::client_send_preprocessing_result(pid_t pid, bool result)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
if (result) {
MAS_LOGD("Preprocessing succeeded, bring (%s) to foreground", pid_appid.c_str());
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_SUCCEEDED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_SUCCEEDED);
} else {
MAS_LOGD("Preprocessing failed, bring (%s) to foreground", current_maclient_appid);
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_FAILED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_PREPROCESSING_FAILED);
}
if (current_maclient_appid) {
- int pid_by_appid = mClientManager.find_client_pid_by_appid(
+ pid_t pid_by_appid = mClientManager.find_client_pid_by_appid(
std::string{current_maclient_appid});
mServiceIpc.send_preprocessing_result(pid_by_appid, result);
}
return 0;
}
-int CServiceMain::mas_client_set_wake_word_audio_require_flag(int pid, bool require)
+int CServiceMain::client_set_wake_word_audio_require_flag(pid_t pid, bool require)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_set_assistant_language(int pid, const char* language)
+int CServiceMain::client_set_assistant_language(pid_t pid, const char* language)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_add_wake_word(int pid, const char* wake_word, const char* language)
+int CServiceMain::client_add_wake_word(pid_t pid, const char* wake_word, const char* language)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_client_remove_wake_word(int pid, const char* wake_word, const char* language)
+int CServiceMain::client_remove_wake_word(pid_t pid, const char* wake_word, const char* language)
{
std::string pid_appid;
boost::optional<std::string> appid_by_pid = mApplicationManager.get_appid_by_pid(pid);
return 0;
}
-int CServiceMain::mas_ui_client_initialize(int pid)
+int CServiceMain::ui_client_initialize(pid_t pid)
{
MAS_LOGD("[Enter] pid(%d)", pid);
return 0;
}
-int CServiceMain::mas_ui_client_deinitialize(int pid)
+int CServiceMain::ui_client_deinitialize(pid_t pid)
{
MAS_LOGD("[Enter] pid(%d)", pid);
return 0;
}
-int CServiceMain::mas_ui_client_change_assistant(const char* appid)
+int CServiceMain::ui_client_change_assistant(const char* appid)
{
MAS_LOGD("[Enter]");
return -1;
}
- bool use_custom_ui = mas_get_client_custom_ui_option_by_appid(appid);
+ bool use_custom_ui = get_client_custom_ui_option_by_appid(appid);
mServiceIpc.masc_ui_dbus_enable_common_ui(!use_custom_ui);
- mas_set_current_client_by_appid(appid);
- int pid = mas_get_client_pid_by_appid(appid);
+ set_current_client_by_appid(appid);
+ pid_t pid = get_client_pid_by_appid(appid);
if (pid != -1) {
- mas_bring_client_to_foreground(appid);
- mas_client_send_preprocessing_information(pid);
+ bring_client_to_foreground(appid);
+ client_send_preprocessing_information(pid);
if (MA_VOICE_KEY_STATUS_PRESSED == mLastVoiceKeyStatus) {
- mas_client_send_voice_key_status_change(pid, mLastVoiceKeyStatus);
+ client_send_voice_key_status_change(pid, mLastVoiceKeyStatus);
}
mServiceIpc.change_active_state(pid, MA_ACTIVE_STATE_ACTIVE);
0 < strlen(mClientInfo[loop].appid) &&
0 < strlen(mClientInfo[loop].wakeup_word[0])) {
if (strncmp(appid, mClientInfo[loop].appid, MAX_APPID_LEN) == 0) {
- mas_launch_client_by_appid(mClientInfo[loop].appid, CLIENT_LAUNCH_MODE_ACTIVATION);
+ launch_client_by_appid(mClientInfo[loop].appid, CLIENT_LAUNCH_MODE_ACTIVATION);
}
}
}
return 0;
}
-static int mas_assistant_info_cb(ma_assistant_info_s* info, void* user_data) {
+static int assistant_info_cb(ma_assistant_info_s* info, void* user_data) {
int ret = -1;
CServiceMain* service_main = static_cast<CServiceMain*>(user_data);
if (service_main) {
}
int CServiceMain::add_assistant_info(ma_assistant_info_s* info) {
- MAS_LOGD("__mas_assistant_info_cb called");
+ MAS_LOGD("__assistant_info_cb called");
if (NULL == info) {
MAS_LOGE("info NULL, returning");
MAS_LOGD("Couldn't find an empty slot for storing assistant info");
}
- MAS_LOGD("__mas_assistant_info_cb end");
+ MAS_LOGD("__assistant_info_cb end");
return 0;
}
mCurrentPreprocessingClientInfo = -1;
mWakeupClientAppId.clear();
- if (0 == mServiceConfig.get_assistant_info(mas_assistant_info_cb, this)) {
+ if (0 == mServiceConfig.get_assistant_info(assistant_info_cb, this)) {
for (int loop = 0; loop < MAX_MACLIENT_INFO_NUM; loop++) {
int inner_loop;
if (0 < strlen(mClientInfo[loop].appid)) {
return 0;
}
-int CServiceMain::mas_get_current_client_pid()
+int CServiceMain::get_current_client_pid()
{
int ret = -1;
if (mCurrentClientInfo >= 0 && mCurrentClientInfo < MAX_MACLIENT_INFO_NUM) {
return ret;
}
-int CServiceMain::mas_get_current_preprocessing_client_pid()
+pid_t CServiceMain::get_current_preprocessing_client_pid()
{
- int ret = -1;
+ pid_t ret = -1;
if (mCurrentPreprocessingClientInfo >= 0 && mCurrentPreprocessingClientInfo < MAX_MACLIENT_INFO_NUM) {
const char *appid = mClientInfo[mCurrentPreprocessingClientInfo].appid;
if (appid) {
return ret;
}
-int CServiceMain::mas_get_client_pid_by_appid(const char *appid)
+pid_t CServiceMain::get_current_audio_processing_pid()
{
- int ret = -1;
+ pid_t ret = -1;
+ if (mCurrentClientInfo >= 0 && mCurrentClientInfo < MAX_MACLIENT_INFO_NUM) {
+ boost::optional<std::string> audio_processing_appid =
+ mClientInfo[mCurrentClientInfo].audio_processing_appid;
+ if (audio_processing_appid) {
+ boost::optional<pid_t> optional_pid_t;
+ optional_pid_t = mApplicationManager.get_pid_by_appid((*audio_processing_appid).c_str());
+ if (optional_pid_t) {
+ ret = *optional_pid_t;
+ }
+ }
+ }
+ return ret;
+}
+
+pid_t CServiceMain::get_client_pid_by_appid(const char *appid)
+{
+ pid_t ret = -1;
if (appid) {
ret = mClientManager.find_client_pid_by_appid(std::string{appid});
return ret;
}
-bool CServiceMain::mas_get_client_custom_ui_option_by_appid(const char *appid)
+bool CServiceMain::get_client_custom_ui_option_by_appid(const char *appid)
{
bool ret = false;
for (int loop = 0; loop < MAX_MACLIENT_INFO_NUM; loop++) {
return ret;
}
-int CServiceMain::mas_get_client_pid_by_wakeup_word(const char *wakeup_word)
+int CServiceMain::get_client_pid_by_wakeup_word(const char *wakeup_word)
{
- const char *appid = mas_get_client_appid_by_wakeup_word(wakeup_word);
- return mas_get_client_pid_by_appid(appid);
+ const char *appid = get_client_appid_by_wakeup_word(wakeup_word);
+ return get_client_pid_by_appid(appid);
}
-const char* CServiceMain::mas_get_client_appid_by_wakeup_word(const char *wakeup_word)
+const char* CServiceMain::get_client_appid_by_wakeup_word(const char *wakeup_word)
{
int loop;
const char *appid = NULL;
return appid;
}
-int CServiceMain::mas_set_current_client_by_wakeup_word(const char *wakeup_word)
+int CServiceMain::set_current_client_by_wakeup_word(const char *wakeup_word)
{
int loop;
int ret = -1;
if (mCurrentClientInfo != prev_selection) {
if (prev_selection >= 0 && prev_selection < MAX_MACLIENT_INFO_NUM) {
- int pid = mas_get_client_pid_by_appid(mClientInfo[prev_selection].appid);
+ pid_t pid = get_client_pid_by_appid(mClientInfo[prev_selection].appid);
mServiceIpc.change_active_state(pid, MA_ACTIVE_STATE_INACTIVE);
}
}
return ret;
}
-int CServiceMain::mas_set_current_client_by_appid(const char *appid)
+int CServiceMain::set_current_client_by_appid(const char *appid)
{
int ret = -1;
int prev_selection = mCurrentClientInfo;
if (mCurrentClientInfo != prev_selection) {
if (prev_selection >= 0 && prev_selection < MAX_MACLIENT_INFO_NUM) {
- int pid = mas_get_client_pid_by_appid(mClientInfo[prev_selection].appid);
+ pid_t pid = get_client_pid_by_appid(mClientInfo[prev_selection].appid);
mServiceIpc.change_active_state(pid, MA_ACTIVE_STATE_INACTIVE);
}
}
return ret;
}
-int CServiceMain::mas_launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode)
+int CServiceMain::launch_client_by_appid(const char *appid, CLIENT_LAUNCH_MODE launch_mode)
{
int result = 0;
return result;
}
-int CServiceMain::mas_bring_client_to_foreground(const char* appid)
+int CServiceMain::bring_client_to_foreground(const char* appid)
{
int ret = 0;
return ret;
}
-int CServiceMain::mas_launch_client_by_wakeup_word(const char *wakeup_word)
+int CServiceMain::launch_client_by_wakeup_word(const char *wakeup_word)
{
- const char *appid = mas_get_client_appid_by_wakeup_word(wakeup_word);
- return mas_launch_client_by_appid(appid, CLIENT_LAUNCH_MODE_ACTIVATION);
+ const char *appid = get_client_appid_by_wakeup_word(wakeup_word);
+ return launch_client_by_appid(appid, CLIENT_LAUNCH_MODE_ACTIVATION);
}
-int CServiceMain::mas_prelaunch_default_assistant()
+int CServiceMain::prelaunch_default_assistant()
{
/* CHECK NEEDED : should the code segment below and activation logic above be moved to wakeup manger? */
boost::optional<bool> prelaunch_mode =
if (0 == mServicePlugin.get_default_assistant(&default_assistant)) {
if (!(mApplicationManager.is_application_running(default_assistant))) {
MAS_LOGD("prelaunching default_assistant_appid : %s", default_assistant);
- mas_launch_client_by_appid(default_assistant, CLIENT_LAUNCH_MODE_PRELAUNCH);
+ launch_client_by_appid(default_assistant, CLIENT_LAUNCH_MODE_PRELAUNCH);
}
}
}
return 0;
}
-int CServiceMain::mas_update_voice_key_support_mode()
+int CServiceMain::update_voice_key_support_mode()
{
/* CHECK NEEDED : should the code segment below and activation logic above be moved to wakeup manger? */
bool successful = false;
/* This might need to be read from settings in the future, but using macro for now */
//#define BRING_PREPROCESSING_ASSISTANT_TO_FRONT
-int CServiceMain::mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT event)
+int CServiceMain::process_preprocessing_state_event(PREPROCESSING_STATE_EVENT event)
{
const char* current_maclient_appid = NULL;
const char* preprocessing_allow_appid = NULL;
#ifndef BRING_PREPROCESSING_ASSISTANT_TO_FRONT
/* If there is no need to bring preprocessing assistant to front,
current_maclient should always be brought to front */
- mas_bring_client_to_foreground(current_maclient_appid);
+ bring_client_to_foreground(current_maclient_appid);
#endif
mCurrentPreprocessingState = PREPROCESSING_STATE_WAKEUP_PREPROCESS_DISABLED;
if (check_preprocessing_assistant_exists()) {
#ifdef BRING_PREPROCESSING_ASSISTANT_TO_FRONT
/* If preprocessing assistant does not exist, there is no way to enable
preprocessing assistant, so bring current maclient to front right away */
- mas_bring_client_to_foreground(current_maclient_appid);
+ bring_client_to_foreground(current_maclient_appid);
#endif
}
}
would have been brought to front already on wakeup event */
#ifdef BRING_PREPROCESSING_ASSISTANT_TO_FRONT
if (check_preprocessing_assistant_exists()) {
- mas_bring_client_to_foreground(current_maclient_appid);
+ bring_client_to_foreground(current_maclient_appid);
}
#endif
mCurrentPreprocessingState = PREPROCESSING_STATE_NONE;
mPreferenceManager.get_bool(WAKEUP_SETTINGS_KEY_PREPROCESSING_ASSISTANT_APPID);
if (preprocessing_assistant) {
MAS_LOGD("preprocessing_assistant_appid : %s", (*preprocessing_assistant).c_str());
- mas_bring_client_to_foreground((*preprocessing_assistant).c_str());
+ bring_client_to_foreground((*preprocessing_assistant).c_str());
}
}
#endif
#ifdef BRING_PREPROCESSING_ASSISTANT_TO_FRONT
if (PREPROCESSING_STATE_EVENT_UTTERANCE_STREAMING_STARTED == mCurrentPreprocessingState ||
PREPROCESSING_STATE_EVENT_FOLLOW_UP_STREAMING_STARTED == mCurrentPreprocessingState) {
- mas_bring_client_to_foreground(current_maclient_appid);
+ bring_client_to_foreground(current_maclient_appid);
}
#endif
mCurrentPreprocessingState = PREPROCESSING_STATE_NONE;
return 0;
}
-int CServiceMain::mas_set_current_service_state(ma_service_state_e state)
+int CServiceMain::set_current_service_state(ma_service_state_e state)
{
mCurrentServiceState = state;
int i;
for (i = 0; i < count; i++) {
- int pid = mClientManager.find_client_pid_by_index(i);
+ pid_t pid = mClientManager.find_client_pid_by_index(i);
if (-1 != pid) {
int ret = mServiceIpc.change_service_state(pid, state);
return 0;
}
-ma_service_state_e CServiceMain::mas_get_current_service_state()
+ma_service_state_e CServiceMain::get_current_service_state()
{
return mCurrentServiceState;
}
mClientManager.set_application_manager(&mApplicationManager);
mServiceIpc.set_client_manager(&mClientManager);
+ mServiceIpc.set_application_manager(&mApplicationManager);
mServiceIpc.set_service_ipc_observer(this);
mServicePlugin.set_service_ipc(&mServiceIpc);
process_activated_setting();
- mas_prelaunch_default_assistant();
- mas_update_voice_key_support_mode();
+ prelaunch_default_assistant();
+ update_voice_key_support_mode();
/* For the case of preprocessing assistant, it always have to be launched beforehand */
boost::optional<std::string> preprocessing_assistant =
mPreferenceManager.get_string(WAKEUP_SETTINGS_KEY_PREPROCESSING_ASSISTANT_APPID);
if (preprocessing_assistant) {
MAS_LOGD("prelaunching preprocessing_assistant_appid : %s", (*preprocessing_assistant).c_str());
- mas_launch_client_by_appid((*preprocessing_assistant).c_str(), CLIENT_LAUNCH_MODE_PRELAUNCH);
+ launch_client_by_appid((*preprocessing_assistant).c_str(), CLIENT_LAUNCH_MODE_PRELAUNCH);
}
if (!mPackageManagerHandle) {
return;
}
-int CServiceMain::on_initialize(int pid) {
+int CServiceMain::on_initialize(pid_t pid) {
MAS_LOGD("[Enter] pid(%d)", pid);
std::string pid_appid;
current_maclient_appid = mClientInfo[mCurrentClientInfo].appid;
}
- mas_client_send_preprocessing_information(pid);
+ client_send_preprocessing_information(pid);
if (MA_VOICE_KEY_STATUS_PRESSED == mLastVoiceKeyStatus) {
- mas_client_send_voice_key_status_change(pid, mLastVoiceKeyStatus);
+ client_send_voice_key_status_change(pid, mLastVoiceKeyStatus);
}
if (current_maclient_appid && 0 == pid_appid.compare(current_maclient_appid)) {
MAS_LOGD("MA client with current maclient appid connected!");
if (0 == mWakeupClientAppId.compare(pid_appid)) {
mWakeupClientAppId.clear();
mServiceIpc.change_active_state(pid, MA_ACTIVE_STATE_ACTIVE);
- mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
+ process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
} else {
MAS_LOGE("[ERROR] mWakeupClientAppId and appid differ : %s %s",
mWakeupClientAppId.c_str(), pid_appid.c_str());
MAS_LOGD("MA client connected, but its appid does not match with current maclient");
}
- mServiceIpc.change_service_state(pid, mas_get_current_service_state());
+ mServiceIpc.change_service_state(pid, get_current_service_state());
} else {
MAS_LOGE("[ERROR] Fail to retrieve appid");
}
return 0;
}
-int CServiceMain::on_deinitialize(int pid) {
+int CServiceMain::on_deinitialize(pid_t pid) {
MAS_LOGD("[Enter] pid(%d)", pid);
mClientManager.destroy_client_by_pid(pid);
return 0;
}
-int CServiceMain::on_get_audio_format(int pid, int& rate, int& channel, int& audio_type) {
+int CServiceMain::on_get_audio_format(pid_t pid, int& rate, int& channel, int& audio_type) {
int main_rate, main_channel, main_audio_type;
- int ret = mas_client_get_audio_format(pid,
+ int ret = client_get_audio_format(pid,
&main_rate, &main_channel, &main_audio_type);
rate = main_rate;
channel = main_channel;
return ret;
}
-int CServiceMain::on_get_audio_source_type(int pid, std::string& type) {
+int CServiceMain::on_get_audio_source_type(pid_t pid, std::string& type) {
char *main_type = nullptr;
- int ret = mas_client_get_audio_source_type(pid, &main_type);
+ int ret = client_get_audio_source_type(pid, &main_type);
if (0 == ret && main_type) {
type = std::string{main_type};
}
return ret;
}
-int CServiceMain::on_send_asr_result(int pid, int event, std::string asr_result) {
- return mas_client_send_asr_result(pid, event, asr_result.c_str());
+int CServiceMain::on_send_asr_result(pid_t pid, int event, std::string asr_result) {
+ return client_send_asr_result(pid, event, asr_result.c_str());
}
-int CServiceMain::on_send_result(int pid, std::string display_text,
+int CServiceMain::on_send_result(pid_t pid, std::string display_text,
std::string utterance_text, std::string result_json) {
- return mas_client_send_result(pid,
+ return client_send_result(pid,
display_text.c_str(), utterance_text.c_str(), result_json.c_str());
}
-int CServiceMain::on_send_recognition_result(int pid, int result) {
- return mas_client_send_recognition_result(pid, result);
+int CServiceMain::on_send_recognition_result(pid_t pid, int result) {
+ return client_send_recognition_result(pid, result);
}
-int CServiceMain::on_start_streaming_audio_data(int pid, int type) {
- return mas_client_start_streaming_audio_data(pid, type);
+int CServiceMain::on_start_streaming_audio_data(pid_t pid, int type) {
+ return client_start_streaming_audio_data(pid, type);
}
-int CServiceMain::on_stop_streaming_audio_data(int pid, int type) {
- return mas_client_stop_streaming_audio_data(pid, type);
+int CServiceMain::on_stop_streaming_audio_data(pid_t pid, int type) {
+ return client_stop_streaming_audio_data(pid, type);
}
-int CServiceMain::on_update_voice_feedback_state(int pid, int state) {
- return mas_client_update_voice_feedback_state(pid, state);
+int CServiceMain::on_update_voice_feedback_state(pid_t pid, int state) {
+ return client_update_voice_feedback_state(pid, state);
}
-int CServiceMain::on_send_assistant_specific_command(int pid, std::string command) {
- return mas_client_set_assistant_specific_command(pid, command.c_str());
+int CServiceMain::on_send_assistant_specific_command(pid_t pid, std::string command) {
+ return client_set_assistant_specific_command(pid, command.c_str());
}
-int CServiceMain::on_set_background_volume(int pid, double ratio) {
- return mas_client_set_background_volume(pid, ratio);
+int CServiceMain::on_set_background_volume(pid_t pid, double ratio) {
+ return client_set_background_volume(pid, ratio);
}
-int CServiceMain::on_set_preprocessing_allow_mode(int pid, int mode, std::string app_id) {
- return mas_client_set_preprocessing_allow_mode(pid,
+int CServiceMain::on_set_preprocessing_allow_mode(pid_t pid, int mode, std::string app_id) {
+ return client_set_preprocessing_allow_mode(pid,
static_cast<ma_preprocessing_allow_mode_e>(mode), app_id.c_str());
}
-int CServiceMain::on_send_preprocessing_result(int pid, int result) {
- return mas_client_send_preprocessing_result(pid, result);
+int CServiceMain::on_send_preprocessing_result(pid_t pid, int result) {
+ return client_send_preprocessing_result(pid, result);
}
-int CServiceMain::on_set_wake_word_audio_require_flag(int pid, int require) {
- return mas_client_set_wake_word_audio_require_flag(pid, require);
+int CServiceMain::on_set_wake_word_audio_require_flag(pid_t pid, int require) {
+ return client_set_wake_word_audio_require_flag(pid, require);
}
-int CServiceMain::on_set_assistant_language(int pid, std::string language) {
- return mas_client_set_assistant_language(pid, language.c_str());
+int CServiceMain::on_set_assistant_language(pid_t pid, std::string language) {
+ return client_set_assistant_language(pid, language.c_str());
}
-int CServiceMain::on_add_wake_word(int pid, std::string wake_word, std::string language) {
- return mas_client_add_wake_word(pid, wake_word.c_str(), language.c_str());
+int CServiceMain::on_add_wake_word(pid_t pid, std::string wake_word, std::string language) {
+ return client_add_wake_word(pid, wake_word.c_str(), language.c_str());
}
-int CServiceMain::on_remove_wake_word(int pid, std::string wake_word, std::string language) {
- return mas_client_remove_wake_word(pid, wake_word.c_str(), language.c_str());
+int CServiceMain::on_remove_wake_word(pid_t pid, std::string wake_word, std::string language) {
+ return client_remove_wake_word(pid, wake_word.c_str(), language.c_str());
}
-int CServiceMain::on_ui_initialize(int pid)
+int CServiceMain::on_ui_initialize(pid_t pid)
{
- return mas_ui_client_initialize(pid);
+ return ui_client_initialize(pid);
}
-int CServiceMain::on_ui_deinitialize(int pid)
+int CServiceMain::on_ui_deinitialize(pid_t pid)
{
- return mas_ui_client_deinitialize(pid);
+ return ui_client_deinitialize(pid);
}
int CServiceMain::on_ui_change_assistant(std::string app_id)
{
- return mas_ui_client_change_assistant(app_id.c_str());
+ return ui_client_change_assistant(app_id.c_str());
}
char* appid = static_cast<char*>(param->data);
MAS_LOGD("[ENTER] appid(%s)", appid);
- int pid = -1;
+ pid_t pid = -1;
if (!appid) return ECORE_CALLBACK_CANCEL;
CServicePlugin* plugin = param->plugin;
service_main = plugin->get_service_main();
}
if (service_ipc && service_main) {
- bool use_custom_ui = service_main->mas_get_client_custom_ui_option_by_appid(appid);
+ bool use_custom_ui = service_main->get_client_custom_ui_option_by_appid(appid);
bool ui_panel_enabled = false;
if (param->plugin) ui_panel_enabled = param->plugin->is_ui_panel_enabled();
if (ui_panel_enabled) {
service_ipc->masc_ui_dbus_change_assistant(appid);
}
- service_main->mas_set_current_client_by_appid(appid);
- if ((pid = service_main->mas_get_client_pid_by_appid(appid)) != -1) {
- service_main->mas_client_send_preprocessing_information(pid);
+ service_main->set_current_client_by_appid(appid);
+ if ((pid = service_main->get_client_pid_by_appid(appid)) != -1) {
+ service_main->client_send_preprocessing_information(pid);
service_ipc->change_active_state(pid, MA_ACTIVE_STATE_ACTIVE);
- service_main->mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
+ service_main->process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
} else {
// Appropriate MA Client not available, trying to launch new one
MAS_LOGD("MA Client with appid %s does not exist, launching client", appid);
- service_main->mas_launch_client_by_appid(appid, CLIENT_LAUNCH_MODE_ACTIVATION);
+ service_main->launch_client_by_appid(appid, CLIENT_LAUNCH_MODE_ACTIVATION);
}
}
param = nullptr;
if (service_main) {
- const char* appid = service_main->mas_get_client_appid_by_wakeup_word(wakeup_word);
+ const char* appid = service_main->get_client_appid_by_wakeup_word(wakeup_word);
if (appid) {
param = new(std::nothrow) AsyncParam;
if (param) {
}
}
-static bool __validate_streaming_event_order(int pid, mas_speech_streaming_event_e *event)
+static bool __validate_streaming_event_order(pid_t pid, mas_speech_streaming_event_e *event)
{
bool ret = false;
if (plugin) service_main = plugin->get_service_main();
if (service_main) {
- service_main->mas_client_send_recognition_result(0, MA_RECOGNITION_RESULT_EVENT_ERROR);
+ service_main->client_send_recognition_result(0, MA_RECOGNITION_RESULT_EVENT_ERROR);
}
delete param;
}
if (service_ipc && service_main) {
- int pid = service_main->mas_get_current_client_pid();
- int preprocessing_pid = service_main->mas_get_current_preprocessing_client_pid();
+ /* First check if we have dedicated audio processing app for current client */
+ pid_t pid = service_main->get_current_audio_processing_pid();
+ /* If not, send audio data to the main client */
+ if (-1 == pid) pid = service_main->get_current_client_pid();
+
+ int preprocessing_pid = service_main->get_current_preprocessing_client_pid();
if (pid == -1) {
MAS_LOGE("[ERROR] Fail to retrieve pid of current MA client");
} else {
CServiceMain* service_main = plugin->get_service_main();
if (service_main) {
- service_main->mas_prelaunch_default_assistant();
- service_main->mas_update_voice_key_support_mode();
+ service_main->prelaunch_default_assistant();
+ service_main->update_voice_key_support_mode();
}
MAS_LOGD("[SUCCESS] __setting_changed_cb is called");
}
CServiceIpcDbus *service_ipc = plugin->get_service_ipc();
CServiceMain* service_main = plugin->get_service_main();
if (service_ipc && service_main) {
- int pid = service_main->mas_get_current_client_pid();
+ pid_t pid = service_main->get_current_client_pid();
int ret = service_ipc->send_streaming_section_changed(pid, (int)section);
if (0 != ret) {
MAS_LOGE("[ERROR] Fail to send streaming section changed information, ret(%d)", ret);
CServiceIpcDbus *service_ipc = plugin->get_service_ipc();
CServiceMain* service_main = plugin->get_service_main();
if (service_ipc && service_main) {
- int pid = service_main->mas_get_client_pid_by_appid(assistant_name);
+ pid_t pid = service_main->get_client_pid_by_appid(assistant_name);
if (-1 != pid) {
int ret = service_ipc->send_wakeup_engine_command(pid, command);
if (0 != ret) {
CServiceMain* service_main = plugin->get_service_main();
if (service_main) {
- service_main->mas_set_current_service_state(state);
+ service_main->set_current_service_state(state);
}
}
CServiceIpcDbus *service_ipc = plugin->get_service_ipc();
CServiceMain* service_main = plugin->get_service_main();
if (service_ipc && service_main) {
- int pid = service_main->mas_get_current_client_pid();
+ pid_t pid = service_main->get_current_client_pid();
int ret = service_ipc->change_voice_key_status(pid, status);
if (0 != ret) {
MAS_LOGE("[ERROR] Fail to send voice key status changed information, ret(%d)", ret);
CDummyApplicationManager() {};
virtual ~CDummyApplicationManager() {};
- bool is_application_running(pid_t pid) { return true; }
- bool is_application_running(const std::string& appid) { return true; }
- bool bring_app_to_foreground(const std::string& appid) { return true; }
- bool launch_app_async(const std::string& appid, bool background) { return true; }
- boost::optional<std::string> get_appid_by_pid(pid_t pid) { return boost::optional<std::string>{}; }
+ bool is_application_running(pid_t pid) override { return true; }
+ bool is_application_running(const std::string& appid) override { return true; }
+ bool bring_app_to_foreground(const std::string& appid) override { return true; }
+ bool launch_app_async(const std::string& appid, bool background) override { return true; }
+ boost::optional<std::string> get_appid_by_pid(pid_t pid) override { return boost::optional<std::string>{}; }
+ boost::optional<pid_t> get_pid_by_appid(const std::string& appid) override { return boost::optional<pid_t>{-1}; };
};
class StorageWithNoClient : public testing::Test
TEST_F(StorageWithNoClient, HasOneClientAfterCreate) {
const std::string arbitrary_client_appid{"Client1"};
- const int arbitrary_client_pid{1};
+ const pid_t arbitrary_client_pid{1};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
TEST_F(StorageWithNoClient, ValidityReturnsTrueForCreatedClient) {
const std::string arbitrary_client_appid{"Client1"};
- const int arbitrary_client_pid{1};
+ const pid_t arbitrary_client_pid{1};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
TEST_F(StorageWithNoClient, ValidityReturnsFalseForNotCreatedClient) {
const std::string arbitrary_client_appid{"Client1"};
- const int arbitrary_client_pid{1};
+ const pid_t arbitrary_client_pid{1};
const std::string noexist_client_appid{"Client987654321"};
void TearDown() override {
}
const std::string preloaded_client_appid_1{"Client1"};
- const int preloaded_client_pid_1{1};
+ const pid_t preloaded_client_pid_1{1};
CClientManager client_manager;
CDummyApplicationManager application_manager;
};
TEST_F(StorageWithOneClient, ReturnsExistingPIDByIndex) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
- int pid = client_manager.find_client_pid_by_index(0);
+ pid_t pid = client_manager.find_client_pid_by_index(0);
ASSERT_EQ(pid, preloaded_client_pid_1);
}
TEST_F(StorageWithOneClient, ReturnsCreatedPIDByIndex) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
- int pid = client_manager.find_client_pid_by_index(1);
+ pid_t pid = client_manager.find_client_pid_by_index(1);
ASSERT_EQ(pid, arbitrary_client_pid);
}
TEST_F(StorageWithOneClient, PreservesExistingItemNotRequestedForRemoval) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
client_manager.destroy_client_by_pid(arbitrary_client_pid);
- int pid = client_manager.find_client_pid_by_index(0);
+ pid_t pid = client_manager.find_client_pid_by_index(0);
ASSERT_EQ(pid, preloaded_client_pid_1);
}
TEST_F(StorageWithOneClient, PreservesCreatedItemNotRequestedForRemoval) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
client_manager.destroy_client_by_pid(preloaded_client_pid_1);
- int pid = client_manager.find_client_pid_by_index(0);
+ pid_t pid = client_manager.find_client_pid_by_index(0);
ASSERT_EQ(pid, arbitrary_client_pid);
}
TEST_F(StorageWithOneClient, ReturnsCorrectExistingPIDByAppID) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
- int pid = client_manager.find_client_pid_by_appid(preloaded_client_appid_1);
+ pid_t pid = client_manager.find_client_pid_by_appid(preloaded_client_appid_1);
ASSERT_EQ(pid, preloaded_client_pid_1);
}
TEST_F(StorageWithOneClient, ReturnsCorrectCreatedPIDByAppID) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
- int pid = client_manager.find_client_pid_by_appid(arbitrary_client_appid);
+ pid_t pid = client_manager.find_client_pid_by_appid(arbitrary_client_appid);
ASSERT_EQ(pid, arbitrary_client_pid);
}
TEST_F(StorageWithOneClient, ReturnsCorrectExistingAppIDByPID) {
const std::string arbitrary_client_appid{"Client2"};
- const int arbitrary_client_pid{2};
+ const pid_t arbitrary_client_pid{2};
client_manager.create_client(arbitrary_client_pid, arbitrary_client_appid);
return true;
}
boost::optional<std::string> get_appid_by_pid(pid_t pid) override { return boost::optional<std::string>{}; }
+ boost::optional<pid_t> get_pid_by_appid(const std::string& appid) override { return boost::optional<pid_t>{-1}; };
public:
boost::optional<std::string> launched_appid;
boost::optional<bool> launched_option_background;
ma_assistant_info_s info;
info.app_id = assistant_appid.c_str();
service.add_assistant_info(&info);
- service.mas_process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
+ service.process_preprocessing_state_event(PREPROCESSING_STATE_EVENT_ASSISTANT_ACTIVATED);
bool brought = false;
if (application_manager.brought_to_foreground_appid) {