-gboolean _asm_monitor_cb(gpointer *data)
-{
- session_monitor_t* monitor = (session_monitor_t*)data;
- debug_fenter();
-
- if (monitor) {
- if (monitor->fn) {
- monitor->fn(monitor->msg, monitor->event, monitor->data);
- }
- }
- debug_fleave();
-
- return FALSE;
-}
-
-gboolean _asm_watch_cb(gpointer *data)
-{
- session_watch_t* watch_h = (session_watch_t*)data;
- debug_fenter();
-
- if (watch_h) {
- if (watch_h->fn) {
- watch_h->fn(watch_h->event, watch_h->state, watch_h->data);
- }
- }
- debug_fleave();
-
- return FALSE;
-}
-
-static session_event_t _translate_from_event_src_to_mm_session(ASM_event_sources_t event_src)
-{
- switch (event_src)
- {
- case ASM_EVENT_SOURCE_CALL_START:
- case ASM_EVENT_SOURCE_CALL_END:
- return MM_SESSION_EVENT_CALL;
-
- case ASM_EVENT_SOURCE_EARJACK_UNPLUG:
- return MM_SESSION_EVENT_EARJACK_UNPLUG;
-
- case ASM_EVENT_SOURCE_RESOURCE_CONFLICT:
- return MM_SESSION_EVENT_RESOURCE_CONFLICT;
-
- case ASM_EVENT_SOURCE_ALARM_START:
- case ASM_EVENT_SOURCE_ALARM_END:
- return MM_SESSION_EVENT_ALARM;
-
- case ASM_EVENT_SOURCE_NOTIFY_START:
- case ASM_EVENT_SOURCE_NOTIFY_END:
- return MM_SESSION_EVENT_NOTIFICATION;
-
- case ASM_EVENT_SOURCE_EMERGENCY_START:
- case ASM_EVENT_SOURCE_EMERGENCY_END:
- return MM_SESSION_EVENT_EMERGENCY;
-
- case ASM_EVENT_SOURCE_MEDIA:
- case ASM_EVENT_SOURCE_OTHER_PLAYER_APP:
- default:
- return MM_SESSION_EVENT_MEDIA;
- }
-}
-
-static session_watch_event_t _translate_from_asm_event_to_mm_session(ASM_sound_events_t sound_event)
-{
- switch (sound_event)
- {
- case ASM_EVENT_CALL:
- return MM_SESSION_WATCH_EVENT_CALL;
- case ASM_EVENT_VIDEOCALL:
- return MM_SESSION_WATCH_EVENT_VIDEO_CALL;
- case ASM_EVENT_ALARM:
- return MM_SESSION_WATCH_EVENT_ALARM;
- default:
- return MM_SESSION_WATCH_EVENT_IGNORE;
- }
-}
-
-static ASM_sound_events_t _translate_from_mm_session_to_asm_event(session_watch_event_t watch_event)
-{
- switch (watch_event)
- {
- case MM_SESSION_WATCH_EVENT_CALL:
- return ASM_EVENT_CALL;
- case MM_SESSION_WATCH_EVENT_VIDEO_CALL:
- return ASM_EVENT_VIDEOCALL;
- case MM_SESSION_WATCH_EVENT_ALARM:
- return ASM_EVENT_ALARM;
- default:
- return ASM_EVENT_NONE;
- }
-}
-
-static ASM_sound_states_t _translate_from_mm_session_to_asm_state(session_watch_state_t watch_state)
-{
- switch (watch_state)
- {
- case MM_SESSION_WATCH_STATE_STOP:
- return ASM_STATE_STOP;
- case MM_SESSION_WATCH_STATE_PLAYING:
- return ASM_STATE_PLAYING;
- default:
- return ASM_STATE_NONE;
- }
-}
-
-ASM_cb_result_t
-asm_monitor_callback(int handle, ASM_event_sources_t event_src, ASM_sound_commands_t command, unsigned int sound_status, void* cb_data)
-{
- ASM_cb_result_t cb_res = ASM_CB_RES_NONE;
- session_monitor_t *monitor = (session_monitor_t*)cb_data;
-
- debug_log("monitor callback called for handle %d, event_src %d", handle, event_src);
- if(!monitor) {
- debug_log("monitor instance is null\n");
- return ASM_CB_RES_IGNORE;
- }
-
- switch(command)
- {
- case ASM_COMMAND_STOP:
- case ASM_COMMAND_PAUSE:
- //call session_callback_fn for stop here
- if(monitor->fn) {
- monitor->msg = MM_SESSION_MSG_STOP;
- monitor->event = _translate_from_event_src_to_mm_session (event_src);
- g_idle_add((GSourceFunc)_asm_monitor_cb, (gpointer)monitor);
- }
- cb_res = (command == ASM_COMMAND_STOP)? ASM_CB_RES_STOP : ASM_CB_RES_PAUSE;
- break;
-
- case ASM_COMMAND_RESUME:
- case ASM_COMMAND_PLAY:
- //call session_callback_fn for resume here
- if(monitor->fn) {
- monitor->msg = MM_SESSION_MSG_RESUME;
- monitor->event = _translate_from_event_src_to_mm_session (event_src);
- g_idle_add((GSourceFunc)_asm_monitor_cb, (gpointer)monitor);
- }
- cb_res = ASM_CB_RES_IGNORE;
- break;
-
- default:
- break;
- }
- return cb_res;
-}
-
-ASM_cb_result_t
-asm_watch_callback(int handle, ASM_sound_events_t sound_event, ASM_sound_states_t sound_state, void* cb_data)
-{
- ASM_cb_result_t cb_res = ASM_CB_RES_NONE;
- session_watch_t *watch_handle = (session_watch_t*)cb_data;
-
- debug_log("watch callback called for handle %d, sound_event %d, sound_state %d", handle, sound_event, sound_state);
- if(!watch_handle) {
- debug_log("watch_handle instance is null\n");
- return ASM_CB_RES_IGNORE;
- }
-
- switch(sound_state) {
- case ASM_STATE_PLAYING:
- if(watch_handle->fn) {
- watch_handle->event = _translate_from_asm_event_to_mm_session(sound_event);
- watch_handle->state = MM_SESSION_WATCH_STATE_PLAYING;
- if (watch_handle->event == MM_SESSION_WATCH_EVENT_IGNORE) {
- cb_res = ASM_CB_RES_IGNORE;
- debug_error("sound_event(%d) is not valid..", sound_event);
- } else {
- g_idle_add((GSourceFunc)_asm_watch_cb, (gpointer)watch_handle);
- }
- }
- break;
- case ASM_STATE_STOP:
- if(watch_handle->fn) {
- watch_handle->event = _translate_from_asm_event_to_mm_session(sound_event);
- watch_handle->state = MM_SESSION_WATCH_STATE_STOP;
- if (watch_handle->event == MM_SESSION_WATCH_EVENT_IGNORE) {
- debug_error("sound_event(%d) is not valid..", sound_event);
- cb_res = ASM_CB_RES_IGNORE;
- } else {
- g_idle_add((GSourceFunc)_asm_watch_cb, (gpointer)watch_handle);
- }
- }
- break;
- default:
- debug_error("sound_state(%d) is not valid..", sound_state);
- cb_res = ASM_CB_RES_IGNORE;
- break;
- }
- return cb_res;
-}
-