36 static constexpr uint64_t
HashMask = 0x00FFFFFFFFFFFFFF;
100 return !(*
this == Other);
122 std::span<const int16_t>
Axes()
const {
128 Count =
static_cast<uint8_t
>(16 - std::countl_zero(AvailableAxes));
137 AvailableAxes = (1 << _Count) - 1;
138 Count =
static_cast<uint8_t
>(_Count);
144 std::array<int16_t, MRC_MAX_NUM_AXES> AxesStore{};
145 uint16_t AvailableAxes{0};
151 std::span<uint8_t>
Povs() {
return std::span{PovsStore.data(),
GetCount()}; }
153 std::span<const uint8_t>
Povs()
const {
154 return std::span{PovsStore.data(),
GetCount()};
164 std::array<uint8_t, MRC_MAX_NUM_POVS> PovsStore{};
172 AvailableButtons = Available;
173 Count =
static_cast<uint8_t
>(64 - std::countl_zero(Available));
180 AvailableButtons = (std::numeric_limits<uint64_t>::max)();
184 AvailableButtons = (1ULL << _Count) - 1;
185 Count =
static_cast<uint8_t
>(_Count);
191 uint64_t AvailableButtons{0};
206 std::span<const TouchpadFinger>
Fingers()
const {
219 std::array<TouchpadFinger, MRC_MAX_NUM_TOUCHPAD_FINGERS> FingersStore{};
220 uint8_t FingerCount{0};
240 std::array<Touchpad, MRC_MAX_NUM_TOUCHPADS> TouchpadsStore{};
241 uint8_t TouchpadCount{0};
264 GameData = std::move(Data);
288 std::string GameData;
289 std::array<Joystick, MRC_MAX_NUM_JOYSTICKS> JoysticksStore;
290 uint8_t JoystickCount{0};
314 std::span<const JoystickOutput>
Outputs()
const {
326 std::array<JoystickOutput, MRC_MAX_NUM_JOYSTICKS> OutputsStore;
327 uint8_t OutputCount{0};
351 EventName = std::move(Name);
363 EventName.resize(Len);
364 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(EventName.data()),
371 EventName == Other.EventName;
375 std::string EventName;
392 JoystickName = std::move(Name);
398 std::string_view
GetName()
const {
return JoystickName; }
404 JoystickName.resize(Len);
405 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(JoystickName.data()),
406 JoystickName.size()};
410 std::string JoystickName;
430 std::array<JoystickDescriptor, MRC_MAX_NUM_JOYSTICKS> DescriptorsStore;
431 uint8_t DescriptorCount{0};
442 Details = NewDetails;
446 Details = std::move(NewDetails);
459 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Details.data()),
467 Location = NewLocation;
471 Location = std::move(NewLocation);
483 Location.resize(Len);
484 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Location.data()),
492 CallStack = NewCallStack;
496 CallStack = std::move(NewCallStack);
508 CallStack.resize(Len);
509 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(CallStack.data()),
515 std::string Location;
516 std::string CallStack;
521 std::string_view _Description, int32_t _TextColor = -1,
522 int32_t _BackgroundColor = -1)
523 :
Hash(_Hash), TextColor{_TextColor}, BackgroundColor{_BackgroundColor} {
541 Name = std::move(NewName);
547 std::string_view
GetName()
const {
return Name; }
554 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Name.data()),
566 Group = std::move(NewGroup);
572 std::string_view
GetGroup()
const {
return Group; }
579 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Group.data()),
587 Description = NewDescription;
591 Description = std::move(NewDescription);
603 Description.resize(Len);
604 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Description.data()),
613 BackgroundColor = NewBackgroundColor;
621 std::string Description;
622 int32_t TextColor{-1};
623 int32_t BackgroundColor{-1};
#define MRC_MAX_NUM_TOUCHPADS
Definition NtNetComm.h:66
#define MRC_MAX_NUM_BUTTONS
Definition NtNetComm.h:58
#define MRC_MAX_ERROR_INFO_STR_LEN
Definition NtNetComm.h:64
#define MRC_MAX_NUM_POVS
Definition NtNetComm.h:57
#define MRC_MAX_NUM_AXES
Definition NtNetComm.h:56
#define MRC_MAX_OPMODE_STRING_LEN
Definition NtNetComm.h:59
#define MRC_MAX_NUM_TOUCHPAD_FINGERS
Definition NtNetComm.h:65
#define MRC_MAX_GAME_DATA_LEN
Definition NtNetComm.h:60
#define MRC_MAX_JOYSTICK_NAME_LEN
Definition NtNetComm.h:62
#define MRC_MAX_NUM_JOYSTICKS
Definition NtNetComm.h:55
#define MRC_MAX_EVENT_NAME_LEN
Definition NtNetComm.h:61
MatchType
Definition NetComm.h:330
@ Qualification
Definition NetComm.h:333
@ None
Definition NetComm.h:331
@ Playoff
Definition NetComm.h:334
@ Practice
Definition NetComm.h:332
RobotMode
Definition NetComm.h:21
@ Test
Definition NetComm.h:25
@ Autonomous
Definition NetComm.h:23
@ Unknown
Definition NetComm.h:22
@ Teleoperated
Definition NetComm.h:24
void MoveGameData(std::string &&Data)
Definition NetComm.h:263
OpModeHash CurrentOpMode
Definition NetComm.h:254
uint16_t MatchTime
Definition NetComm.h:253
std::span< const Joystick > Joysticks() const
Definition NetComm.h:276
std::span< Joystick > Joysticks()
Definition NetComm.h:272
void SetJoystickCount(uint8_t NewCount)
Definition NetComm.h:282
size_t GetJoystickCount() const
Definition NetComm.h:280
std::string_view GetGameData() const
Definition NetComm.h:270
ControlFlags ControlWord
Definition NetComm.h:252
void SetGameData(std::string_view Data)
Definition NetComm.h:256
uint32_t Alliance
Definition NetComm.h:87
uint32_t FmsConnected
Definition NetComm.h:83
uint32_t SupportsOpModes
Definition NetComm.h:86
uint32_t Reserved
Definition NetComm.h:88
uint32_t RobotMode
Definition NetComm.h:81
uint32_t EStop
Definition NetComm.h:82
constexpr bool operator==(const ControlFlags &Other) const
Definition NetComm.h:90
constexpr bool operator!=(const ControlFlags &Other) const
Definition NetComm.h:99
uint32_t Enabled
Definition NetComm.h:80
uint32_t WatchdogActive
Definition NetComm.h:85
constexpr void Reset()
Definition NetComm.h:103
uint32_t DsConnected
Definition NetComm.h:84
std::string_view GetCallStack() const
Definition NetComm.h:502
bool IsError
Definition NetComm.h:435
std::span< uint8_t > WritableDetailsBuffer(size_t Len)
Definition NetComm.h:454
void MoveCallStack(std::string &&NewCallStack)
Definition NetComm.h:495
int32_t ErrorCode
Definition NetComm.h:436
std::string_view GetDetails() const
Definition NetComm.h:452
void MoveLocation(std::string &&NewLocation)
Definition NetComm.h:470
void MoveDetails(std::string &&NewDetails)
Definition NetComm.h:445
std::span< uint8_t > WritableCallStackBuffer(size_t Len)
Definition NetComm.h:504
std::span< uint8_t > WritableLocationBuffer(size_t Len)
Definition NetComm.h:479
void SetDetails(std::string_view NewDetails)
Definition NetComm.h:438
void SetLocation(std::string_view NewLocation)
Definition NetComm.h:463
void SetCallStack(std::string_view NewCallStack)
Definition NetComm.h:488
std::string_view GetLocation() const
Definition NetComm.h:477
uint16_t GetAvailable() const
Definition NetComm.h:131
size_t GetMaxAvailableCount() const
Definition NetComm.h:141
std::span< int16_t > Axes()
Definition NetComm.h:118
void SetAvailable(uint16_t Available)
Definition NetComm.h:126
void SetMaxAvailableCount(size_t _Count)
Definition NetComm.h:133
std::span< const int16_t > Axes() const
Definition NetComm.h:122
std::string_view GetName() const
Definition NetComm.h:398
void MoveName(std::string &&Name)
Definition NetComm.h:391
uint8_t GamepadType
Definition NetComm.h:381
void SetName(std::string_view Name)
Definition NetComm.h:384
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:400
bool IsGamepad
Definition NetComm.h:380
uint8_t SupportedOutputs
Definition NetComm.h:382
void SetDescriptorCount(uint8_t NewCount)
Definition NetComm.h:424
std::span< const JoystickDescriptor > Descriptors() const
Definition NetComm.h:418
std::span< JoystickDescriptor > Descriptors()
Definition NetComm.h:414
size_t GetDescriptorCount() const
Definition NetComm.h:422
JoystickButtons Buttons
Definition NetComm.h:247
JoystickTouchpads Touchpads
Definition NetComm.h:248
JoystickAxes Axes
Definition NetComm.h:245
JoystickPovs Povs
Definition NetComm.h:246
uint16_t LeftRumble
Definition NetComm.h:298
uint16_t RightRumble
Definition NetComm.h:299
uint16_t LeftTriggerRumble
Definition NetComm.h:300
uint8_t G
Definition NetComm.h:296
uint8_t B
Definition NetComm.h:297
bool IsEmpty() const
Definition NetComm.h:303
uint8_t R
Definition NetComm.h:295
uint16_t RightTriggerRumble
Definition NetComm.h:301
std::span< JoystickOutput > Outputs()
Definition NetComm.h:310
std::span< const JoystickOutput > Outputs() const
Definition NetComm.h:314
size_t GetOutputCount() const
Definition NetComm.h:318
void SetOutputCount(uint8_t NewCount)
Definition NetComm.h:320
std::span< uint8_t > Povs()
Definition NetComm.h:151
size_t GetCount() const
Definition NetComm.h:161
void SetCount(uint8_t NewCount)
Definition NetComm.h:157
std::span< const uint8_t > Povs() const
Definition NetComm.h:153
void SetTouchpadCount(uint8_t NewCount)
Definition NetComm.h:234
size_t GetTouchpadCount() const
Definition NetComm.h:232
std::span< const Touchpad > Touchpads() const
Definition NetComm.h:228
std::span< Touchpad > Touchpads()
Definition NetComm.h:224
MatchType Type
Definition NetComm.h:341
uint8_t ReplayNumber
Definition NetComm.h:340
void SetEventName(std::string_view Name)
Definition NetComm.h:343
void MoveEventName(std::string &&Name)
Definition NetComm.h:350
std::string_view GetEventName() const
Definition NetComm.h:357
uint16_t MatchNumber
Definition NetComm.h:339
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:359
bool operator==(const MatchInfo &Other) const
Definition NetComm.h:368
static constexpr OpModeHash MakeTest(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:39
static constexpr OpModeHash FromValue(uint64_t Value)
Definition NetComm.h:63
static constexpr int RobotModeShift
Definition NetComm.h:37
static constexpr uint64_t EnabledMask
Definition NetComm.h:35
uint64_t RobotMode
Definition NetComm.h:30
constexpr uint64_t ToValue() const
Definition NetComm.h:71
static constexpr uint64_t HashMask
Definition NetComm.h:36
uint64_t Hash
Definition NetComm.h:29
uint64_t IsEnabled
Definition NetComm.h:31
uint64_t Reserved
Definition NetComm.h:32
static constexpr uint64_t RobotModeMask
Definition NetComm.h:34
static constexpr OpModeHash MakeAuto(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:55
static constexpr OpModeHash MakeTele(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:47
int32_t GetTextColor() const
Definition NetComm.h:610
void SetTextColor(int32_t NewTextColor)
Definition NetComm.h:608
std::string_view GetGroup() const
Definition NetComm.h:572
void MoveDescription(std::string &&NewDescription)
Definition NetComm.h:590
void MoveName(std::string &&NewName)
Definition NetComm.h:540
std::string_view GetDescription() const
Definition NetComm.h:597
void MoveGroup(std::string &&NewGroup)
Definition NetComm.h:565
OpMode(OpModeHash _Hash, std::string_view _Name, std::string_view _Group, std::string_view _Description, int32_t _TextColor=-1, int32_t _BackgroundColor=-1)
Definition NetComm.h:520
void SetGroup(std::string_view NewGroup)
Definition NetComm.h:558
OpModeHash Hash
Definition NetComm.h:531
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:549
void SetBackgroundColor(int32_t NewBackgroundColor)
Definition NetComm.h:612
std::string_view GetName() const
Definition NetComm.h:547
void SetName(std::string_view NewName)
Definition NetComm.h:533
void SetDescription(std::string_view NewDescription)
Definition NetComm.h:583
int32_t GetBackgroundColor() const
Definition NetComm.h:616
std::span< uint8_t > WritableDescriptionBuffer(size_t Len)
Definition NetComm.h:599
std::span< uint8_t > WritableGroupBuffer(size_t Len)
Definition NetComm.h:574
bool Down
Definition NetComm.h:196
uint16_t Y
Definition NetComm.h:198
uint16_t X
Definition NetComm.h:197
std::span< const TouchpadFinger > Fingers() const
Definition NetComm.h:206
size_t GetFingerCount() const
Definition NetComm.h:210
void SetFingerCount(uint8_t NewCount)
Definition NetComm.h:212
std::span< TouchpadFinger > Fingers()
Definition NetComm.h:202