Re: HID device calibration - how to override mapping?

From: Enrico Mattea
Date: Fri Jan 13 2012 - 17:19:48 EST


Hi el es, thank you for your answer.

Il 13/01/2012 18:09, el es ha scritto:

released - halfway - pressed
0 - (-32767)<-> (32767) - 0
but does it happen in reverse order when releasing pedal ?

Yes, it does - perfect reverse order.
seems the interpretation of this is up to the application really,
but /if/ the -32767 to 32767 change happens all around the 'halfway'
spot, maybe it is (in the app. engine) interpreted as 'change'
and it's effect applied to 'car engine' not directly, but integrated
(time-integral function applied) first ?
I don't think that the change is interpreted, because the clutch value seems to be computed directly, i.e. applying the app. calibration value on the the axis value received from the kernel;
even if I'm not completely familiar with the app.'s code, the attached code snippet is the interested part of the clutch handler of the app, and it doesn't seem to have any other function applied.
I'd say, for the clutch simulation it's the /change-in-time/ that
matters, not the /exact/ value; so no 'static' calibration is
ever going to be relevant (bar maybe the device telling us when the
pedal is fully pressed or fully released - in case app is not tracking
it)
I agree, but trying to calibrate the axis produces the 'jump' effect also on the clutch value, so that either the first half of the axis isn't taken into account, or it produces full clutch already at halfway, and then value 0 after the halfway spot.

Thank you for your support,
Ocirne
case GFCTRL_TYPE_JOY_AXIS:
clutch = joyInfo->ax[cmd[CMD_CLUTCH].val];
if (clutch > cmd[CMD_CLUTCH].max) {
clutch = cmd[CMD_CLUTCH].max;
} else if (clutch < cmd[CMD_CLUTCH].min) {
clutch = cmd[CMD_CLUTCH].min;
}
car->_clutchCmd = fabs(cmd[CMD_CLUTCH].pow *
pow(fabs((clutch - cmd[CMD_CLUTCH].minVal) /
(cmd[CMD_CLUTCH].max - cmd[CMD_CLUTCH].min)),
1.0f / cmd[CMD_CLUTCH].sens));
break;