diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2024-02-10 06:06:22 +0100 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2024-02-11 20:11:11 +0100 |
commit | 2053ff96fccaf2d8e3472cb370141c6d3252c4e1 (patch) | |
tree | e2428cb76abf294014e257c698cd4f52521eeccb /src/core/hle/service/ldn/user_local_communication_service.h | |
parent | Merge pull request #12969 from german77/bcat-interface (diff) | |
download | yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar.gz yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar.bz2 yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar.lz yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar.xz yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.tar.zst yuzu-2053ff96fccaf2d8e3472cb370141c6d3252c4e1.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/ldn/user_local_communication_service.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/core/hle/service/ldn/user_local_communication_service.h b/src/core/hle/service/ldn/user_local_communication_service.h new file mode 100644 index 000000000..6698d10d2 --- /dev/null +++ b/src/core/hle/service/ldn/user_local_communication_service.h @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include "core/hle/service/cmif_types.h" +#include "core/hle/service/kernel_helpers.h" +#include "core/hle/service/ldn/lan_discovery.h" +#include "core/hle/service/ldn/ldn_types.h" +#include "core/hle/service/service.h" + +namespace Core { +class System; +} + +namespace Network { +class RoomNetwork; +} + +namespace Service::LDN { + +class IUserLocalCommunicationService final + : public ServiceFramework<IUserLocalCommunicationService> { +public: + explicit IUserLocalCommunicationService(Core::System& system_); + ~IUserLocalCommunicationService() override; + +private: + Result GetState(Out<State> out_state); + + Result GetNetworkInfo(OutLargeData<NetworkInfo, BufferAttr_HipcPointer> out_network_info); + + Result GetIpv4Address(Out<Ipv4Address> out_current_address, Out<Ipv4Address> out_subnet_mask); + + Result GetDisconnectReason(Out<DisconnectReason> out_disconnect_reason); + + Result GetSecurityParameter(Out<SecurityParameter> out_security_parameter); + + Result GetNetworkConfig(Out<NetworkConfig> out_network_config); + + Result AttachStateChangeEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); + + Result GetNetworkInfoLatestUpdate( + OutLargeData<NetworkInfo, BufferAttr_HipcPointer> out_network_info, + OutArray<NodeLatestUpdate, BufferAttr_HipcPointer> out_node_latest_update); + + Result Scan(Out<s16> network_count, WifiChannel channel, const ScanFilter& scan_filter, + OutArray<NetworkInfo, BufferAttr_HipcAutoSelect> out_network_info); + + Result ScanPrivate(Out<s16> network_count, WifiChannel channel, const ScanFilter& scan_filter, + OutArray<NetworkInfo, BufferAttr_HipcAutoSelect> out_network_info); + + Result SetWirelessControllerRestriction(WirelessControllerRestriction wireless_restriction); + + Result OpenAccessPoint(); + + Result CloseAccessPoint(); + + Result CreateNetwork(const CreateNetworkConfig& create_network_Config); + + Result CreateNetworkPrivate(const CreateNetworkConfigPrivate& create_network_Config, + InArray<AddressEntry, BufferAttr_HipcPointer> address_list); + + Result DestroyNetwork(); + + Result SetAdvertiseData(InBuffer<BufferAttr_HipcAutoSelect> buffer_data); + + Result SetStationAcceptPolicy(AcceptPolicy accept_policy); + + Result AddAcceptFilterEntry(MacAddress mac_address); + + Result OpenStation(); + + Result CloseStation(); + + Result Connect(const ConnectNetworkData& connect_data, + InLargeData<NetworkInfo, BufferAttr_HipcPointer> network_info); + + Result Disconnect(); + + Result Initialize(ClientProcessId aruid); + + Result Finalize(); + + Result Initialize2(u32 version, ClientProcessId aruid); + +private: + /// Callback to parse and handle a received LDN packet. + void OnLDNPacketReceived(const Network::LDNPacket& packet); + void OnEventFired(); + + KernelHelpers::ServiceContext service_context; + Kernel::KEvent* state_change_event; + Network::RoomNetwork& room_network; + LANDiscovery lan_discovery; + + // Callback identifier for the OnLDNPacketReceived event. + Network::RoomMember::CallbackHandle<Network::LDNPacket> ldn_packet_received; + + bool is_initialized{}; +}; + +} // namespace Service::LDN |