diff --git a/sw/logalizer/ctrlstick.c b/sw/logalizer/ctrlstick.c index b633d356a1..fbe970650c 100644 --- a/sw/logalizer/ctrlstick.c +++ b/sw/logalizer/ctrlstick.c @@ -42,18 +42,52 @@ #define dbgprintf(x ...) #endif -#define TIMEOUT_PERIOD 100 +#define Bound(_x, _min, _max) { if (_x > _max) _x = _max; else if (_x < _min) _x = _min; } + +#define TIMEOUT_PERIOD 20 #define MB_ID 1 #define INPUT_DEV_MAX 15 -#define AXIS_COUNT 3 +#define AXIS_COUNT 4 -#define AXIS_RUDDER ABS_X -#define AXIS_ELEVATOR ABS_Y -#define AXIS_AILERON ABS_Z +#if 0 +// rumblepad 2 +#define AXIS_YAW ABS_X +#define AXIS_PITCH ABS_Y +#define AXIS_ROLL ABS_Z #define AXIS_THROTTLE ABS_RZ +#endif + +#if 1 +// e-sky 0905A simulator fms +#define AXIS_YAW ABS_X +#define AXIS_PITCH ABS_Y +#define AXIS_ROLL ABS_Z +#define AXIS_THROTTLE ABS_RY + +#define THROTTLE_MIN (-90) +#define THROTTLE_NEUTRAL (0) +#define THROTTLE_MAX (90) +#define ROLL_MIN (-122) +#define ROLL_NEUTRAL (-2) +#define ROLL_MAX (113) +#define PITCH_MIN (-109) +#define PITCH_NEUTRAL (2) +#define PITCH_MAX (109) +#define YAW_MIN (125) +#define YAW_NEUTRAL (-13 +#define YAW_MAX (115) +#endif + +#if 0 +// wingman force 3d +#define AXIS_YAW ABS_RZ +#define AXIS_PITCH ABS_Y +#define AXIS_ROLL ABS_X +#define AXIS_THROTTLE ABS_THROTTLE +#endif /* Helper for testing large bit masks */ #define TEST_BIT(bit,bits) (((bits[bit>>5]>>(bit&0x1f))&1)!=0) @@ -69,44 +103,27 @@ int aircraft_id = DEFAULT_AC_ID; /* Global variables about the initialized device */ int device_handle; -int axis_code[AXIS_COUNT] = {AXIS_AILERON, AXIS_ELEVATOR, AXIS_THROTTLE}; +int axis_code[AXIS_COUNT] = {AXIS_ROLL, AXIS_PITCH, AXIS_THROTTLE, AXIS_YAW}; int axis_min[AXIS_COUNT], axis_max[AXIS_COUNT]; int position[AXIS_COUNT] = {0, 0, 0}; struct ff_effect effect; +GMainLoop *ml; void parse_args(int argc, char * argv[]) { - int i; - - if (argc<2) goto l_help; - - for (i=1; i [