mirror of
https://github.com/azahar-emu/ArticProtocol.git
synced 2025-06-25 14:22:42 -04:00
86 lines
1.9 KiB
C++
86 lines
1.9 KiB
C++
#pragma once
|
|
#include <3ds/types.h>
|
|
#include <array>
|
|
|
|
namespace ArticProtocolCommon {
|
|
enum class MethodState : int {
|
|
PARSING_INPUT = 0,
|
|
PARAMETER_TYPE_MISMATCH = 1,
|
|
PARAMETER_COUNT_MISMATCH = 2,
|
|
BIG_BUFFER_READ_FAIL = 3,
|
|
BIG_BUFFER_WRITE_FAIL = 4,
|
|
OUT_OF_MEMORY = 5,
|
|
|
|
GENERATING_OUTPUT = 6,
|
|
UNEXPECTED_PARSING_INPUT = 7,
|
|
OUT_OF_MEMORY_OUTPUT = 8,
|
|
|
|
INTERNAL_METHOD_ERROR = 9,
|
|
FINISHED = 10,
|
|
};
|
|
enum class RequestParameterType : u16 {
|
|
IN_INTEGER_8 = 0,
|
|
IN_INTEGER_16 = 1,
|
|
IN_INTEGER_32 = 2,
|
|
IN_INTEGER_64 = 3,
|
|
IN_SMALL_BUFFER = 4,
|
|
IN_BIG_BUFFER = 5,
|
|
};
|
|
enum class LogOnServerType : u8 {
|
|
LOG_DEBUG = 0,
|
|
LOG_INFO = 1,
|
|
LOG_WARNING = 2,
|
|
LOG_ERROR = 3,
|
|
};
|
|
struct RequestParameter {
|
|
RequestParameterType type;
|
|
union {
|
|
u16 parameterSize;
|
|
u16 bigBufferID;
|
|
};
|
|
|
|
char data[0x1C];
|
|
};
|
|
struct RequestPacket {
|
|
u32 requestID;
|
|
std::array<char, 0x20> method;
|
|
u32 parameterCount;
|
|
};
|
|
static_assert(sizeof(RequestPacket) == 0x28);
|
|
|
|
struct Buffer {
|
|
u32 bufferID;
|
|
u32 bufferSize;
|
|
|
|
char data[];
|
|
};
|
|
|
|
struct ResponseMethod {
|
|
enum class ArticResult : u32 {
|
|
SUCCESS = 0,
|
|
METHOD_NOT_FOUND = 1,
|
|
METHOD_ERROR = 2,
|
|
PROVIDE_INPUT = 3,
|
|
};
|
|
ArticResult articResult{};
|
|
union {
|
|
int methodResult{};
|
|
int provideInputBufferID;
|
|
};
|
|
int bufferSize{};
|
|
u8 padding[0x10]{};
|
|
};
|
|
|
|
struct DataPacket {
|
|
DataPacket() {}
|
|
u32 requestID{};
|
|
|
|
union {
|
|
char dataRaw[0x1C]{};
|
|
ResponseMethod resp;
|
|
};
|
|
};
|
|
|
|
static_assert(sizeof(DataPacket) == 0x20);
|
|
};
|
|
|