#include <stdio.h>
#include <stdint.h>
typedef union {
uint8_t reg;
struct {
uint8_t power_on : 1;
uint8_t power_onerror : 1;
uint8_t tx_ready : 1;
uint8_t rx_ready : 1;
uint8_t overheat : 1;
uint8_t uv : 1;
uint8_t timeout : 1;
uint8_t reserved : 1;
} bits;
} Register;
void decode_status(uint8_t status_reg) {
Register reg = { .reg = status_reg };
if (reg.bits.power_on) {
printf("Power On\n");
}
if (reg.bits.power_onerror) {
printf("Error\n");
}
if (reg.bits.tx_ready) {
printf("Tx Ready\n");
}
if (reg.bits.rx_ready) {
printf("Rx Ready\n");
}
if (reg.bits.overheat) {
printf("Overheat\n");
}
if (reg.bits.uv) {
printf("Undervoltage\n");
}
if (reg.bits.timeout) {
printf("Timeout\n");
}
if (reg.bits.reserved) {
printf("Reserved\n");
}
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}
Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready