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; }
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; } }