ir_u: convert to ServiceFramework
This commit is contained in:
parent
69caf8c5dc
commit
f3e41fe941
|
@ -13,7 +13,6 @@ namespace IR {
|
|||
|
||||
void Init() {
|
||||
AddService(new IR_RST_Interface);
|
||||
AddService(new IR_U_Interface);
|
||||
AddService(new IR_User_Interface);
|
||||
|
||||
InitUser();
|
||||
|
@ -30,6 +29,10 @@ void ReloadInputDevices() {
|
|||
ReloadInputDevicesRST();
|
||||
}
|
||||
|
||||
void InstallInterfaces(SM::ServiceManager& service_manager) {
|
||||
std::make_shared<IR_U>()->InstallAsService(service_manager);
|
||||
}
|
||||
|
||||
} // namespace IR
|
||||
|
||||
} // namespace Service
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
namespace SM {
|
||||
class ServiceManager;
|
||||
}
|
||||
|
||||
namespace Service {
|
||||
|
||||
class Interface;
|
||||
|
||||
namespace IR {
|
||||
|
||||
/// Initialize IR service
|
||||
|
@ -19,5 +20,7 @@ void Shutdown();
|
|||
/// Reload input devices. Used when input configuration changed
|
||||
void ReloadInputDevices();
|
||||
|
||||
void InstallInterfaces(SM::ServiceManager& service_manager);
|
||||
|
||||
} // namespace IR
|
||||
} // namespace Service
|
||||
|
|
|
@ -7,31 +7,28 @@
|
|||
namespace Service {
|
||||
namespace IR {
|
||||
|
||||
const Interface::FunctionInfo FunctionTable[] = {
|
||||
// clang-format off
|
||||
{0x00010000, nullptr, "Initialize"},
|
||||
{0x00020000, nullptr, "Shutdown"},
|
||||
{0x00030042, nullptr, "StartSendTransfer"},
|
||||
{0x00040000, nullptr, "WaitSendTransfer"},
|
||||
{0x000500C2, nullptr, "StartRecvTransfer"},
|
||||
{0x00060000, nullptr, "WaitRecvTransfer"},
|
||||
{0x00070080, nullptr, "GetRecvTransferCount"},
|
||||
{0x00080000, nullptr, "GetSendState"},
|
||||
{0x00090040, nullptr, "SetBitRate"},
|
||||
{0x000A0000, nullptr, "GetBitRate"},
|
||||
{0x000B0040, nullptr, "SetIRLEDState"},
|
||||
{0x000C0000, nullptr, "GetIRLEDRecvState"},
|
||||
{0x000D0000, nullptr, "GetSendFinishedEvent"},
|
||||
{0x000E0000, nullptr, "GetRecvFinishedEvent"},
|
||||
{0x000F0000, nullptr, "GetTransferState"},
|
||||
{0x00100000, nullptr, "GetErrorStatus"},
|
||||
{0x00110040, nullptr, "SetSleepModeActive"},
|
||||
{0x00120040, nullptr, "SetSleepModeState"},
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
IR_U_Interface::IR_U_Interface() {
|
||||
Register(FunctionTable);
|
||||
IR_U::IR_U() : ServiceFramework("ir:u", 1) {
|
||||
static const FunctionInfo functions[] = {
|
||||
{0x00010000, nullptr, "Initialize"},
|
||||
{0x00020000, nullptr, "Shutdown"},
|
||||
{0x00030042, nullptr, "StartSendTransfer"},
|
||||
{0x00040000, nullptr, "WaitSendTransfer"},
|
||||
{0x000500C2, nullptr, "StartRecvTransfer"},
|
||||
{0x00060000, nullptr, "WaitRecvTransfer"},
|
||||
{0x00070080, nullptr, "GetRecvTransferCount"},
|
||||
{0x00080000, nullptr, "GetSendState"},
|
||||
{0x00090040, nullptr, "SetBitRate"},
|
||||
{0x000A0000, nullptr, "GetBitRate"},
|
||||
{0x000B0040, nullptr, "SetIRLEDState"},
|
||||
{0x000C0000, nullptr, "GetIRLEDRecvState"},
|
||||
{0x000D0000, nullptr, "GetSendFinishedEvent"},
|
||||
{0x000E0000, nullptr, "GetRecvFinishedEvent"},
|
||||
{0x000F0000, nullptr, "GetTransferState"},
|
||||
{0x00100000, nullptr, "GetErrorStatus"},
|
||||
{0x00110040, nullptr, "SetSleepModeActive"},
|
||||
{0x00120040, nullptr, "SetSleepModeState"},
|
||||
};
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
|
||||
} // namespace IR
|
||||
|
|
|
@ -9,13 +9,10 @@
|
|||
namespace Service {
|
||||
namespace IR {
|
||||
|
||||
class IR_U_Interface : public Service::Interface {
|
||||
/// Interface to "ir:u" service
|
||||
class IR_U final : public ServiceFramework<IR_U> {
|
||||
public:
|
||||
IR_U_Interface();
|
||||
|
||||
std::string GetPortName() const override {
|
||||
return "ir:u";
|
||||
}
|
||||
IR_U();
|
||||
};
|
||||
|
||||
} // namespace IR
|
||||
|
|
|
@ -274,6 +274,7 @@ void Init() {
|
|||
FRD::Init();
|
||||
HID::Init();
|
||||
IR::Init();
|
||||
IR::InstallInterfaces(*SM::g_service_manager);
|
||||
MVD::Init();
|
||||
NDM::Init();
|
||||
NEWS::Init();
|
||||
|
|
Reference in New Issue