118 lines
3.4 KiB
C
118 lines
3.4 KiB
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <QtCore/QByteArray>
|
||
|
|
#include <QtCore/QVector>
|
||
|
|
#include <QtGlobal>
|
||
|
|
|
||
|
|
enum Com_Enum_ProtocolType : quint8
|
||
|
|
{
|
||
|
|
Com_Enum_ProtocolType_None = 0x00,
|
||
|
|
Com_Enum_ProtocolType_HelloReq = 0x01,
|
||
|
|
Com_Enum_ProtocolType_HelloRsp = 0x02,
|
||
|
|
Com_Enum_ProtocolType_Bitmap = 0x10,
|
||
|
|
Com_Enum_ProtocolType_FunctionKeyEvent = 0x20,
|
||
|
|
Com_Enum_ProtocolType_LedState = 0x21,
|
||
|
|
Com_Enum_ProtocolType_TimeSync = 0x30,
|
||
|
|
Com_Enum_ProtocolType_ThemeRgb = 0x31,
|
||
|
|
Com_Enum_ProtocolType_Ack = 0x7E,
|
||
|
|
Com_Enum_ProtocolType_Error = 0x7F
|
||
|
|
};
|
||
|
|
|
||
|
|
enum Com_Enum_ProtocolErrorCode : quint32
|
||
|
|
{
|
||
|
|
Com_Enum_ProtocolErrorCode_None = 0,
|
||
|
|
Com_Enum_ProtocolErrorCode_UnknownType = 1,
|
||
|
|
Com_Enum_ProtocolErrorCode_InvalidLength = 2,
|
||
|
|
Com_Enum_ProtocolErrorCode_InvalidParam = 3,
|
||
|
|
Com_Enum_ProtocolErrorCode_NotReady = 4
|
||
|
|
};
|
||
|
|
|
||
|
|
enum Com_Enum_ProtocolKeyAction : quint32
|
||
|
|
{
|
||
|
|
Com_Enum_ProtocolKeyAction_None = 0,
|
||
|
|
Com_Enum_ProtocolKeyAction_Press = 1,
|
||
|
|
Com_Enum_ProtocolKeyAction_Release = 2
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Com_Struct_ProtocolHelloRsp
|
||
|
|
{
|
||
|
|
quint32 ProtocolVersion = 0;
|
||
|
|
quint32 VendorId = 0;
|
||
|
|
quint32 ProductId = 0;
|
||
|
|
quint32 FirmwareMajor = 0;
|
||
|
|
quint32 FirmwareMinor = 0;
|
||
|
|
quint32 CapabilityFlags = 0;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Com_Struct_ProtocolFunctionKeyEvent
|
||
|
|
{
|
||
|
|
QByteArray UsageBitmap;
|
||
|
|
bool HasUsageAction = false;
|
||
|
|
quint16 Usage = 0;
|
||
|
|
quint32 Action = Com_Enum_ProtocolKeyAction_None;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Com_Struct_ProtocolLedState
|
||
|
|
{
|
||
|
|
quint32 LedMask = 0;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Com_Struct_ProtocolAck
|
||
|
|
{
|
||
|
|
quint32 AckedType = 0;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Com_Struct_ProtocolError
|
||
|
|
{
|
||
|
|
quint32 ErrorType = 0;
|
||
|
|
quint32 ErrorCode = 0;
|
||
|
|
};
|
||
|
|
|
||
|
|
bool Com_Protocol_DecodeMessageType(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Enum_ProtocolType* p_Type);
|
||
|
|
bool Com_Protocol_TryTakePacket(
|
||
|
|
QByteArray* p_StreamBuffer,
|
||
|
|
QByteArray* p_PacketBody,
|
||
|
|
Com_Enum_ProtocolType* p_Type);
|
||
|
|
|
||
|
|
QByteArray Com_Protocol_EncodeHelloReq();
|
||
|
|
QByteArray Com_Protocol_EncodeBitmap(const QByteArray& UsageBitmap);
|
||
|
|
QByteArray Com_Protocol_EncodeTimeSync(
|
||
|
|
quint32 Version,
|
||
|
|
quint32 Flags,
|
||
|
|
qint32 TimezoneMinutes,
|
||
|
|
quint64 UtcMilliseconds,
|
||
|
|
quint32 AccuracyMilliseconds);
|
||
|
|
QByteArray Com_Protocol_EncodeThemeRgb(quint8 Red, quint8 Green, quint8 Blue);
|
||
|
|
|
||
|
|
bool Com_Protocol_DecodeHelloRsp(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Struct_ProtocolHelloRsp* p_Message);
|
||
|
|
bool Com_Protocol_DecodeFunctionKeyEvent(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Struct_ProtocolFunctionKeyEvent* p_Message);
|
||
|
|
bool Com_Protocol_DecodeLedState(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Struct_ProtocolLedState* p_Message);
|
||
|
|
bool Com_Protocol_DecodeAck(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Struct_ProtocolAck* p_Message);
|
||
|
|
bool Com_Protocol_DecodeError(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Struct_ProtocolError* p_Message);
|
||
|
|
bool Com_Protocol_DecodeAckForType(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Enum_ProtocolType EnvelopeType,
|
||
|
|
Com_Struct_ProtocolAck* p_Message);
|
||
|
|
bool Com_Protocol_DecodeErrorForType(
|
||
|
|
const QByteArray& PacketBody,
|
||
|
|
Com_Enum_ProtocolType EnvelopeType,
|
||
|
|
Com_Struct_ProtocolError* p_Message);
|
||
|
|
|
||
|
|
bool Com_Protocol_IsUsageBitmapValid(const QByteArray& UsageBitmap);
|
||
|
|
QByteArray Com_Protocol_CreateUsageBitmap();
|
||
|
|
bool Com_Protocol_TestUsageBitmapBit(const QByteArray& UsageBitmap, quint16 Usage);
|
||
|
|
bool Com_Protocol_SetUsageBitmapBit(QByteArray* p_UsageBitmap, quint16 Usage, bool IsPressed);
|
||
|
|
QVector<quint16> Com_Protocol_BuildPressedUsageList(const QByteArray& UsageBitmap);
|