60#ifndef WHITEBOARD_POSTER_STRING_CONVERSION
61#define WHITEBOARD_POSTER_STRING_CONVERSION
72#pragma clang diagnostic push
73#pragma clang diagnostic ignored "-Wunused-macros"
77#elif defined(__APPLE__)
78# include <machine/endian.h>
79# include <architecture/byte_order.h>
80# define bswap_16(x) NXSwapShort(x)
81# define bswap_32(x) NXSwapInt(x)
82# define bswap_64(x) NXSwapLongLong(x)
84# define bswap_16(x) __builtin_bswap16(x)
85# define bswap_32(x) __builtin_bswap32(x)
86# define bswap_64(x) __builtin_bswap64(x)
91#if (!defined(__BYTE_ORDER) && !defined(__LITTLE_ENDIAN)) || (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN)
92# if !defined(htonll) && !defined(ntohll)
93# define htonll(x) bswap_64(x)
94# define ntohll(x) bswap_64(x)
96# if !defined(htonl) && !defined(ntohl)
97# define htonl(x) bswap_32(x)
98# define ntohl(x) bswap_32(x)
100# if !defined(htons) && !defined(ntohs)
101# define htons(x) bswap_16(x)
102# define ntohs(x) bswap_16(x)
105# if !defined(htonll) && !defined(ntohll)
106# define htonll(x) (x)
107# define ntohll(x) (x)
109# if !defined(htonl) && !defined(ntohl)
113# if !defined(htons) && !defined(ntohs)
118#pragma clang diagnostic pop
127#pragma clang diagnostic push
128#pragma clang diagnostic ignored "-Wunused-variable"
130 if (len >= bufferSize) {
133 len += snprintf(descString + len, bufferSize - len,
"ip=%u", self->ip);
134 if (len >= bufferSize) {
137 len = gu_strlcat(descString,
", ", bufferSize);
138 if (len >= bufferSize) {
141 len += snprintf(descString + len, bufferSize - len,
"action=%d", self->action);
142 if (len >= bufferSize) {
145 len = gu_strlcat(descString,
", ", bufferSize);
146 if (len >= bufferSize) {
149 len += snprintf(descString + len, bufferSize - len,
"HeadYaw=%lf", (
double) self->HeadYaw);
150 if (len >= bufferSize) {
153 len = gu_strlcat(descString,
", ", bufferSize);
154 if (len >= bufferSize) {
157 len += snprintf(descString + len, bufferSize - len,
"HeadPitch=%lf", (
double) self->HeadPitch);
158 if (len >= bufferSize) {
161 len = gu_strlcat(descString,
", ", bufferSize);
162 if (len >= bufferSize) {
165 len += snprintf(descString + len, bufferSize - len,
"stance=%d", self->stance);
166 if (len >= bufferSize) {
169 len = gu_strlcat(descString,
", ", bufferSize);
170 if (len >= bufferSize) {
173 len += snprintf(descString + len, bufferSize - len,
"streamType=%d", self->streamType);
174 if (len >= bufferSize) {
177 len = gu_strlcat(descString,
", ", bufferSize);
178 if (len >= bufferSize) {
181 len += snprintf(descString + len, bufferSize - len,
"selectedCamera=%d", self->selectedCamera);
182 if (len >= bufferSize) {
185 len = gu_strlcat(descString,
", ", bufferSize);
186 if (len >= bufferSize) {
189 len += snprintf(descString + len, bufferSize - len,
"sayString=%s", self->sayString);
190 if (len >= bufferSize) {
193 len = gu_strlcat(descString,
", ", bufferSize);
194 if (len >= bufferSize) {
197 len += snprintf(descString + len, bufferSize - len,
"walk=%d", self->walk);
198 if (len >= bufferSize) {
201 len = gu_strlcat(descString,
", ", bufferSize);
202 if (len >= bufferSize) {
205 len += snprintf(descString + len, bufferSize - len,
"turn=%d", self->turn);
206 if (len >= bufferSize) {
209 len = gu_strlcat(descString,
", ", bufferSize);
210 if (len >= bufferSize) {
213 len += snprintf(descString + len, bufferSize - len,
"timestamp=%d", self->timestamp);
215#pragma clang diagnostic pop
223#pragma clang diagnostic push
224#pragma clang diagnostic ignored "-Wunused-variable"
226 if (len >= bufferSize) {
229 len += snprintf(toString + len, bufferSize - len,
"%u", self->ip);
230 if (len >= bufferSize) {
233 len = gu_strlcat(toString,
", ", bufferSize);
234 if (len >= bufferSize) {
237 len += snprintf(toString + len, bufferSize - len,
"%d", self->action);
238 if (len >= bufferSize) {
241 len = gu_strlcat(toString,
", ", bufferSize);
242 if (len >= bufferSize) {
245 len += snprintf(toString + len, bufferSize - len,
"%lf", (
double) self->HeadYaw);
246 if (len >= bufferSize) {
249 len = gu_strlcat(toString,
", ", bufferSize);
250 if (len >= bufferSize) {
253 len += snprintf(toString + len, bufferSize - len,
"%lf", (
double) self->HeadPitch);
254 if (len >= bufferSize) {
257 len = gu_strlcat(toString,
", ", bufferSize);
258 if (len >= bufferSize) {
261 len += snprintf(toString + len, bufferSize - len,
"%d", self->stance);
262 if (len >= bufferSize) {
265 len = gu_strlcat(toString,
", ", bufferSize);
266 if (len >= bufferSize) {
269 len += snprintf(toString + len, bufferSize - len,
"%d", self->streamType);
270 if (len >= bufferSize) {
273 len = gu_strlcat(toString,
", ", bufferSize);
274 if (len >= bufferSize) {
277 len += snprintf(toString + len, bufferSize - len,
"%d", self->selectedCamera);
278 if (len >= bufferSize) {
281 len = gu_strlcat(toString,
", ", bufferSize);
282 if (len >= bufferSize) {
285 len += snprintf(toString + len, bufferSize - len,
"%s", self->sayString);
286 if (len >= bufferSize) {
289 len = gu_strlcat(toString,
", ", bufferSize);
290 if (len >= bufferSize) {
293 len += snprintf(toString + len, bufferSize - len,
"%d", self->walk);
294 if (len >= bufferSize) {
297 len = gu_strlcat(toString,
", ", bufferSize);
298 if (len >= bufferSize) {
301 len += snprintf(toString + len, bufferSize - len,
"%d", self->turn);
302 if (len >= bufferSize) {
305 len = gu_strlcat(toString,
", ", bufferSize);
306 if (len >= bufferSize) {
309 len += snprintf(toString + len, bufferSize - len,
"%d", self->timestamp);
311#pragma clang diagnostic pop
319 size_t temp_length = strlen(str);
320 int length = (temp_length <= INT_MAX) ? ((
int)((ssize_t)temp_length)) : -1;
325 char* var_str = &var_str_buffer[0];
327 char* key = &key_buffer[0];
334 if (index == 0 && str[0] ==
'{') {
340 for (
int i = index; i < length; i++) {
342 if (bracecount == 0 && str[i] ==
'=') {
347 if (bracecount == 0 && isspace(str[i])) {
354 if (bracecount == 0 && str[i] ==
',') {
364 if (bracecount < 0) {
369 if (i == length - 1) {
373 if (endKey >= startKey && endKey - startKey < length) {
374 strncpy(key, str + startKey, ((
size_t)(endKey - startKey) + 1));
375 key[(endKey - startKey) + 1] = 0;
379 strncpy(var_str, str + startVar, ((
size_t)(index - startVar) + 1));
380 var_str[(index - startVar) + 1] = 0;
386 if (strlen(key) > 0) {
387 if (0 == strcmp(
"ip", key)) {
389 }
else if (0 == strcmp(
"action", key)) {
391 }
else if (0 == strcmp(
"HeadYaw", key)) {
393 }
else if (0 == strcmp(
"HeadPitch", key)) {
395 }
else if (0 == strcmp(
"stance", key)) {
397 }
else if (0 == strcmp(
"streamType", key)) {
399 }
else if (0 == strcmp(
"selectedCamera", key)) {
401 }
else if (0 == strcmp(
"sayString", key)) {
403 }
else if (0 == strcmp(
"walk", key)) {
405 }
else if (0 == strcmp(
"turn", key)) {
407 }
else if (0 == strcmp(
"timestamp", key)) {
417 self->ip = ((uint8_t)atoi(var_str));
422 self->action = ((int32_t)atoi(var_str));
427 self->HeadYaw = ((float)atof(var_str));
432 self->HeadPitch = ((float)atof(var_str));
437 self->stance = ((int32_t)atoi(var_str));
442 self->streamType = ((int32_t)atoi(var_str));
447 self->selectedCamera = ((int32_t)atoi(var_str));
452 strncpy(self->sayString, var_str, 30);
457 self->walk = ((int32_t)atoi(var_str));
462 self->turn = ((int32_t)atoi(var_str));
467 self->timestamp = ((int32_t)atoi(var_str));
474 }
while(index < length);
485 uint16_t bit_offset = 0;
486 uint8_t ip_nbo = (
self->ip);
489 for (b = (8 - 1); b >= 0; b--) {
491 uint16_t
byte = bit_offset / 8;
492 uint16_t bit = 7 - (bit_offset % 8);
493 unsigned long newbit = !!((ip_nbo >> b) & 1U);
494 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
495 bit_offset = bit_offset + 1;
500 int32_t action_nbo =
htonl(self->action);
503 for (b = (32 - 1); b >= 0; b--) {
505 uint16_t
byte = bit_offset / 8;
506 uint16_t bit = 7 - (bit_offset % 8);
507 unsigned long newbit = !!((action_nbo >> b) & 1U);
508 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
509 bit_offset = bit_offset + 1;
518 int32_t stance_nbo =
htonl(self->stance);
521 for (b = (32 - 1); b >= 0; b--) {
523 uint16_t
byte = bit_offset / 8;
524 uint16_t bit = 7 - (bit_offset % 8);
525 unsigned long newbit = !!((stance_nbo >> b) & 1U);
526 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
527 bit_offset = bit_offset + 1;
532 int32_t streamType_nbo =
htonl(self->streamType);
535 for (b = (32 - 1); b >= 0; b--) {
537 uint16_t
byte = bit_offset / 8;
538 uint16_t bit = 7 - (bit_offset % 8);
539 unsigned long newbit = !!((streamType_nbo >> b) & 1U);
540 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
541 bit_offset = bit_offset + 1;
546 int32_t selectedCamera_nbo =
htonl(self->selectedCamera);
549 for (b = (32 - 1); b >= 0; b--) {
551 uint16_t
byte = bit_offset / 8;
552 uint16_t bit = 7 - (bit_offset % 8);
553 unsigned long newbit = !!((selectedCamera_nbo >> b) & 1U);
554 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
555 bit_offset = bit_offset + 1;
561 uint8_t len = (uint8_t) strlen(self->sayString);
563 for (b = 7; b >= 0; b--) {
565 uint16_t
byte = bit_offset / 8;
566 uint16_t bit = 7 - (bit_offset % 8);
567 unsigned long newbit = !!((len >> b) & 1U);
568 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
569 bit_offset = bit_offset + 1;
573 for (c = 0; c < len; c++) {
574 for (b = 7; b >= 0; b--) {
576 uint16_t
byte = bit_offset / 8;
577 uint16_t bit = 7 - (bit_offset % 8);
578 unsigned long newbit = !!((
self->sayString[c] >> b) & 1U);
579 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
580 bit_offset = bit_offset + 1;
586 int32_t walk_nbo =
htonl(self->walk);
589 for (b = (32 - 1); b >= 0; b--) {
591 uint16_t
byte = bit_offset / 8;
592 uint16_t bit = 7 - (bit_offset % 8);
593 unsigned long newbit = !!((walk_nbo >> b) & 1U);
594 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
595 bit_offset = bit_offset + 1;
600 int32_t turn_nbo =
htonl(self->turn);
603 for (b = (32 - 1); b >= 0; b--) {
605 uint16_t
byte = bit_offset / 8;
606 uint16_t bit = 7 - (bit_offset % 8);
607 unsigned long newbit = !!((turn_nbo >> b) & 1U);
608 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
609 bit_offset = bit_offset + 1;
614 int32_t timestamp_nbo =
htonl(self->timestamp);
617 for (b = (32 - 1); b >= 0; b--) {
619 uint16_t
byte = bit_offset / 8;
620 uint16_t bit = 7 - (bit_offset % 8);
621 unsigned long newbit = !!((timestamp_nbo >> b) & 1U);
622 dst[byte] ^= (-newbit ^ dst[byte]) & (1UL << bit);
623 bit_offset = bit_offset + 1;
638 uint16_t bit_offset = 0;
641 for (b = (8 - 1); b >= 0; b--) {
643 uint16_t
byte = bit_offset / 8;
644 uint16_t bit = 7 - (bit_offset % 8);
645 char dataByte = src[byte];
646 unsigned char bitValue = (dataByte >> bit) & 1U;
647 dst->
ip ^= (-bitValue ^ dst->
ip) & (1UL << b);
648 bit_offset = bit_offset + 1;
656 for (b = (32 - 1); b >= 0; b--) {
658 uint16_t
byte = bit_offset / 8;
659 uint16_t bit = 7 - (bit_offset % 8);
660 char dataByte = src[byte];
661 unsigned char bitValue = (dataByte >> bit) & 1U;
663 bit_offset = bit_offset + 1;
675 for (b = (32 - 1); b >= 0; b--) {
677 uint16_t
byte = bit_offset / 8;
678 uint16_t bit = 7 - (bit_offset % 8);
679 char dataByte = src[byte];
680 unsigned char bitValue = (dataByte >> bit) & 1U;
682 bit_offset = bit_offset + 1;
690 for (b = (32 - 1); b >= 0; b--) {
692 uint16_t
byte = bit_offset / 8;
693 uint16_t bit = 7 - (bit_offset % 8);
694 char dataByte = src[byte];
695 unsigned char bitValue = (dataByte >> bit) & 1U;
697 bit_offset = bit_offset + 1;
705 for (b = (32 - 1); b >= 0; b--) {
707 uint16_t
byte = bit_offset / 8;
708 uint16_t bit = 7 - (bit_offset % 8);
709 char dataByte = src[byte];
710 unsigned char bitValue = (dataByte >> bit) & 1U;
712 bit_offset = bit_offset + 1;
721 for (b = 7; b >= 0; b--) {
723 uint16_t
byte = bit_offset / 8;
724 uint16_t bit = 7 - (bit_offset % 8);
725 char dataByte = src[byte];
726 unsigned char bitValue = (dataByte >> bit) & 1U;
727 len ^= (-bitValue ^ len) & (1UL << b);
728 bit_offset = bit_offset + 1;
732 for (c = 0; c < len; c++) {
733 for (b = 7; b >= 0; b--) {
735 uint16_t
byte = bit_offset / 8;
736 uint16_t bit = 7 - (bit_offset % 8);
737 char dataByte = src[byte];
738 unsigned char bitValue = (dataByte >> bit) & 1U;
740 bit_offset = bit_offset + 1;
748 for (b = (32 - 1); b >= 0; b--) {
750 uint16_t
byte = bit_offset / 8;
751 uint16_t bit = 7 - (bit_offset % 8);
752 char dataByte = src[byte];
753 unsigned char bitValue = (dataByte >> bit) & 1U;
754 dst->
walk ^= (-bitValue ^ dst->
walk) & (1UL << b);
755 bit_offset = bit_offset + 1;
763 for (b = (32 - 1); b >= 0; b--) {
765 uint16_t
byte = bit_offset / 8;
766 uint16_t bit = 7 - (bit_offset % 8);
767 char dataByte = src[byte];
768 unsigned char bitValue = (dataByte >> bit) & 1U;
769 dst->
turn ^= (-bitValue ^ dst->
turn) & (1UL << b);
770 bit_offset = bit_offset + 1;
778 for (b = (32 - 1); b >= 0; b--) {
780 uint16_t
byte = bit_offset / 8;
781 uint16_t bit = 7 - (bit_offset % 8);
782 char dataByte = src[byte];
783 unsigned char bitValue = (dataByte >> bit) & 1U;
785 bit_offset = bit_offset + 1;
WHITEBOARD_POSTER_STRING_CONVERSION.
int32_t action
Use guWhiteboard::Motions::action enum values!
int32_t selectedCamera
VisionCamera.
int32_t stance
guWhiteboard::Motions::stance
char sayString[30]
String passed to Say_t.
int32_t timestamp
Timestamp for task distinguishing.
int32_t streamType
Use enum StreamingType (Vision_Control.h)
uint8_t ip
Last octet of IP address.
struct wb_teleoperation_control_v_r * wb_teleoperation_control_v_r_from_string(struct wb_teleoperation_control_v_r *self, const char *str)
Convert from a string.
size_t wb_teleoperation_control_v_r_from_network_serialised(const char *src, struct wb_teleoperation_control_v_r *dst)
Convert from a compressed, serialised, network byte order byte stream.
size_t wb_teleoperation_control_v_r_to_network_serialised(const struct wb_teleoperation_control_v_r *self, char *dst)
Convert to a compressed, serialised, network byte order byte stream.
const char * wb_teleoperation_control_v_r_description(const struct wb_teleoperation_control_v_r *self, char *descString, size_t bufferSize)
Convert to a description string.
const char * wb_teleoperation_control_v_r_to_string(const struct wb_teleoperation_control_v_r *self, char *toString, size_t bufferSize)
Convert to a string.
#define TELEOPERATIONCONTROLVR_DESC_BUFFER_SIZE