#include <stdio.h>
#include <stdint.h>
//define bit meaning
#define POWER_ON(r, b) (r & (1 << b))
#define ERROR(r, b) (r & (1 << b))
#define TX_READY(r, b) (r & (1 << b))
#define RX_READY(r, b) (r & (1 << b))
#define OVERHEAT(r, b) (r & (1 << b))
#define UNDERVOLT(r, b) (r & (1 << b))
#define TIMEOUT(r, b) (r & (1 << b))
#define RESERVED(r, b) (r & (1 << b))
void decode_status(uint8_t status_reg) {
// Your logic here
if (POWER_ON(status_reg, 0)) {
printf("Power On\n");
}
if (ERROR(status_reg, 1)) {
printf("Error\n");
}
if (TX_READY(status_reg, 2)) {
printf("Tx Ready\n");
}
if (RX_READY(status_reg, 3)) {
printf("Rx Ready\n");
}
if (OVERHEAT(status_reg, 4)) {
printf("Overheat\n");
}
if (UNDERVOLT(status_reg, 5)) {
printf("Undervoltage\n");
}
if (RESERVED(status_reg, 6)) {
printf("Timeout\n");
}
if (RX_READY(status_reg, 7)) {
printf("Reserved");
}
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready