mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-27 05:04:10 -04:00
htc: implement much of worker receive logic
This commit is contained in:
parent
8f85cc17dc
commit
679fec2ddc
19 changed files with 565 additions and 12 deletions
|
@ -15,11 +15,59 @@
|
|||
*/
|
||||
#pragma once
|
||||
#include <stratosphere.hpp>
|
||||
#include "../htclow_packet.hpp"
|
||||
|
||||
namespace ams::htclow::ctrl {
|
||||
|
||||
class HtcctrlPacket : public util::IntrusiveListBaseNode<HtcctrlPacket> {
|
||||
/* TODO */
|
||||
enum HtcctrlPacketType : u16 {
|
||||
HtcctrlPacketType_ConnectFromHost = 16,
|
||||
HtcctrlPacketType_ConnectFromTarget = 17,
|
||||
HtcctrlPacketType_ReadyFromHost = 18,
|
||||
HtcctrlPacketType_ReadyFromTarget = 19,
|
||||
HtcctrlPacketType_SuspendFromHost = 20,
|
||||
HtcctrlPacketType_SuspendFromTarget = 21,
|
||||
HtcctrlPacketType_ResumeFromHost = 22,
|
||||
HtcctrlPacketType_ResumeFromTarget = 23,
|
||||
HtcctrlPacketType_DisconnectFromHost = 24,
|
||||
HtcctrlPacketType_DisconnectFromTarget = 25,
|
||||
HtcctrlPacketType_BeaconQuery = 28,
|
||||
HtcctrlPacketType_BeaconResponse = 29,
|
||||
HtcctrlPacketType_InformationFromTarget = 33,
|
||||
};
|
||||
|
||||
static constexpr inline u32 HtcctrlSignature = 0x78825637;
|
||||
|
||||
struct HtcctrlPacketHeader {
|
||||
u32 signature;
|
||||
u32 offset;
|
||||
u32 reserved;
|
||||
u32 body_size;
|
||||
s16 version;
|
||||
HtcctrlPacketType packet_type;
|
||||
impl::ChannelInternalType channel;
|
||||
u64 share;
|
||||
};
|
||||
static_assert(util::is_pod<HtcctrlPacketHeader>::value);
|
||||
static_assert(sizeof(HtcctrlPacketHeader) == 0x20);
|
||||
|
||||
static constexpr inline size_t HtcctrlPacketBodySizeMax = 0x1000;
|
||||
|
||||
struct HtcctrlPacketBody {
|
||||
u8 data[HtcctrlPacketBodySizeMax];
|
||||
};
|
||||
|
||||
class HtcctrlPacket : public BasePacket<HtcctrlPacketHeader>, public util::IntrusiveListBaseNode<HtcctrlPacket> {
|
||||
public:
|
||||
using BasePacket<HtcctrlPacketHeader>::BasePacket;
|
||||
};
|
||||
|
||||
struct HtcctrlPacketDeleter {
|
||||
mem::StandardAllocator *m_allocator;
|
||||
|
||||
void operator()(HtcctrlPacket *packet) {
|
||||
std::destroy_at(packet);
|
||||
m_allocator->Free(packet);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue