orbum/liborbum/src/Resources/Iop/Sio2/Sio2Ports.hpp
2018-08-08 23:14:09 +08:00

51 lines
938 B
C++

#pragma once
#include <cereal/cereal.hpp>
#include "Resources/Iop/Sio2/Sio2PortRegisters.hpp"
/// Describes an abstract SIO2 port.
class Sio2Port
{
public:
Sio2Port();
Sio2PortRegister_Ctrl1* ctrl_1;
Sio2PortRegister_Ctrl2* ctrl_2;
Sio2PortRegister_Ctrl3* ctrl_3;
};
/// Port that contains all 3 CTRL registers.
class Sio2Port_Full
{
public:
Sio2PortRegister_Ctrl1 ctrl_1;
Sio2PortRegister_Ctrl2 ctrl_2;
Sio2PortRegister_Ctrl3 ctrl_3;
template<class Archive>
void serialize(Archive & archive)
{
archive(
CEREAL_NVP(ctrl_1),
CEREAL_NVP(ctrl_2),
CEREAL_NVP(ctrl_3)
);
}
};
/// Port that contains only 1 CTRL register (ctrl_3).
class Sio2Port_Slim
{
public:
Sio2PortRegister_Ctrl3 ctrl_3;
template<class Archive>
void serialize(Archive & archive)
{
archive(
CEREAL_NVP(ctrl_3)
);
}
};