WiimoteEmu: Minor accuracy fixes.
This commit is contained in:
parent
286aafd4ed
commit
58f1ff3773
|
@ -84,8 +84,9 @@ static_assert(sizeof(OutputReportRequestStatus) == 1, "Wrong size");
|
||||||
struct OutputReportWriteData
|
struct OutputReportWriteData
|
||||||
{
|
{
|
||||||
u8 rumble : 1;
|
u8 rumble : 1;
|
||||||
|
u8 : 1;
|
||||||
u8 space : 2;
|
u8 space : 2;
|
||||||
u8 : 5;
|
u8 : 4;
|
||||||
// A real wiimote ignores the i2c read/write bit.
|
// A real wiimote ignores the i2c read/write bit.
|
||||||
u8 i2c_rw_ignored : 1;
|
u8 i2c_rw_ignored : 1;
|
||||||
// Used only for register space (i2c bus) (7-bits):
|
// Used only for register space (i2c bus) (7-bits):
|
||||||
|
@ -100,8 +101,9 @@ static_assert(sizeof(OutputReportWriteData) == 21, "Wrong size");
|
||||||
struct OutputReportReadData
|
struct OutputReportReadData
|
||||||
{
|
{
|
||||||
u8 rumble : 1;
|
u8 rumble : 1;
|
||||||
|
u8 : 1;
|
||||||
u8 space : 2;
|
u8 space : 2;
|
||||||
u8 : 5;
|
u8 : 4;
|
||||||
// A real wiimote ignores the i2c read/write bit.
|
// A real wiimote ignores the i2c read/write bit.
|
||||||
u8 i2c_rw_ignored : 1;
|
u8 i2c_rw_ignored : 1;
|
||||||
// Used only for register space (i2c bus) (7-bits):
|
// Used only for register space (i2c bus) (7-bits):
|
||||||
|
@ -114,7 +116,8 @@ static_assert(sizeof(OutputReportReadData) == 6, "Wrong size");
|
||||||
|
|
||||||
struct OutputReportSpeakerData
|
struct OutputReportSpeakerData
|
||||||
{
|
{
|
||||||
u8 unknown : 3;
|
u8 rumble : 1;
|
||||||
|
u8 : 2;
|
||||||
u8 length : 5;
|
u8 length : 5;
|
||||||
u8 data[20];
|
u8 data[20];
|
||||||
};
|
};
|
||||||
|
|
|
@ -45,7 +45,8 @@ void Wiimote::HandleReportMode(const OutputReportMode& dr)
|
||||||
m_reporting_continuous = dr.continuous;
|
m_reporting_continuous = dr.continuous;
|
||||||
m_reporting_mode = dr.mode;
|
m_reporting_mode = dr.mode;
|
||||||
|
|
||||||
SendAck(OutputReportID::ReportMode, ErrorCode::Success);
|
if (dr.ack)
|
||||||
|
SendAck(OutputReportID::ReportMode, ErrorCode::Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests that we have enough bytes for the report before we run the handler.
|
// Tests that we have enough bytes for the report before we run the handler.
|
||||||
|
@ -322,6 +323,7 @@ void Wiimote::HandleWriteData(const OutputReportWriteData& wd)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Real wiimotes seem to always ACK data writes.
|
||||||
SendAck(OutputReportID::WriteData, error_code);
|
SendAck(OutputReportID::WriteData, error_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,6 +428,8 @@ void Wiimote::HandleReadData(const OutputReportReadData& rd)
|
||||||
// If more data needs to be sent it will happen on the next "Update()"
|
// If more data needs to be sent it will happen on the next "Update()"
|
||||||
// TODO: should this be removed and let Update() take care of it?
|
// TODO: should this be removed and let Update() take care of it?
|
||||||
ProcessReadDataRequest();
|
ProcessReadDataRequest();
|
||||||
|
|
||||||
|
// FYI: No "ACK" is sent.
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Wiimote::ProcessReadDataRequest()
|
bool Wiimote::ProcessReadDataRequest()
|
||||||
|
|
Loading…
Reference in New Issue