|
|
@ -14,7 +14,6 @@
|
|
|
|
#include "input_common/udp/client.h"
|
|
|
|
#include "input_common/udp/client.h"
|
|
|
|
#include "input_common/udp/protocol.h"
|
|
|
|
#include "input_common/udp/protocol.h"
|
|
|
|
|
|
|
|
|
|
|
|
using boost::asio::ip::address_v4;
|
|
|
|
|
|
|
|
using boost::asio::ip::udp;
|
|
|
|
using boost::asio::ip::udp;
|
|
|
|
|
|
|
|
|
|
|
|
namespace InputCommon::CemuhookUDP {
|
|
|
|
namespace InputCommon::CemuhookUDP {
|
|
|
@ -31,10 +30,10 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit Socket(const std::string& host, u16 port, u8 pad_index, u32 client_id,
|
|
|
|
explicit Socket(const std::string& host, u16 port, u8 pad_index, u32 client_id,
|
|
|
|
SocketCallback callback)
|
|
|
|
SocketCallback callback)
|
|
|
|
: client_id(client_id), timer(io_service),
|
|
|
|
: callback(std::move(callback)), timer(io_service),
|
|
|
|
send_endpoint(udp::endpoint(address_v4::from_string(host), port)),
|
|
|
|
socket(io_service, udp::endpoint(udp::v4(), 0)), client_id(client_id),
|
|
|
|
socket(io_service, udp::endpoint(udp::v4(), 0)), pad_index(pad_index),
|
|
|
|
pad_index(pad_index),
|
|
|
|
callback(std::move(callback)) {}
|
|
|
|
send_endpoint(udp::endpoint(boost::asio::ip::make_address_v4(host), port)) {}
|
|
|
|
|
|
|
|
|
|
|
|
void Stop() {
|
|
|
|
void Stop() {
|
|
|
|
io_service.stop();
|
|
|
|
io_service.stop();
|
|
|
@ -126,7 +125,7 @@ static void SocketLoop(Socket* socket) {
|
|
|
|
|
|
|
|
|
|
|
|
Client::Client(std::shared_ptr<DeviceStatus> status, const std::string& host, u16 port,
|
|
|
|
Client::Client(std::shared_ptr<DeviceStatus> status, const std::string& host, u16 port,
|
|
|
|
u8 pad_index, u32 client_id)
|
|
|
|
u8 pad_index, u32 client_id)
|
|
|
|
: status(status) {
|
|
|
|
: status(std::move(status)) {
|
|
|
|
StartCommunication(host, port, pad_index, client_id);
|
|
|
|
StartCommunication(host, port, pad_index, client_id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -207,7 +206,7 @@ void TestCommunication(const std::string& host, u16 port, u8 pad_index, u32 clie
|
|
|
|
Common::Event success_event;
|
|
|
|
Common::Event success_event;
|
|
|
|
SocketCallback callback{[](Response::Version version) {}, [](Response::PortInfo info) {},
|
|
|
|
SocketCallback callback{[](Response::Version version) {}, [](Response::PortInfo info) {},
|
|
|
|
[&](Response::PadData data) { success_event.Set(); }};
|
|
|
|
[&](Response::PadData data) { success_event.Set(); }};
|
|
|
|
Socket socket{host, port, pad_index, client_id, callback};
|
|
|
|
Socket socket{host, port, pad_index, client_id, std::move(callback)};
|
|
|
|
std::thread worker_thread{SocketLoop, &socket};
|
|
|
|
std::thread worker_thread{SocketLoop, &socket};
|
|
|
|
bool result = success_event.WaitFor(std::chrono::seconds(8));
|
|
|
|
bool result = success_event.WaitFor(std::chrono::seconds(8));
|
|
|
|
socket.Stop();
|
|
|
|
socket.Stop();
|
|
|
@ -267,7 +266,7 @@ CalibrationConfigurationJob::CalibrationConfigurationJob(
|
|
|
|
complete_event.Set();
|
|
|
|
complete_event.Set();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}};
|
|
|
|
}};
|
|
|
|
Socket socket{host, port, pad_index, client_id, callback};
|
|
|
|
Socket socket{host, port, pad_index, client_id, std::move(callback)};
|
|
|
|
std::thread worker_thread{SocketLoop, &socket};
|
|
|
|
std::thread worker_thread{SocketLoop, &socket};
|
|
|
|
complete_event.Wait();
|
|
|
|
complete_event.Wait();
|
|
|
|
socket.Stop();
|
|
|
|
socket.Stop();
|
|
|
|