Esempio n. 1
0
FIO_status calibration_save(const char* path, calibrationType* cal){
	FIL fff; // File handler
	FIO_status res = FIO_OK;
	int i;
	if (SDFS_open(&fff, path, F_WR_CLEAR) != SDFS_OK) {
		return FIO_FILE_CREATE_ERROR;
	}
	json_write_string(0, "{", &fff);
	json_write_string(1, "\"" ATTR_CAL_SLIDERS "\":{", &fff);

	for (i = 0; i < SLIDERS_AMOUNT; i++) {
		json_write_object(2, slider_names[i],  &fff);
		json_write_number(3, ATTR_CAL_S_MIN, cal->calibr[i].min_in_value, 1, &fff);
		json_write_number(3, ATTR_CAL_S_MAX, cal->calibr[i].max_in_value, 1, &fff);
		json_write_number(3, ATTR_CAL_S_DELTA, cal->calibr[i].delta, 1, &fff);
		json_write_number(3, ATTR_CAL_S_DEAD, cal->calibr[i].dead, 1, &fff);
		json_write_number(3, ATTR_CAL_S_GAP, cal->calibr[i].gap, 0, &fff);
		if (i < SLIDERS_AMOUNT-1){
			json_write_string(2, "},", &fff);
		}else{
			json_write_string(2, "}", &fff);
		}
	}
	json_write_string(1, "}", &fff);
	json_write_string(0, "}", &fff);
	cal->Crc = getCRC(cal, sizeof(calibrationType));
	if (SDFS_close(&fff)!= SDFS_OK)
		return FIO_FILE_CLOSE_ERROR;
	return res;

}
Esempio n. 2
0
static void json_write( muse_port_t p, muse_cell thing ) 
{
	muse_env *env = p->env;
	if ( thing == MUSE_NIL )
		muse_pwrite( p, _csymbol(L"null") );
	else {
		switch ( _cellt(thing) ) {
			case MUSE_INT_CELL:
			case MUSE_FLOAT_CELL: json_write_number( p, thing ); break;
			case MUSE_TEXT_CELL: json_write_string( p, thing ); break;
			case MUSE_NATIVEFN_CELL:
				{
					if ( muse_functional_object_data( env, thing, 'vect' ) ) {
						json_write_vector( p, thing );
					} else if ( muse_functional_object_data( env, thing, 'hash' ) ) {
						json_write_hash( p, thing ); 
					} else if ( muse_functional_object_data( env, thing, 'mobj' ) ) {
						json_write_object( p, thing ); 
					} else {
						muse_raise_error( env, _csymbol(L"json:invalid-json-type"), thing );
					}
					break;
				}
			case MUSE_SYMBOL_CELL:
				{
					const muse_char *symname = muse_symbol_name( p->env, thing );
					if ( wcscmp( symname, L"true" ) || wcscmp( symname, L"false" ) ) {
						muse_pwrite( p, thing );
					} else {
						muse_raise_error( env, _csymbol(L"json:invalid-keyword"), thing );
					}
					break;
				}
		}
	}
}
Esempio n. 3
0
FIO_status curve_save(const char* path, curve_points_type* curve){
	FIL fff; // File handler
	FIO_status res = FIO_OK;
	if (SDFS_open(&fff, path, F_WR_CLEAR) != SDFS_OK) {
		return FIO_FILE_CREATE_ERROR;
	}
	json_write_string(0, "{", &fff);
	json_write_number(1, ATTR_CURVE_XW1, curve->xw1, 1, &fff);
	json_write_number(1, ATTR_CURVE_YW1, curve->yw1, 1, &fff);
	json_write_number(1, ATTR_CURVE_XW2, curve->xw2, 1, &fff);
	json_write_number(1, ATTR_CURVE_YW2, curve->yw2, 1, &fff);
	json_write_number(1, ATTR_CURVE_XW3, curve->xw3, 1, &fff);
	json_write_number(1, ATTR_CURVE_YW3, curve->yw3, 1, &fff);
	json_write_number(1, ATTR_CURVE_XB1, curve->xb1, 1, &fff);
	json_write_number(1, ATTR_CURVE_YB1, curve->yb1, 1, &fff);
	json_write_number(1, ATTR_CURVE_XB2, curve->xb2, 1, &fff);
	json_write_number(1, ATTR_CURVE_YB2, curve->yb2, 1, &fff);
	json_write_number(1, ATTR_CURVE_XB3, curve->xb3, 1, &fff);
	json_write_number(1, ATTR_CURVE_YB3, curve->yb3, 0, &fff);
	json_write_string(0, "}", &fff);

	curve->Crc = getCRC(curve, sizeof(curve_points_type));
	if (SDFS_close(&fff)!= SDFS_OK)
		return FIO_FILE_CLOSE_ERROR;
	return res;
}
Esempio n. 4
0
FIO_status preset_save(const char* path, presetType* pr){
	FIL fff; // File handler
	FIO_status res = FIO_OK;
	int i;
	if (SDFS_open(&fff, path, F_WR_CLEAR) != SDFS_OK) {
		return FIO_FILE_CREATE_ERROR;
	}
	json_write_string(0, "{", &fff);
	json_write_number(1, ATTR_CHANNEL, pr->MidiChannel, 1, &fff);
	json_write_string(1, "\"" ATTR_SPLIT "\":{", &fff);
	json_write_number(2, ATTR_SPLIT_ACTIVE, pr->SplitActive, 1, &fff);
	json_write_number(2, ATTR_SPLIT_KEY, pr->SplitKey, 1, &fff);
	json_write_number(2, ATTR_SPLIT_CHANNEL, pr->SplitChannel, 1, &fff);
	json_write_number(2, ATTR_SPLIT_OCTAVE, pr->SplitOctShift, 0, &fff);
	json_write_string(1, "},", &fff);
	json_write_number(1, ATTR_HIRES, pr->HighResEnable, 1, &fff);
	json_write_number(1, ATTR_ANALOGMIDI, pr->AnalogMidiEnable, 1, &fff);
	json_write_number(1, ATTR_SLOWKEYSOUND, pr->SlowKeySound, 1, &fff);
	json_write_number(1, ATTR_NOTEOFFDELAY1, pr->NoteOffDelay1, 1, &fff);
	json_write_number(1, ATTR_NOTEOFFDELAY127, pr->NoteOffDelay127, 1, &fff);
	json_write_number(1, ATTR_TRANSPOSE, pr->Transpose, 1, &fff);
	json_write_number(1, ATTR_OCTAVE, pr->OctaveShift, 1, &fff);
	json_write_string(1, "\"" ATTR_CURVE "\":{", &fff);
	json_write_number(2, ATTR_CURVE_XW1, pr->Curve.xw1, 1, &fff);
	json_write_number(2, ATTR_CURVE_YW1, pr->Curve.yw1, 1, &fff);
	json_write_number(2, ATTR_CURVE_XW2, pr->Curve.xw2, 1, &fff);
	json_write_number(2, ATTR_CURVE_YW2, pr->Curve.yw2, 1, &fff);
	json_write_number(2, ATTR_CURVE_XW3, pr->Curve.xw3, 1, &fff);
	json_write_number(2, ATTR_CURVE_YW3, pr->Curve.yw3, 1, &fff);
	json_write_number(2, ATTR_CURVE_XB1, pr->Curve.xb1, 1, &fff);
	json_write_number(2, ATTR_CURVE_YB1, pr->Curve.yb1, 1, &fff);
	json_write_number(2, ATTR_CURVE_XB2, pr->Curve.xb2, 1, &fff);
	json_write_number(2, ATTR_CURVE_YB2, pr->Curve.yb2, 1, &fff);
	json_write_number(2, ATTR_CURVE_XB3, pr->Curve.xb3, 1, &fff);
	json_write_number(2, ATTR_CURVE_YB3, pr->Curve.yb3, 0, &fff);
	json_write_string(1, "},", &fff);

	json_write_object(1, slider_names[SLIDER_PITCH],  &fff);
	json_write_number(2, ATTR_S_ACTIVE, pr->sliders[SLIDER_PITCH].active, 1, &fff);
	json_write_number(2, ATTR_S_CHANNEL, pr->sliders[SLIDER_PITCH].channel, 0, &fff);
	json_write_string(1, "},", &fff);

	json_write_object(1, slider_names[SLIDER_AT],  &fff);
	json_write_number(2, ATTR_S_ACTIVE, pr->sliders[SLIDER_AT].active, 1, &fff);
	json_write_number(2, ATTR_S_CHANNEL, pr->sliders[SLIDER_AT].channel, 1, &fff);
	json_write_number(2, ATTR_S_MIN, pr->sliders[SLIDER_AT].min_out_value, 1, &fff);
	json_write_number(2, ATTR_S_MAX, pr->sliders[SLIDER_AT].max_out_value, 0, &fff);
	json_write_string(1, "},", &fff);

	json_write_object(1, slider_names[SLIDER_MOD],  &fff);
	json_write_number(2, ATTR_S_ACTIVE, pr->sliders[SLIDER_MOD].active, 1, &fff);
	json_write_number(2, ATTR_S_REVERSE, pr->sliders[SLIDER_MOD].reverse, 1, &fff);
	json_write_number(2, ATTR_S_CHANNEL, pr->sliders[SLIDER_MOD].channel, 1, &fff);
	json_write_number(2, ATTR_S_EVENT, pr->sliders[SLIDER_MOD].event, 1, &fff);
	json_write_number(2, ATTR_S_MIN, pr->sliders[SLIDER_MOD].min_out_value, 1, &fff);
	json_write_number(2, ATTR_S_MAX, pr->sliders[SLIDER_MOD].max_out_value, 0, &fff);
	json_write_string(1, "},", &fff);


	json_write_string(1, "\"" ATTR_PEDALS "\":{", &fff);
	for (i = 0; i < PEDALS_N; i++) {
		json_write_object(2, slider_names[pedalsN[i]],  &fff);
		json_write_number(3, ATTR_S_ACTIVE, pr->sliders[pedalsN[i]].active, 1, &fff);
		json_write_number(3, ATTR_S_REVERSE, pr->sliders[pedalsN[i]].reverse, 1, &fff);
		json_write_number(3, ATTR_S_BINARY, pr->sliders[pedalsN[i]].binary, 1, &fff);
		json_write_number(3, ATTR_S_CHANNEL, pr->sliders[pedalsN[i]].channel, 1, &fff);
		json_write_number(3, ATTR_S_EVENT, pr->sliders[pedalsN[i]].event, 1, &fff);
		json_write_number(3, ATTR_S_MIN, pr->sliders[pedalsN[i]].min_out_value, 1, &fff);
		json_write_number(3, ATTR_S_MAX, pr->sliders[pedalsN[i]].max_out_value, 0, &fff);
		if (i<PEDALS_N-1){
			json_write_string(2, "},", &fff);
		}else{
			json_write_string(2, "}", &fff);
		}
	}
	json_write_string(1, "},", &fff);
	json_write_string(1, "\"" ATTR_SLIDERS "\":{", &fff);
	for (i = 0; i < SLIDERS_N; i++) {
		json_write_object(2, slider_names[slidersN[i]],  &fff);
		json_write_number(3, ATTR_S_ACTIVE, pr->sliders[slidersN[i]].active, 1, &fff);
		json_write_number(3, ATTR_S_REVERSE, pr->sliders[slidersN[i]].reverse, 1, &fff);
		json_write_number(3, ATTR_S_CHANNEL, pr->sliders[slidersN[i]].channel, 1, &fff);
		json_write_number(3, ATTR_S_EVENT, pr->sliders[slidersN[i]].event, 1, &fff);
		json_write_number(3, ATTR_S_MIN, pr->sliders[slidersN[i]].min_out_value, 1, &fff);
		json_write_number(3, ATTR_S_MAX, pr->sliders[slidersN[i]].max_out_value, 0, &fff);
		if (i<SLIDERS_N-1){
			json_write_string(2, "},", &fff);
		}else{
			json_write_string(2, "}", &fff);
		}
	}
	json_write_string(1, "},", &fff);
	json_write_string(1, "\"" ATTR_KNOBS "\":{", &fff);
	for (i = 0; i < KNOBS_N; i++) {
		json_write_object(2, slider_names[knobsN[i]],  &fff);
		json_write_number(3, ATTR_S_ACTIVE, pr->sliders[knobsN[i]].active, 1, &fff);
		json_write_number(3, ATTR_S_REVERSE, pr->sliders[knobsN[i]].reverse, 1, &fff);
		json_write_number(3, ATTR_S_CHANNEL, pr->sliders[knobsN[i]].channel, 1, &fff);
		json_write_number(3, ATTR_S_EVENT, pr->sliders[knobsN[i]].event, 1, &fff);
		json_write_number(3, ATTR_S_MIN, pr->sliders[knobsN[i]].min_out_value, 1, &fff);
		json_write_number(3, ATTR_S_MAX, pr->sliders[knobsN[i]].max_out_value, 0, &fff);
		if (i<KNOBS_N-1){
			json_write_string(2, "},", &fff);
		}else{
			json_write_string(2, "}", &fff);
		}
	}
	json_write_string(1, "},", &fff);
	json_write_string(1, "\"" ATTR_BUTTONS "\":{", &fff);
	for (i = 0; i < BUTTONS_AMOUNT; i++) {
		json_write_object(2, button_names[i],  &fff);
		json_write_number(3, ATTR_B_ACTIVE, pr->buttons[i].active, 1, &fff);
		json_write_number(3, ATTR_B_TYPE, pr->buttons[i].type, 1, &fff);
		json_write_number(3, ATTR_B_CHANNEL, pr->buttons[i].channel, 1, &fff);
		json_write_number(3, ATTR_B_EVENT, pr->buttons[i].event, 1, &fff);
		json_write_number(3, ATTR_B_ON, pr->buttons[i].on, 1, &fff);
		json_write_number(3, ATTR_B_OFF, pr->buttons[i].off, 0, &fff);
		if (i<BUTTONS_AMOUNT-1){
			json_write_string(2, "},", &fff);
		}else{
			json_write_string(2, "}", &fff);
		}
	}
	json_write_string(1, "}", &fff);
	json_write_string(0, "}", &fff);

	pr->Crc = getCRC(&pr, sizeof(presetType));

	if (SDFS_close(&fff)!= SDFS_OK)
		return FIO_FILE_CREATE_ERROR;
	return res;
}