int media_player_play(media_player_t *handle, media_play_param_t *play_param) { struct app_msg msg = {0}; os_sem return_notify; if (!handle || !handle->media_srv_handle) { return -EINVAL; } os_sem_init(&return_notify, 0, 1); play_param->player_handle = handle->media_srv_handle; msg.type = MSG_MEDIA_SRV_PLAY; msg.ptr = play_param; msg.callback = _media_service_play_callback; msg.sync_sem = &return_notify; if(!send_async_msg(MEDIA_SERVICE_NAME, &msg)) { goto error_exit; } if (os_sem_take(&return_notify, OS_FOREVER) != 0){ goto error_exit; } return 0; error_exit: return -EINVAL; }