28 static constexpr uint64_t
AutoMask = 0x0100000000000000;
29 static constexpr uint64_t
TestMask = 0x0200000000000000;
31 static constexpr uint64_t
HashMask = 0x00FFFFFFFFFFFFFF;
88 std::span<int16_t>
Axes() {
92 std::span<const int16_t>
Axes()
const {
98 Count =
static_cast<uint8_t
>(16 - std::countl_zero(AvailableAxes));
107 AvailableAxes = (1 << _Count) - 1;
108 Count =
static_cast<uint8_t
>(_Count);
114 std::array<int16_t, MRC_MAX_NUM_AXES> AxesStore{};
115 uint16_t AvailableAxes{0};
121 std::span<uint8_t>
Povs() {
return std::span{PovsStore.data(),
GetCount()}; }
123 std::span<const uint8_t>
Povs()
const {
124 return std::span{PovsStore.data(),
GetCount()};
134 std::array<uint8_t, MRC_MAX_NUM_POVS> PovsStore{};
142 AvailableButtons = Available;
143 Count =
static_cast<uint8_t
>(64 - std::countl_zero(Available));
150 AvailableButtons = (std::numeric_limits<uint64_t>::max)();
154 AvailableButtons = (1ULL << _Count) - 1;
155 Count =
static_cast<uint8_t
>(_Count);
161 uint64_t AvailableButtons{0};
192 std::array<Joystick, MRC_MAX_NUM_JOYSTICKS> JoysticksStore;
193 uint8_t JoystickCount{0};
199 return std::span{RumbleStore.data(),
GetCount()};
203 return std::span{RumbleStore.data(),
GetCount()};
213 std::array<uint16_t, MRC_MAX_NUM_RUMBLE> RumbleStore;
238 EventName = std::move(Name);
250 EventName.resize(Len);
251 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(EventName.data()),
258 EventName == Other.EventName;
262 std::string EventName;
272 return std::span{AxesTypesStore.data(),
GetAxesCount()};
276 return std::span{AxesTypesStore.data(),
GetAxesCount()};
306 JoystickName = std::move(Name);
312 std::string_view
GetName()
const {
return JoystickName; }
318 JoystickName.resize(Len);
319 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(JoystickName.data()),
320 JoystickName.size()};
324 std::string JoystickName;
325 std::array<uint8_t, MRC_MAX_NUM_AXES> AxesTypesStore;
326 uint8_t AxesCount{0};
327 uint8_t ButtonCount{0};
339 Details = NewDetails;
343 Details = std::move(NewDetails);
356 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Details.data()),
364 Location = NewLocation;
368 Location = std::move(NewLocation);
380 Location.resize(Len);
381 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Location.data()),
389 CallStack = NewCallStack;
393 CallStack = std::move(NewCallStack);
405 CallStack.resize(Len);
406 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(CallStack.data()),
412 std::string Location;
413 std::string CallStack;
433 Name = std::move(NewName);
439 std::string_view
GetName()
const {
return Name; }
446 return std::span<uint8_t>{
reinterpret_cast<uint8_t*
>(Name.data()),
#define MRC_MAX_OPMODE_LEN
Definition NtNetComm.h:63
#define MRC_MAX_NUM_RUMBLE
Definition NtNetComm.h:62
#define MRC_MAX_NUM_BUTTONS
Definition NtNetComm.h:61
#define MRC_MAX_ERROR_INFO_STR_LEN
Definition NtNetComm.h:68
#define MRC_MAX_NUM_POVS
Definition NtNetComm.h:60
#define MRC_MAX_NUM_AXES
Definition NtNetComm.h:59
#define MRC_MAX_JOYSTICK_NAME_LEN
Definition NtNetComm.h:66
#define MRC_MAX_NUM_JOYSTICKS
Definition NtNetComm.h:58
#define MRC_MAX_EVENT_NAME_LEN
Definition NtNetComm.h:65
MatchType
Definition NetComm.h:217
OpModeHash CurrentOpMode
Definition NetComm.h:174
uint16_t MatchTime
Definition NetComm.h:173
std::span< const Joystick > Joysticks() const
Definition NetComm.h:180
std::span< Joystick > Joysticks()
Definition NetComm.h:176
void SetJoystickCount(uint8_t NewCount)
Definition NetComm.h:186
size_t GetJoystickCount() const
Definition NetComm.h:184
ControlFlags ControlWord
Definition NetComm.h:172
uint32_t Alliance
Definition NetComm.h:82
uint32_t FmsConnected
Definition NetComm.h:79
uint32_t Auto
Definition NetComm.h:76
uint32_t Reserved
Definition NetComm.h:83
uint32_t Test
Definition NetComm.h:77
uint32_t EStop
Definition NetComm.h:78
uint32_t Enabled
Definition NetComm.h:75
uint32_t WatchdogActive
Definition NetComm.h:81
uint32_t DsConnected
Definition NetComm.h:80
std::string_view GetCallStack() const
Definition NetComm.h:399
bool IsError
Definition NetComm.h:332
std::span< uint8_t > WritableDetailsBuffer(size_t Len)
Definition NetComm.h:351
void MoveCallStack(std::string &&NewCallStack)
Definition NetComm.h:392
int32_t ErrorCode
Definition NetComm.h:333
std::string_view GetDetails() const
Definition NetComm.h:349
void MoveLocation(std::string &&NewLocation)
Definition NetComm.h:367
void MoveDetails(std::string &&NewDetails)
Definition NetComm.h:342
std::span< uint8_t > WritableCallStackBuffer(size_t Len)
Definition NetComm.h:401
std::span< uint8_t > WritableLocationBuffer(size_t Len)
Definition NetComm.h:376
void SetDetails(std::string_view NewDetails)
Definition NetComm.h:335
void SetLocation(std::string_view NewLocation)
Definition NetComm.h:360
void SetCallStack(std::string_view NewCallStack)
Definition NetComm.h:385
std::string_view GetLocation() const
Definition NetComm.h:374
uint16_t GetAvailable() const
Definition NetComm.h:101
size_t GetMaxAvailableCount() const
Definition NetComm.h:111
std::span< int16_t > Axes()
Definition NetComm.h:88
void SetAvailable(uint16_t Available)
Definition NetComm.h:96
void SetMaxAvailableCount(size_t _Count)
Definition NetComm.h:103
std::span< const int16_t > Axes() const
Definition NetComm.h:92
size_t GetButtonsCount() const
Definition NetComm.h:296
uint8_t Type
Definition NetComm.h:268
std::string_view GetName() const
Definition NetComm.h:312
size_t GetAxesCount() const
Definition NetComm.h:283
void MoveName(std::string &&Name)
Definition NetComm.h:305
void SetName(std::string_view Name)
Definition NetComm.h:298
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:314
bool IsGamepad
Definition NetComm.h:267
std::span< uint8_t > AxesTypes()
Definition NetComm.h:271
std::span< const uint8_t > AxesTypes() const
Definition NetComm.h:275
size_t GetPovsCount() const
Definition NetComm.h:289
uint8_t RumbleCount
Definition NetComm.h:269
void SetPovsCount(uint8_t NewCount)
Definition NetComm.h:285
void SetAxesCount(uint8_t NewCount)
Definition NetComm.h:279
void SetButtonsCount(uint8_t NewCount)
Definition NetComm.h:291
JoystickButtons Buttons
Definition NetComm.h:168
JoystickAxes Axes
Definition NetComm.h:166
JoystickPovs Povs
Definition NetComm.h:167
std::span< uint8_t > Povs()
Definition NetComm.h:121
size_t GetCount() const
Definition NetComm.h:131
void SetCount(uint8_t NewCount)
Definition NetComm.h:127
std::span< const uint8_t > Povs() const
Definition NetComm.h:123
std::span< uint16_t > Rumbles()
Definition NetComm.h:198
void SetCount(uint8_t NewCount)
Definition NetComm.h:206
std::span< const uint16_t > Rumbles() const
Definition NetComm.h:202
size_t GetCount() const
Definition NetComm.h:210
MatchType Type
Definition NetComm.h:228
uint8_t ReplayNumber
Definition NetComm.h:227
void SetEventName(std::string_view Name)
Definition NetComm.h:230
void MoveEventName(std::string &&Name)
Definition NetComm.h:237
std::string_view GetEventName() const
Definition NetComm.h:244
uint16_t MatchNumber
Definition NetComm.h:226
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:246
bool operator==(const MatchInfo &Other) const
Definition NetComm.h:255
static constexpr OpModeHash MakeTest(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:33
static constexpr OpModeHash FromValue(uint64_t Value)
Definition NetComm.h:56
static constexpr uint64_t EnabledMask
Definition NetComm.h:30
uint64_t IsAuto
Definition NetComm.h:23
static constexpr uint64_t AutoMask
Definition NetComm.h:28
uint64_t IsTest
Definition NetComm.h:24
constexpr uint64_t ToValue() const
Definition NetComm.h:65
static constexpr uint64_t HashMask
Definition NetComm.h:31
uint64_t Hash
Definition NetComm.h:22
uint64_t IsEnabled
Definition NetComm.h:25
uint64_t Reserved
Definition NetComm.h:26
static constexpr uint64_t TestMask
Definition NetComm.h:29
static constexpr OpModeHash MakeAuto(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:48
static constexpr OpModeHash MakeTele(uint64_t Hash, bool Enabled=false)
Definition NetComm.h:41
void MoveName(std::string &&NewName)
Definition NetComm.h:432
OpMode(std::string_view _Name, OpModeHash _Hash)
Definition NetComm.h:417
OpModeHash Hash
Definition NetComm.h:423
std::span< uint8_t > WritableNameBuffer(size_t Len)
Definition NetComm.h:441
std::string_view GetName() const
Definition NetComm.h:439
void SetName(std::string_view NewName)
Definition NetComm.h:425