The bit operations aren't difficult. Here's an example:
Code:
itsme@itsme:~/C$ cat bitfield.c
#include <stdio.h>
#include <stdint.h>
int main(void)
{
uint32_t bitfield;
bitfield = 1; // Set the ID, 1 bit
bitfield |= 5 << 1; // Set the Mode, 3 bits
bitfield |= 12 << 4; // Set the State, 4 bits
bitfield |= 12345 << 8; // Set the Time, 16 bits
printf("ID: %d, Mode: %d, State: %d, Time: %d\n",
bitfield & 0x1, (bitfield >> 1) & 0x7,
(bitfield >> 4) & 0xF, (bitfield >> 8) & 0xFFFF);
return 0;
}
Code:
itsme@itsme:~/C$ ./bitfield
ID: 1, Mode: 5, State: 12, Time: 12345
itsme@itsme:~/C$