23#define UDP_PACKET_MAX_SIZE_XRP 1000
130 return data.
value == 1;
179 data.
value = value ? 1 : 0;
229 bool sendValue_xrp_encoder(
const uint8_t
id, int32_t count, int32_t period = 0, int32_t divisor = 1,
bool checkUniqueness =
false)
263 bool sendValue_xrp_gyro(
float xRate,
float yRate,
float zRate,
float roll,
float pitch,
float yaw,
bool checkUniqueness =
false)
266 data.
rates[0] = xRate;
267 data.
rates[1] = yRate;
268 data.
rates[2] = zRate;
296 bool sendValue_xrp_accel(
const uint8_t
id,
float xAccel,
float yAccel,
float zAccel,
bool checkUniqueness =
false)
319 bool begin(
void (*_receiveCallback)(
void),
void (*_sendCallback)(
void), uint16_t port = 3540);
332 bool begin(
const char* ssid,
const char* password,
void (*_receiveCallback)(
void),
void (*_sendCallback)(
void),
const char* hostname =
"XRP-XSWC", uint16_t port = 3540);
354 template <
typename T>
358 if (msg->getTag() == TYPE_TO_TAG_VAL(T) && (msg->hasId() ==
false || msg->getId() ==
id)) {
360 data = *
static_cast<T*
>(msg->getData());
368 template <
typename T>
372 if (checkUniqueness) {
375 if (msg->getTag() == TYPE_TO_TAG_VAL(T)) {
376 if constexpr (HAS_ID(T) ==
false) {
381 if (msg->getId() == data.id) {
390 if (message ==
nullptr) {
394 if (message !=
nullptr) {
418 char rxBuf[UDP_PACKET_MAX_SIZE_XRP + 1];
419 char txBuf[UDP_PACKET_MAX_SIZE_XRP + 1];
Definition message_type.h:3
virtual void setData(const void *data)=0
Definition xrp_encoder.h:20
Factory class to create message types based on their tag. This is only used internally by the XSWC cl...
Definition xrp-style-wpilib-comms.h:35
static MessageType * createMessageType(uint8_t tag)
Definition xrp-style-wpilib-comms.h:37
top level class for the XRP-style WPILib communications This class handles the UDP communication,...
Definition xrp-style-wpilib-comms.h:29
boolean processReceivedBufferIntoMessages(char *buffer, int length)
Definition xrp-style-wpilib-comms.cpp:16
char txBuf[UDP_PACKET_MAX_SIZE_XRP+1]
Definition xrp-style-wpilib-comms.h:419
bool sendValue_xrp_accel(const uint8_t id, float xAccel, float yAccel, float zAccel, bool checkUniqueness=false)
Sends accelerometer values.
Definition xrp-style-wpilib-comms.h:296
bool isConnected()
Definition xrp-style-wpilib-comms.cpp:176
int processMessagesIntoBufferToSend(char *buffer, int length)
Definition xrp-style-wpilib-comms.cpp:50
boolean cmdEnable
Definition xrp-style-wpilib-comms.h:411
bool getData(T &data, const uint8_t id)
Definition xrp-style-wpilib-comms.h:355
void(* sendCallback)(void)
Definition xrp-style-wpilib-comms.h:425
bool sendData_xrp_gyro(const xrp_gyro_t &data, bool checkUniqueness=false)
Sends gyroscope data.
Definition xrp-style-wpilib-comms.h:246
void(* receiveCallback)(void)
Definition xrp-style-wpilib-comms.h:426
float getValue_xrp_servo(const uint8_t id)
Retrieves the value of a specific servo by ID.
Definition xrp-style-wpilib-comms.h:103
bool isConnectedAndEnabled()
Definition xrp-style-wpilib-comms.cpp:186
unsigned long millisWhenLastMessageReceived
Definition xrp-style-wpilib-comms.h:413
IPAddress udpRemoteAddr
Definition xrp-style-wpilib-comms.h:422
int32_t udpRemotePort
Definition xrp-style-wpilib-comms.h:423
unsigned long millisWhenLastSent
Definition xrp-style-wpilib-comms.h:414
bool sendData_xrp_accel(const xrp_accel_t &data, bool checkUniqueness=false)
Sends accelerometer data.
Definition xrp-style-wpilib-comms.h:282
bool getData_xrp_motor(xrp_motor_t &data, const uint8_t id)
Retrieves data for a specific motor by ID.
Definition xrp-style-wpilib-comms.h:70
bool begin(void(*_receiveCallback)(void), void(*_sendCallback)(void), uint16_t port=3540)
begin udp communication on given port
Definition xrp-style-wpilib-comms.cpp:61
bool getData_xrp_analog(xrp_analog_t &data, const uint8_t id)
Retrieves data for a specific analog input by ID.
Definition xrp-style-wpilib-comms.h:139
unsigned long TIMEOUT_MS
Definition xrp-style-wpilib-comms.h:344
bool update()
call this in void loop()
Definition xrp-style-wpilib-comms.cpp:120
bool getData_xrp_servo(xrp_servo_t &data, const uint8_t id)
Retrieves data for a specific servo by ID.
Definition xrp-style-wpilib-comms.h:93
bool getData_xrp_dio(xrp_dio_t &data, const uint8_t id)
Retrieves data for a specific digital input/output by ID.
Definition xrp-style-wpilib-comms.h:116
bool sendValue_xrp_dio(const uint8_t id, bool value, bool checkUniqueness=false)
Send a boolean value for a specific digital input/output by ID.
Definition xrp-style-wpilib-comms.h:175
unsigned long MIN_UPDATE_TIME_MS
Definition xrp-style-wpilib-comms.h:345
bool connectedToRemote
Definition xrp-style-wpilib-comms.h:421
XSWC()
constructor of XSWC class, use the global xswc instance to access this class
Definition xrp-style-wpilib-comms.cpp:9
bool isEnabled()
Definition xrp-style-wpilib-comms.cpp:181
bool sendValue_xrp_gyro(float xRate, float yRate, float zRate, float roll, float pitch, float yaw, bool checkUniqueness=false)
Sends gyroscope values.
Definition xrp-style-wpilib-comms.h:263
char rxBuf[UDP_PACKET_MAX_SIZE_XRP+1]
Definition xrp-style-wpilib-comms.h:418
bool useAP
set to true before calling begin() to skip straight to creating an Access Point
Definition xrp-style-wpilib-comms.h:350
WiFiUDP udp
Definition xrp-style-wpilib-comms.h:406
uint16_t txSeq
Definition xrp-style-wpilib-comms.h:416
bool getValue_xrp_dio(const uint8_t id)
Retrieves the value of a specific digital input/output by ID.
Definition xrp-style-wpilib-comms.h:126
float getValue_xrp_analog(const uint8_t id)
Retrieves the value of a specific analog input by ID.
Definition xrp-style-wpilib-comms.h:149
std::vector< MessageType * > receivedMessages
Definition xrp-style-wpilib-comms.h:408
bool sendData_xrp_dio(const xrp_dio_t &data, bool checkUniqueness=false)
Sends data for a specific digital input by ID.
Definition xrp-style-wpilib-comms.h:164
std::vector< MessageType * > sentMessages
Definition xrp-style-wpilib-comms.h:409
bool sendData(T data, bool checkUniqueness)
Definition xrp-style-wpilib-comms.h:369
bool sendValue_xrp_analog(const uint8_t id, float value, bool checkUniqueness=false)
Sends a float value for a specific analog input by ID.
Definition xrp-style-wpilib-comms.h:201
float getValue_xrp_motor(const uint8_t id)
Retrieves the value of a specific motor by ID.
Definition xrp-style-wpilib-comms.h:80
bool sendData_xrp_analog(const xrp_analog_t &data, bool checkUniqueness=false)
Sends data for a specific analog input by ID.
Definition xrp-style-wpilib-comms.h:189
bool sendData_xrp_encoder(const xrp_encoder_t &data, bool checkUniqueness=false)
Sends data for a specific encoder by ID.
Definition xrp-style-wpilib-comms.h:215
bool sendValue_xrp_encoder(const uint8_t id, int32_t count, int32_t period=0, int32_t divisor=1, bool checkUniqueness=false)
Sends values for a specific encoder by ID.
Definition xrp-style-wpilib-comms.h:229
Definition xrp_accel.h:24
Definition xrp_analog.h:18
Definition xrp_motor.h:19
Definition xrp_servo.h:18
float accels[3]
Definition xrp_accel.h:7
Definition xrp_analog.h:5
float value
Definition xrp_analog.h:7
uint8_t id
Definition xrp_analog.h:6
uint8_t value
Definition xrp_dio.h:7
uint8_t id
Definition xrp_dio.h:6
Definition xrp_encoder.h:5
int32_t count
Definition xrp_encoder.h:7
uint8_t id
Definition xrp_encoder.h:6
int32_t period
Definition xrp_encoder.h:8
int32_t divisor
Definition xrp_encoder.h:9
float angles[3]
Definition xrp_gyro.h:15
float rates[3]
Definition xrp_gyro.h:7
float value
Definition xrp_motor.h:8
float value
Definition xrp_servo.h:7
XSWC xswc
Definition xrp-style-wpilib-comms.cpp:191