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;
}
Beispiel #2
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( &quotes[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( &quotes[1], 1, st->user_data) );

    return PJ_SUCCESS;
}
Beispiel #3
0
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;
}