У меня есть структура в этой форме:
struct args {
uint16_t portnum; /**< port number */
const char *portstr;/**< port number as string */
cmd_t cmd; /**< command (GET, SET) */
uint8_t value; /**< set value */
uint8_t id; /**< device id */
};
struct args arguments =
{ DEFAULT_PORTNUM, DEFAULT_PORTNUM_STR, UNDEF, 0, 0 };
Мне нужно извлечь "id, cmd, value" из аргументов и сохранить их в 2-байтовом буфере в этой форме:
arguments.value имеет максимальное значение 127, поэтому 7-й бит не используется
Я пробовал это, но это не работает
uint8_t buf[2];
buf[0] = arguments.cmd | arguments.id << 2;
buf[1] = arguments.value >> 1;
if(send(sockfd, buf, 2, 0) < 0 ){
//error
}