implement GyroscopeCalibrateParam
This commit is contained in:
		| @@ -251,14 +251,13 @@ void GetGyroscopeLowCalibrateParam(Service::Interface* self) { | ||||
|  | ||||
|     cmd_buff[1] = RESULT_SUCCESS.raw; | ||||
|  | ||||
|     // currently don't understand the meaning of return value, | ||||
|     // so stubbed these with value from a real console. | ||||
|     // TODO(wwylele): implement this correctly | ||||
|     cmd_buff[2] = 0x19DDFFDC; | ||||
|     cmd_buff[3] = 0x0002E5DA; | ||||
|     cmd_buff[4] = 0xE5CE1A2D; | ||||
|     cmd_buff[5] = 0x19C6FFF3; | ||||
|     cmd_buff[6] = 0x001CE61E; | ||||
|     const s16 param_unit = 6700; // an approximate value taken from hw | ||||
|     GyroscopeCalibrateParam param = { | ||||
|         { 0, param_unit, -param_unit }, | ||||
|         { 0, param_unit, -param_unit }, | ||||
|         { 0, param_unit, -param_unit }, | ||||
|     }; | ||||
|     memcpy(&cmd_buff[2], ¶m, sizeof(param)); | ||||
|  | ||||
|     LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||
| } | ||||
|   | ||||
| @@ -160,6 +160,18 @@ struct SharedMem { | ||||
|     } gyroscope; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Structure of calibrate params that GetGyroscopeLowCalibrateParam returns | ||||
|  */ | ||||
| struct GyroscopeCalibrateParam { | ||||
|     struct { | ||||
|         // TODO (wwylele): figure out the exact meaning of these params | ||||
|         s16 zero_point; | ||||
|         s16 positive_unit_point; | ||||
|         s16 negative_unit_point; | ||||
|     } x, y, z; | ||||
| }; | ||||
|  | ||||
| // TODO: MSVC does not support using offsetof() on non-static data members even though this | ||||
| //       is technically allowed since C++11. This macro should be enabled once MSVC adds | ||||
| //       support for that. | ||||
| @@ -284,7 +296,7 @@ void GetGyroscopeLowRawToDpsCoefficient(Service::Interface* self); | ||||
|  *      None | ||||
|  *  Outputs: | ||||
|  *      1 : Result of function, 0 on success, otherwise error code | ||||
|  *      2~6 : CalibrateParam? | ||||
|  *      2~6 (18 bytes) : struct GyroscopeCalibrateParam | ||||
|  */ | ||||
| void GetGyroscopeLowCalibrateParam(Service::Interface* self); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user