Exemplo n.º 1
0
int16_t hilsim_input_adjust(char* inChannelName, int delta)
{
	switch (inChannelName[0]) {
	case 't':
		return hil_rc_input_adjust(inChannelName, THROTTLE_INPUT_CHANNEL, delta);
	case 'r':
		return hil_rc_input_adjust(inChannelName, RUDDER_INPUT_CHANNEL, delta);
	case 'e':
		return hil_rc_input_adjust(inChannelName, ELEVATOR_INPUT_CHANNEL, delta);
	case 'a':
		return hil_rc_input_adjust(inChannelName, AILERON_INPUT_CHANNEL, delta);
	case 'm':
		{
		switch (delta) {
		case 1: // switch mode to manual
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_LOW - 1;
			break;
		case 2: // switch mode to stabilised
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_LOW + 1;
			break;
		case 3: // switch mode to guided
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_HIGH + 1;
			break;
		case 4: // switch mode to failsafe
			udb_pwIn[FAILSAFE_INPUT_CHANNEL] = FAILSAFE_INPUT_MIN - 1;
			break;
		default:
			break;
		}
		return udb_pwIn[MODE_SWITCH_INPUT_CHANNEL];
		}
	case 's': // centre the flight 'stick'
		udb_pwIn[AILERON_INPUT_CHANNEL]  = udb_pwTrim[AILERON_INPUT_CHANNEL];
		udb_pwIn[ELEVATOR_INPUT_CHANNEL] = udb_pwTrim[ELEVATOR_INPUT_CHANNEL];
		udb_pwIn[RUDDER_INPUT_CHANNEL]   = udb_pwTrim[RUDDER_INPUT_CHANNEL];
		printf("\naileron, elevator, rudder = %i, %i, %i\n", udb_pwIn[AILERON_INPUT_CHANNEL], udb_pwIn[ELEVATOR_INPUT_CHANNEL], udb_pwIn[RUDDER_INPUT_CHANNEL]);
		return 0;
	default:
		return 0;
	}
	return 0;
}
Exemplo n.º 2
0
void hilsim_handle_key_input(char c)
{
	switch (c) {
		case 107: // Numpad +
			hil_rc_input_adjust("throttle", THROTTLE_INPUT_CHANNEL, KEYPRESS_INPUT_DELTA*2);
			break;
		case 109: // Numpad -
			hil_rc_input_adjust("throttle", THROTTLE_INPUT_CHANNEL, -KEYPRESS_INPUT_DELTA*2);
			break;
		case 97:  // Numpad 1
			hil_rc_input_adjust("rudder", RUDDER_INPUT_CHANNEL, KEYPRESS_INPUT_DELTA);
			break;
		case 99:  // Numpad 3
			hil_rc_input_adjust("rudder", RUDDER_INPUT_CHANNEL, -KEYPRESS_INPUT_DELTA);
			break;
		case 104: // Numpad 8
			hil_rc_input_adjust("elevator", ELEVATOR_INPUT_CHANNEL, KEYPRESS_INPUT_DELTA);
			break;
		case 98:  // Numpad 2
			hil_rc_input_adjust("elevator", ELEVATOR_INPUT_CHANNEL, -KEYPRESS_INPUT_DELTA);
			break;
		case 100: // Numpad 4
			hil_rc_input_adjust("aileron", AILERON_INPUT_CHANNEL, KEYPRESS_INPUT_DELTA);
			break;
		case 102: // Numpad 6
			hil_rc_input_adjust("aileron", AILERON_INPUT_CHANNEL, -KEYPRESS_INPUT_DELTA);
			break;
		case 101: // Numpad 5
			printf("\naileron, elevator, rudder = 0%%\n");
			udb_pwIn[AILERON_INPUT_CHANNEL] = udb_pwTrim[AILERON_INPUT_CHANNEL];
			udb_pwIn[ELEVATOR_INPUT_CHANNEL] = udb_pwTrim[ELEVATOR_INPUT_CHANNEL];
			udb_pwIn[RUDDER_INPUT_CHANNEL] = udb_pwTrim[RUDDER_INPUT_CHANNEL];
			printf("\naileron, elevator, rudder = %i, %i, %i\n", udb_pwIn[AILERON_INPUT_CHANNEL], udb_pwIn[ELEVATOR_INPUT_CHANNEL], udb_pwIn[RUDDER_INPUT_CHANNEL]);
			break;
				case 35: // '1' Numpad End (switch mode to manual)
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_LOW - 1;
			break;
				case 111: // '2' Numpad / (switch mode to stabilised)
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_LOW + 1;
			break;
				case 106: // '3' Numpad * (switch mode to guided)
			udb_pwIn[MODE_SWITCH_INPUT_CHANNEL] = MODE_SWITCH_THRESHOLD_HIGH + 1;
			break;
				case 36: // '4' Numpad Home (switch mode to failsafe)
			udb_pwIn[FAILSAFE_INPUT_CHANNEL] = FAILSAFE_INPUT_MIN - 1;
			break;
		default:
			break;
	}
}