crc16
msg->crc = crc16(0, (void *)msg, sizeof(*msg) - 2);
packet.crc = crc16(0, (void *)&packet, sizeof(packet) - 2);
msg->crc = crc16(0, (void *)msg, sizeof(*msg) - 2);
packet.crc = crc16(0, (void *)&packet, sizeof(packet) - 2);
msg->crc = crc16(0, (void *)msg, sizeof(*msg) - 2);
packet.crc = crc16(0, (void *)&packet, sizeof(packet) - 2);
msg->crc = crc16(0, (void *)msg, sizeof(*msg) - 2);
packet.crc = crc16(0, (void *)&packet, sizeof(packet) - 2);
msg->crc = crc16(0, (void *)msg, sizeof(*msg) - 2);
packet.crc = crc16(0, (void *)&packet, sizeof(packet) - 2);
if (crc16(0, (uint8_t *)&packet, sizeof(packet)))
gpu_id = crc16(0, crc_buf, sizeof(buf)) &