glib-2.0
libxml-2.0
multi-assistant
+ vconf
)
# SET FLAG ---------------------------------------------------------------------------------------
void set_last_wakeup_event_info(wakeup_event_info info);
bool change_manager_state(wakeup_manager_state_e state);
+ wakeup_manager_state_e get_manager_state();
private:
class CEngineEventObserver : public IEngineEventObserver
{
audio_in_destroy(mAudioIn);
return -1;
}
+
+ ret = audio_in_pause(mAudioIn);
+ if (AUDIO_IO_ERROR_NONE != ret) {
+ MWR_LOGD("[Recorder ERROR] Fail to pause audio in : %d", ret);
+ }
#endif
return 0;
}
mStopRecorderThread.store(true);
mRecorderThread.join();
}
+#ifndef TV_PRODUCT
+ int ret = audio_in_pause(mAudioIn);
+ if (AUDIO_IO_ERROR_NONE != ret) {
+ MWR_LOGD("[Recorder ERROR] Fail to pause audio in : %d", ret);
+ }
+#endif
}
void CAudioManager::start_recording()
g_bt_extend_count = 0;
}
#else
+ int ret = audio_in_resume(mAudioIn);
+ if (AUDIO_IO_ERROR_NONE != ret) {
+ MWR_LOGD("[Recorder ERROR] Fail to resume audio in : %d", ret);
+ }
mStopRecorderThread.store(false);
MWR_LOGD("Starting recorder thread");
mRecorderThread = thread(&CAudioManager::recorder_thread_func, this);
{
MWR_LOGD("[ENTER]");
+ if (WAKEUP_MANAGER_STATE_INACTIVE != mWakeupManagerState)
+ return false;
+
change_manager_state(WAKEUP_MANAGER_STATE_LISTENING);
+ if (mWakeupEngineManager.get_audio_data_required()) {
+ mAudioManager.start_recording();
+ }
MWR_LOGD("[END]");
return true;
{
MWR_LOGD("[ENTER]");
+ if (WAKEUP_MANAGER_STATE_INACTIVE == mWakeupManagerState)
+ return false;
+
+ mAudioManager.stop_recording();
change_manager_state(WAKEUP_MANAGER_STATE_INACTIVE);
MWR_LOGD("[END]");
bool CWakeupManager::change_manager_state(wakeup_manager_state_e state)
{
+ mWakeupManagerState = state;
mWakeupEngineManager.update_manager_state(state);
return true;
}
+wakeup_manager_state_e CWakeupManager::get_manager_state()
+{
+ return mWakeupManagerState;
+}
+
bool CWakeupManager::update_voice_feedback_state(string appid, bool state)
{
MWR_LOGD("[ENTER]");
bool CWakeupManager::process_event(ma_plugin_event_e event, void* data, int len)
{
MWR_LOGD("[ENTER]");
+ if (WAKEUP_MANAGER_STATE_INACTIVE == mWakeupManagerState)
+ return false;
// LOCK REQUIRED
if (MA_PLUGIN_EVENT_VOICE_KEY_PRESSED == event) {
mVoiceKeyPressed = false;
mAudioManager.voice_key_pressed_set(mVoiceKeyPressed);
mAudioManager.finalize_speech_data();
+
if (mWakeupEngineManager.get_audio_data_required()) {
/* Restart recorder thread using standard mic */
mAudioManager.start_recording();
{
MWR_LOGD("[ENTER]");
if (nullptr == mWakeupManager) return false;
+ if (WAKEUP_MANAGER_STATE_INACTIVE == mWakeupManager->get_manager_state()) return false;
CAudioManager *audio_manager = mWakeupManager->get_audio_manager();
CWakeupEngineManager *engine_manager = mWakeupManager->get_engine_manager();
#include <aul.h>
#include <malloc.h>
#include <Ecore.h>
+#include <vconf.h>
#include <stdio.h>
#include <stdlib.h>
static const char *g_current_lang = "en_US";
+#define MULTI_ASSISTANT_SETTINGS_ACTIVATED "db/multi-assistant/activated"
#define MAX_MACLIENT_INFO_NUM 16
#define MAX_WAKEUP_WORDS_NUM 4
return 0;
}
+static void mas_active_state_changed_cb(keynode_t* key, void* data)
+{
+ int vconf_value = 0;
+ if (vconf_get_bool(MULTI_ASSISTANT_SETTINGS_ACTIVATED, &vconf_value) == 0) {
+ MAS_LOGD("multi-assistant active state : %d\n", vconf_value);
+
+ if (vconf_value) {
+ multi_assistant_service_plugin_activate();
+ } else {
+ multi_assistant_service_plugin_deactivate();
+ }
+ }
+}
+
static int init_wakeup(void)
{
- MAS_LOGD("[Enter] init_wakeup ");
+ MAS_LOGD("[Enter] init_wakeup");
int ret = mas_dbus_open_connection();
if (0 != ret) {
return -1;
}
- if (0 != multi_assistant_service_plugin_activate()) {
- MAS_LOGE("Fail to ws activate");
- return -1;
+ if (0 == vconf_notify_key_changed(MULTI_ASSISTANT_SETTINGS_ACTIVATED, mas_active_state_changed_cb, NULL)) {
+ /* Activate / deactivate according to the vconf key setting */
+ mas_active_state_changed_cb(NULL, NULL);
+ } else {
+ /* Multi-assistant needs to be enabled by default, unless disabled explicitly */
+ multi_assistant_service_plugin_activate();
+ vconf_set_bool(MULTI_ASSISTANT_SETTINGS_ACTIVATED, 1);
+ vconf_notify_key_changed(MULTI_ASSISTANT_SETTINGS_ACTIVATED, mas_active_state_changed_cb, NULL);
}
return 0;
}
*/
- if (0 != multi_assistant_service_plugin_deactivate()) {
- MAS_LOGE("Fail to ws deactivate");
- }
+ vconf_ignore_key_changed(MULTI_ASSISTANT_SETTINGS_ACTIVATED, mas_active_state_changed_cb);
int ret = mas_dbus_close_connection();
if (0 != ret) {