htc: send logic for HtcctrlService, bugfixes (thanks @misson20000)
This commit is contained in:
@@ -20,8 +20,8 @@
|
||||
namespace ams::htclow::mux {
|
||||
|
||||
Mux::Mux(PacketFactory *pf, ctrl::HtcctrlStateMachine *sm)
|
||||
: m_packet_factory(pf), m_state_machine(sm), m_task_manager(), m_wake_event(os::EventClearMode_ManualClear),
|
||||
m_channel_impl_map(pf, sm, std::addressof(m_task_manager), std::addressof(m_wake_event)), m_global_send_buffer(pf),
|
||||
: m_packet_factory(pf), m_state_machine(sm), m_task_manager(), m_event(os::EventClearMode_ManualClear),
|
||||
m_channel_impl_map(pf, sm, std::addressof(m_task_manager), std::addressof(m_event)), m_global_send_buffer(pf),
|
||||
m_mutex(), m_is_sleeping(false), m_version(ProtocolVersion)
|
||||
{
|
||||
/* ... */
|
||||
@@ -98,7 +98,7 @@ namespace ams::htclow::mux {
|
||||
m_is_sleeping = true;
|
||||
} else {
|
||||
m_is_sleeping = false;
|
||||
m_wake_event.Signal();
|
||||
m_event.Signal();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace ams::htclow::mux {
|
||||
PacketFactory *m_packet_factory;
|
||||
ctrl::HtcctrlStateMachine *m_state_machine;
|
||||
TaskManager m_task_manager;
|
||||
os::Event m_wake_event;
|
||||
os::Event m_event;
|
||||
ChannelImplMap m_channel_impl_map;
|
||||
GlobalSendBuffer m_global_send_buffer;
|
||||
os::SdkMutex m_mutex;
|
||||
@@ -37,9 +37,14 @@ namespace ams::htclow::mux {
|
||||
|
||||
void SetVersion(u16 version);
|
||||
|
||||
os::EventType *GetSendPacketEvent() { return m_event.GetBase(); }
|
||||
|
||||
Result CheckReceivedHeader(const PacketHeader &header) const;
|
||||
Result ProcessReceivePacket(const PacketHeader &header, const void *body, size_t body_size);
|
||||
|
||||
bool QuerySendPacket(PacketHeader *header, PacketBody *body, int *out_body_size);
|
||||
void RemovePacket(const PacketHeader &header);
|
||||
|
||||
void UpdateChannelState();
|
||||
void UpdateMuxState();
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user