Какой камень? Есть плавучка, кидай float, нет плавучки, суй fixed point (в минутах или десятых/сотых). Аттрибут "packed" никто не отменял.
struct __attribute__((packed)) cmd_setXY
{
uint8_t adr;
uint8_t cmd;
uint8_t len;
float X;
float Y;
};
Потом, там где нужно:
cmd_setXY* cmd = (cmd_setXY*)(pdata);
X = cmd->X;
Y = cmd->Y;