MCPcopy Create free account
hub / github.com/OpenStickCommunity/GP2040-CE / postProcess

Method postProcess

lib/WiiExtension/extensions/ExtensionBase.cpp:59–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57}
58
59void ExtensionBase::postProcess() {
60 uint8_t i;
61
62 uint16_t minVal, maxVal, cenVal;
63 int16_t outVal;
64 int16_t centerOffset = 0;
65
66 for (i = 0; i < WiiAnalogs::WII_MAX_ANALOGS; ++i) {
67 // scale calibration values before using
68 if (i != WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION) {
69 outVal = applyCalibration(analogState[i], _analogCalibration[i].minimum, _analogCalibration[i].maximum, _analogCalibration[i].center);
70
71 minVal = map(_analogCalibration[i].minimum, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].origin-1, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].destination-1);
72 maxVal = map(_analogCalibration[i].maximum, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].origin-1, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].destination-1);
73 cenVal = map(_analogCalibration[i].center, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].origin-1, 0, _analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].destination-1);
74
75 if (isFirstRead) {
76 // stash the first read as the initial orientation. will reset on hotswap.
77 initialAnalogState[i] = outVal;
78
79 if (!_hasCalibrationData) {
80 cenVal = initialAnalogState[i];
81 }
82 }
83
84 if (_analogCalibration[i].useOffset) {
85 centerOffset = _analogCalibration[i].center-initialAnalogState[i];
86 } else {
87 centerOffset = 0;
88 }
89
90 if ((i != WiiAnalogs::WII_ANALOG_LEFT_TRIGGER) && (i != WiiAnalogs::WII_ANALOG_RIGHT_TRIGGER)) {
91 outVal = map(outVal, _analogCalibration[i].minimum, _analogCalibration[i].maximum, minVal, maxVal);
92 outVal = map(outVal, minVal, maxVal, 10, (_analogPrecision[WiiAnalogs::WII_ANALOG_CALIBRATION_PRECISION].destination-1));
93 } else {
94 outVal = bounds(outVal, 10, (_analogPrecision[i].destination-1));
95 }
96
97 if (outVal < 0) outVal = 10;
98 if (outVal > (_analogPrecision[i].destination-1)) outVal = (_analogPrecision[i].destination-1);
99#if WII_EXTENSION_DEBUG==true
100 if (i == WiiAnalogs::WII_ANALOG_LEFT_X) {
101 //printf("cur:%5d min=%5d:%5d max=%5d:%5d cen=%5d:%5d out:%5d off:%5d\n", analogState[i], _analogCalibration[i].minimum, minVal, _analogCalibration[i].maximum, maxVal, _analogCalibration[i].center, cenVal, outVal, centerOffset);
102 }
103#endif
104
105 analogState[i] = outVal;
106 }
107 }
108
109 if (isFirstRead) isFirstRead = false;
110
111#if WII_EXTENSION_DEBUG==true
112 //if ((_lastRead[0] != regRead[0]) || (_lastRead[1] != regRead[1]) || (_lastRead[2] != regRead[2]) || (_lastRead[3] != regRead[3])) {
113 // printf("Joy1 X=%4d Y=%4d Joy2 X=%4d Y=%4d\n", joy1X, joy1Y, joy2X, joy2Y);
114 //}
115 //printf("C Joy1 X=%5d Y=%5d Joy2 X=%5d Y=%5d U=%1d D=%1d L=%1d R=%1d TL=%5d TR=%4d\n", analogState[WiiAnalogs::WII_ANALOG_LEFT_X], analogState[WiiAnalogs::WII_ANALOG_LEFT_Y], analogState[WiiAnalogs::WII_ANALOG_RIGHT_X], analogState[WiiAnalogs::WII_ANALOG_RIGHT_Y], directionalPad[WiiDirectionalPad::WII_DIRECTION_UP], directionalPad[WiiDirectionalPad::WII_DIRECTION_DOWN], directionalPad[WiiDirectionalPad::WII_DIRECTION_LEFT], directionalPad[WiiDirectionalPad::WII_DIRECTION_RIGHT], analogState[WiiAnalogs::WII_ANALOG_TRIGGER_LEFT], analogState[WiiAnalogs::WII_ANALOG_TRIGGER_RIGHT]);
116 //printf("A=%1d B=%1d X=%1d Y=%1d ZL=%1d ZR=%1d LT=%1d RT=%1d -=%1d H=%1d +=%1d\n", buttonA, buttonB, buttonX, buttonY, buttonZL, buttonZR, buttonLT, buttonRT, buttonMinus, buttonHome, buttonPlus);

Callers 1

pollMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected