bump
This commit is contained in:
parent
6a0ef7de68
commit
a7306fb589
|
@ -241,7 +241,7 @@ void IHidServer::CreateAppletResource(HLERequestContext& ctx) {
|
|||
|
||||
if (applet_resource == nullptr) {
|
||||
applet_resource = std::make_shared<IAppletResource>(system);
|
||||
applet_resource->Initialize();
|
||||
// applet_resource->Initialize();
|
||||
}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||
|
@ -1250,16 +1250,17 @@ void IHidServer::SetSupportedNpadStyleSet(HLERequestContext& ctx) {
|
|||
parameters.supported_style_set, parameters.applet_resource_user_id);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->SetSupportedNpadStyleSet(parameters.applet_resource_user_id,
|
||||
const Result result = npad->SetSupportedNpadStyleSet(parameters.applet_resource_user_id,
|
||||
parameters.supported_style_set);
|
||||
|
||||
if (result.IsSuccess()) {
|
||||
// NpadStyleTag style_tag{parameters.supported_style_set};
|
||||
// u32 aruid_index = GetResourceManager()->GetValue(parameters.applet_resource_user_id);
|
||||
// if (style_tag.gamecube != 0 && aruid_index < 3) {
|
||||
// const auto palma = GetResourceManager()->GetPalma();
|
||||
// palma->EnablePalmaBoostMode(parameters.applet_resource_user_id, true);
|
||||
// }
|
||||
NpadStyleTag style_tag{parameters.supported_style_set};
|
||||
const auto revision = npad->GetNpadRevision(parameters.applet_resource_user_id);
|
||||
|
||||
if (style_tag.gamecube != 0 && revision < NpadRevision::Revision3) {
|
||||
GetResourceManager()->GetPalma()->EnablePalmaBoostMode(
|
||||
parameters.applet_resource_user_id, true);
|
||||
}
|
||||
}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
|
@ -1292,7 +1293,7 @@ void IHidServer::SetSupportedNpadIdType(HLERequestContext& ctx) {
|
|||
memcpy(npad_list.data(), buffer.data(), buffer.size());
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->SetSupportedNpadIdType(applet_resource_user_id, npad_list);
|
||||
const Result result = npad->SetSupportedNpadIdType(applet_resource_user_id, npad_list);
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||
|
||||
|
@ -1308,7 +1309,7 @@ void IHidServer::ActivateNpad(HLERequestContext& ctx) {
|
|||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
npad->ActivateWithRevision(applet_resource_user_id, NpadRevision::Revision0);
|
||||
const auto result = npad->Activate(applet_resource_user_id);
|
||||
const Result result = npad->Activate(applet_resource_user_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
|
@ -2128,11 +2129,11 @@ void IHidServer::ActivateConsoleSixAxisSensor(HLERequestContext& ctx) {
|
|||
Result result = ResultSuccess;
|
||||
auto sixaxis = GetResourceManager()->GetConsoleSixAxis();
|
||||
|
||||
if (IsDeviceManaged()) {
|
||||
result = sixaxis->Activate(applet_resource_user_id);
|
||||
} else {
|
||||
result = sixaxis->Activate();
|
||||
}
|
||||
//if (IsDeviceManaged()) {
|
||||
// result = sixaxis->Activate(applet_resource_user_id);
|
||||
//} else {
|
||||
// result = sixaxis->Activate();
|
||||
//}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
|
@ -2177,11 +2178,11 @@ void IHidServer::ActivateSevenSixAxisSensor(HLERequestContext& ctx) {
|
|||
Result result = ResultSuccess;
|
||||
auto sixaxis = GetResourceManager()->GetConsoleSixAxis();
|
||||
|
||||
if (IsDeviceManaged()) {
|
||||
result = sixaxis->Activate(applet_resource_user_id);
|
||||
} else {
|
||||
result = sixaxis->Activate();
|
||||
}
|
||||
//if (IsDeviceManaged()) {
|
||||
// result = sixaxis->Activate(applet_resource_user_id);
|
||||
//} else {
|
||||
// result = sixaxis->Activate();
|
||||
//}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
|
@ -2194,18 +2195,18 @@ void IHidServer::StartSevenSixAxisSensor(HLERequestContext& ctx) {
|
|||
LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}",
|
||||
applet_resource_user_id);
|
||||
|
||||
std::shared_ptr<SixAxisSensorState> state = nullptr;
|
||||
const auto sixaxis = GetResourceManager()->GetSevenSixAxis();
|
||||
Result result = sixaxis->GetSensorState(state, parameters.applet_resource_user_id,
|
||||
parameters.sixaxis_handle);
|
||||
//std::shared_ptr<SixAxisSensorState> state = nullptr;
|
||||
//const auto sixaxis = GetResourceManager()->GetSevenSixAxis();
|
||||
//Result result = sixaxis->GetSensorState(state, parameters.applet_resource_user_id,
|
||||
// parameters.sixaxis_handle);
|
||||
|
||||
if (result.IsSuccess()) {
|
||||
result = GetResourceManager()->GetConsoleSixAxis()->ResetSevenSixAxisSensorTimestamp();
|
||||
}
|
||||
//if (result.IsSuccess()) {
|
||||
// result = GetResourceManager()->GetConsoleSixAxis()->ResetSevenSixAxisSensorTimestamp();
|
||||
//}
|
||||
|
||||
if (result.IsSuccess()) {
|
||||
state->SetRunningState(true);
|
||||
}
|
||||
//if (result.IsSuccess()) {
|
||||
// state->SetRunningState(true);
|
||||
//}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
|
@ -2223,24 +2224,25 @@ void IHidServer::FinalizeSevenSixAxisSensor(HLERequestContext& ctx) {
|
|||
|
||||
std::shared_ptr<SixAxisSensorState> state = nullptr;
|
||||
const auto sixaxis = GetResourceManager()->GetSevenSixAxis();
|
||||
Result result = sixaxis->GetSensorState(state, parameters.applet_resource_user_id,
|
||||
parameters.sixaxis_handle);
|
||||
//Result result = sixaxis->GetSensorState(state, parameters.applet_resource_user_id,
|
||||
// parameters.sixaxis_handle);
|
||||
|
||||
if (result.IsSuccess()) {
|
||||
state->SetRunningState(false);
|
||||
}
|
||||
//if (result.IsSuccess()) {
|
||||
// state->SetRunningState(false);
|
||||
//}
|
||||
|
||||
result = GetResourceManager()->GetConsoleSixAxis()->FinalizeSevenSixAxisSensor();
|
||||
// result = GetResourceManager()->GetConsoleSixAxis()->FinalizeSevenSixAxisSensor();
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidServer::ResetSevenSixAxisSensorTimestamp(HLERequestContext& ctx) {}
|
||||
void IHidServer::IsUsbFullKeyControllerEnabled(HLERequestContext& ctx) {}
|
||||
void IHidServer::SetSevenSixAxisSensorFusionStrength(HLERequestContext& ctx) {}
|
||||
void IHidServer::GetSevenSixAxisSensorFusionStrength(HLERequestContext& ctx) {}
|
||||
|
||||
void IHidServer::ResetSevenSixAxisSensorTimestamp(HLERequestContext& ctx) {}
|
||||
|
||||
|
||||
void IHidServer::IsUsbFullKeyControllerEnabled(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const bool is_enabled = false;
|
||||
|
@ -2823,11 +2825,11 @@ void IHidServer::SetTouchScreenConfiguration(HLERequestContext& ctx) {
|
|||
touchscreen_mode.mode = TouchScreenModeForNx::UseSystemSetting;
|
||||
}
|
||||
|
||||
const Result result =
|
||||
GetResourceManager()->GetTouchScreen()->SetTouchScreenConfiguration(touchscreen_mode);
|
||||
//const Result result =
|
||||
// GetResourceManager()->GetTouchScreen()->SetTouchScreenConfiguration(touchscreen_mode);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
//IPC::ResponseBuilder rb{ctx, 2};
|
||||
//rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::IsFirmwareUpdateNeededForNotification(HLERequestContext& ctx) {
|
||||
|
|
|
@ -51,7 +51,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
|
|||
{317, nullptr, "GetNpadLeftRightInterfaceType"},
|
||||
{318, nullptr, "HasBattery"},
|
||||
{319, nullptr, "HasLeftRightBattery"},
|
||||
{321, &IHidSystemServer::GetUniquePadsFromNpad, "GetUniquePadsFromNpad"},
|
||||
{321, nullptr/*&IHidSystemServer::GetUniquePadsFromNpad*/, "GetUniquePadsFromNpad"},
|
||||
{322, nullptr, "GetIrSensorState"},
|
||||
{323, nullptr, "GetXcdHandleForNpadWithIrSensor"},
|
||||
{324, nullptr, "GetUniquePadButtonSet"},
|
||||
|
@ -93,7 +93,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
|
|||
{700, nullptr, "ActivateUniquePad"},
|
||||
{702, nullptr, "AcquireUniquePadConnectionEventHandle"},
|
||||
{703, nullptr, "GetUniquePadIds"},
|
||||
{751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"},
|
||||
{751, nullptr/*&IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle*/, "AcquireJoyDetachOnBluetoothOffEventHandle"},
|
||||
{800, nullptr, "ListSixAxisSensorHandles"},
|
||||
{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
|
||||
{802, nullptr, "ResetSixAxisSensorCalibrationValues"},
|
||||
|
@ -119,7 +119,7 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
|
|||
{830, nullptr, "SetNotificationLedPattern"},
|
||||
{831, nullptr, "SetNotificationLedPatternWithTimeout"},
|
||||
{832, nullptr, "PrepareHidsForNotificationWake"},
|
||||
{850, &IHidSystemServer::IsUsbFullKeyControllerEnabled, "IsUsbFullKeyControllerEnabled"},
|
||||
{850, nullptr/*&IHidSystemServer::IsUsbFullKeyControllerEnabled*/, "IsUsbFullKeyControllerEnabled"},
|
||||
{851, nullptr, "EnableUsbFullKeyController"},
|
||||
{852, nullptr, "IsUsbConnected"},
|
||||
{870, nullptr, "IsHandheldButtonPressedOnConsoleMode"},
|
||||
|
@ -266,7 +266,7 @@ void IHidSystemServer::GetLastActiveNpad(HLERequestContext& ctx) {
|
|||
|
||||
IPC::ResponseBuilder rb{ctx, 3};
|
||||
rb.Push(result);
|
||||
rb.PushEnum(ResultSuccess);
|
||||
// rb.PushEnum(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidSystemServer::ApplyNpadSystemCommonPolicyFull(HLERequestContext& ctx) {
|
||||
|
@ -365,34 +365,34 @@ void IHidSystemServer::SetTouchScreenDefaultConfiguration(HLERequestContext& ctx
|
|||
break;
|
||||
default:
|
||||
touch_screen_configuration.mode = TouchScreenModeForNx::UseSystemSetting;
|
||||
}
|
||||
}/*
|
||||
|
||||
const Result result = GetResourceManager()->GetTouchScreen()->SetTouchScreenConfiguration(
|
||||
touch_screen_configuration);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
rb.Push(result);*/
|
||||
}
|
||||
|
||||
void IHidSystemServer::GetTouchScreenDefaultConfiguration(HLERequestContext& ctx) {
|
||||
LOG_WARNING(Service_HID, "(STUBBED) called");
|
||||
|
||||
TouchScreenConfigurationForNx touch_screen_configuration{};
|
||||
const Result result = GetResourceManager()->GetTouchScreen()->GetTouchScreenConfiguration(
|
||||
touch_screen_configuration.mode);
|
||||
//TouchScreenConfigurationForNx touch_screen_configuration{};
|
||||
//const Result result = GetResourceManager()->GetTouchScreen()->GetTouchScreenConfiguration(
|
||||
// touch_screen_configuration.mode);
|
||||
|
||||
switch (touch_screen_configuration.mode) {
|
||||
case TouchScreenModeForNx::UseSystemSetting:
|
||||
case TouchScreenModeForNx::Finger:
|
||||
case TouchScreenModeForNx::Heat2:
|
||||
break;
|
||||
default:
|
||||
touch_screen_configuration.mode = TouchScreenModeForNx::UseSystemSetting;
|
||||
}
|
||||
//switch (touch_screen_configuration.mode) {
|
||||
//case TouchScreenModeForNx::UseSystemSetting:
|
||||
//case TouchScreenModeForNx::Finger:
|
||||
//case TouchScreenModeForNx::Heat2:
|
||||
// break;
|
||||
//default:
|
||||
// touch_screen_configuration.mode = TouchScreenModeForNx::UseSystemSetting;
|
||||
//}
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 6};
|
||||
rb.Push(ResultSuccess);
|
||||
rb.PushRaw(touch_screen_configuration);
|
||||
//IPC::ResponseBuilder rb{ctx, 6};
|
||||
//rb.Push(ResultSuccess);
|
||||
//rb.PushRaw(touch_screen_configuration);
|
||||
}
|
||||
|
||||
std::shared_ptr<ResourceManager> IHidSystemServer::GetResourceManager() {
|
||||
|
|
|
@ -18,7 +18,7 @@ AbstractNpadState::AbstractNpadState() {}
|
|||
AbstractNpadState::~AbstractNpadState() = default;
|
||||
|
||||
Result AbstractNpadState::ActivateNpad(const u64 aruid) {
|
||||
Result result{}; // UpdateSpecial Controller State
|
||||
Result result = ActivateUnknown();
|
||||
if (result.IsSuccess()) {
|
||||
result = UpdateNpadLifo(aruid);
|
||||
if (result.IsError()) {
|
||||
|
@ -33,6 +33,10 @@ Result AbstractNpadState::ActivateNpad(const u64 aruid) {
|
|||
return result;
|
||||
}
|
||||
|
||||
Result AbstractNpadState::ActivateUnknown() {
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
||||
Result AbstractNpadState::UpdateNpadLifo(const u64 aruid) {
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
@ -184,7 +188,7 @@ Result Npad::SetSupportedNpadIdType(const u64 aruid, std::span<const NpadIdType>
|
|||
}
|
||||
|
||||
Result Npad::SetSupportedNpadIdTypeImpl(const u64 aruid, std::span<const NpadIdType> list) {
|
||||
if (list.size() >= SUPPORTED_NPAD_TYPES_MAX) {
|
||||
if (list.size() > SUPPORTED_NPAD_TYPES_MAX) {
|
||||
return ResultInvalidArraySize;
|
||||
}
|
||||
|
||||
|
@ -222,11 +226,12 @@ Result Npad::SetSupportedNpadStyleSetImpl(const u64 aruid, const NpadStyleSet su
|
|||
return ResultNpadNotConnected;
|
||||
}
|
||||
|
||||
npad_state[index]->SetSupportedNpadStyleSet(supported_style_set);
|
||||
auto& state = npad_state[index];
|
||||
state->SetSupportedNpadStyleSet(supported_style_set);
|
||||
|
||||
if (active_aruid == aruid) {
|
||||
active_npad_state->SetSupportedNpadStyleSet(supported_style_set);
|
||||
active_npad_state->SetNpadJoyHoldType(npad_state[index]->GetNpadJoyHoldType());
|
||||
active_npad_state->SetNpadJoyHoldType(state->GetNpadJoyHoldType());
|
||||
}
|
||||
|
||||
return ResultSuccess;
|
||||
|
@ -269,7 +274,7 @@ bool Npad::IsFirmwareUpdateAvailableForSixAxisSensor(const SixAxisSensorHandle&
|
|||
|
||||
Result Npad::ResetIsSixAxisSensorDeviceNewlyAssigned(const u64 aruid,
|
||||
const SixAxisSensorHandle& handle) {
|
||||
// auto npad_index = NpadIdTypeToIndex(static_cast<NpadIdType>(handle.device_index));
|
||||
//auto npad_index = NpadIdTypeToIndex(static_cast<NpadIdType>(handle.device_index));
|
||||
|
||||
// TODO: Implement this part
|
||||
|
||||
|
@ -868,6 +873,16 @@ Result Npad::GetLastActiveNpad(NpadIdType& out_npad_id) const {
|
|||
return result;
|
||||
}
|
||||
|
||||
NpadRevision Npad::GetNpadRevision(const u64 aruid) const {
|
||||
const auto index = GetIndexFromAruid(aruid);
|
||||
|
||||
if (index >= ARUID_MAX) {
|
||||
return NpadRevision::Revision0;
|
||||
}
|
||||
|
||||
return npad_state[index]->GetNpadRevision();
|
||||
}
|
||||
|
||||
std::shared_ptr<AbstractNpadState> Npad::GetAbstractNpad(const NpadIdType npad_id) {
|
||||
return abstract_npad_state[NpadIdTypeToIndex(npad_id)];
|
||||
}
|
||||
|
|
|
@ -65,6 +65,17 @@ private:
|
|||
};
|
||||
static_assert(sizeof(BatteryState) == 0x40, "BatteryState is an invalid size");
|
||||
|
||||
struct Unknown0x88 {
|
||||
|
||||
};
|
||||
|
||||
struct AbstractState {
|
||||
INSERT_PADDING_BYTES(0x88);
|
||||
Unknown0x88 unknown_0x88{};
|
||||
};
|
||||
|
||||
Result ActivateUnknown();
|
||||
|
||||
Result UpdateNpadLifo(const u64 aruid);
|
||||
Result UpdateSixaxisLifo(const u64 aruid);
|
||||
Result UpdateBatteryLifo(const u64 aruid);
|
||||
|
@ -73,6 +84,8 @@ private:
|
|||
NpadInternalState& internal_state);
|
||||
void UpdateBatteryLifoImpl(const BatteryState& battery_state,
|
||||
NpadInternalState& internal_state);
|
||||
|
||||
AbstractState state{};
|
||||
};
|
||||
|
||||
class Npad final : public BaseResource {
|
||||
|
@ -145,6 +158,8 @@ public:
|
|||
bool IsFirmwareUpdateNeededForNotification(const u64 aruid, const s32 unknown) const;
|
||||
Result GetLastActiveNpad(NpadIdType& out_npad_id) const;
|
||||
|
||||
NpadRevision GetNpadRevision(const u64 aruid) const;
|
||||
|
||||
std::shared_ptr<AbstractNpadState> GetAbstractNpad(const NpadIdType npad_id);
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue