int msm_route_stream(int dir, int dec_id, int dev_id, int set) { LOGD("Route Stream %d %d %d %d",dir,dec_id,dev_id,set); if (dir==1) // PCM_PLAY elem_write(ctrls[STREAM],dec_id,dev_id,set); else elem_write(ctrls[RECORD],dec_id,dev_id,set); return 0; }
static pj_status_t write_children(const pj_json_list *list, const char quotes[2], struct write_state *st) { unsigned flags = (quotes[0]=='[') ? NO_NAME : 0; pj_status_t status; //CHECK( st->writer( st->indent_buf, st->indent, st->user_data) ); CHECK( st->writer( "es[0], 1, st->user_data) ); CHECK( st->writer( " ", 1, st->user_data) ); if (!pj_list_empty(list)) { pj_bool_t indent_added = PJ_FALSE; pj_json_elem *child = list->next; if (child->name.slen == 0) { /* Simple list */ while (child != (pj_json_elem*)list) { status = elem_write(child, st, flags); if (status != PJ_SUCCESS) return status; if (child->next != (pj_json_elem*)list) CHECK( st->writer( ", ", 2, st->user_data) ); child = child->next; } } else { if (st->indent < sizeof(st->indent_buf)) { st->indent += PJ_JSON_INDENT_SIZE; indent_added = PJ_TRUE; } CHECK( st->writer( "\n", 1, st->user_data) ); while (child != (pj_json_elem*)list) { status = elem_write(child, st, flags); if (status != PJ_SUCCESS) return status; if (child->next != (pj_json_elem*)list) CHECK( st->writer( ",\n", 2, st->user_data) ); else CHECK( st->writer( "\n", 1, st->user_data) ); child = child->next; } if (indent_added) { st->indent -= PJ_JSON_INDENT_SIZE; } CHECK( st->writer( st->indent_buf, st->indent, st->user_data) ); } } CHECK( st->writer( "es[1], 1, st->user_data) ); return PJ_SUCCESS; }
PJ_DEF(pj_status_t) pj_json_writef( const pj_json_elem *elem, pj_json_writer writer, void *user_data) { struct write_state st; PJ_ASSERT_RETURN(elem && writer, PJ_EINVAL); st.writer = writer; st.user_data = user_data; st.indent = 0; pj_memset(st.indent_buf, ' ', MAX_INDENT); pj_memset(st.space, ' ', PJ_JSON_NAME_MIN_LEN); return elem_write(elem, &st, 0); }
int msm_set_device_volume(int dev_id,int volume) { LOGD("Set Device Volume %d %d",dev_id, volume); elem_write(ctrls[DEVICEVOLUME], dev_id, volume,0); return 0; }
int msm_set_voice_rx_vol(int volume) { LOGD("Set Voice rx Volume %d",volume); elem_write(ctrls[VOICEVOLUME], 1, volume,0); return 0; }
int msm_set_voice_tx_mute(int mute) { LOGD("Set Voice tx Mute %d",mute); elem_write(ctrls[VOICEMUTE], 2,mute,0); // 2 is DIR_TX return 0; }
int msm_end_voice() { LOGD("End Voice"); elem_write(ctrls[VOICECALL], 0,0,0); return 0; }
int msm_start_voice() { LOGD("Start Voice"); elem_write(ctrls[VOICECALL], 1,0,0); return 0; }
int msm_set_volume(int dec_id, int vol) { LOGD("Set Volume %d %d",dec_id,vol); elem_write(ctrls[VOLUME], dec_id, vol, 0); return 0; }
int msm_route_voice(int rx,int tx,int set) { LOGD("Route Voice %d %d %d",tx,rx,set); elem_write(ctrls[VOICE],rx,tx,set); // tx and rx seem to be swapped here! return 0; }
int msm_en_device(int dev_id,int set) { LOGD("Enable device %d %d", dev_id,set); elem_write(mixer_device[dev_id].elem_id,set,0,0); return 0; }