ir_u: convert to ServiceFramework

This commit is contained in:
wwylele 2017-12-09 12:34:23 +02:00
parent 69caf8c5dc
commit f3e41fe941
5 changed files with 36 additions and 35 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -274,6 +274,7 @@ void Init() {
FRD::Init();
HID::Init();
IR::Init();
IR::InstallInterfaces(*SM::g_service_manager);
MVD::Init();
NDM::Init();
NEWS::Init();