#include <stdio.h>
#include <stdint.h>
#define check_bit(reg,bit) ((reg >> bit)& 1 )
#define power_on 0
#define Error 1
#define Tx_Ready 2
#define Rx_Ready 3
#define Overheat 4
#define undervoltage 5
#define timeout 6
#define reserved 7
void decode_status(uint8_t status_reg)
{
if(check_bit(status_reg,power_on))
{
printf("Power On\n");
}
if(check_bit(status_reg,Error))
{
printf("Error\n");
}
if(check_bit(status_reg,Tx_Ready))
{
printf("Tx Ready\n");
}
if(check_bit(status_reg,Rx_Ready))
{
printf("Rx Ready\n");
}
if(check_bit(status_reg,Overheat))
{
printf("Overheat\n");
}
if(check_bit(status_reg,undervoltage))
{
printf("Undervoltage\n");
}
if(check_bit(status_reg,timeout))
{
printf("Timeout\n");
}
if(check_bit(status_reg,reserved))
{
printf("Reserved\n");
}
// Your logic here
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready