Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>

    
   
void decode_status(uint8_t reg) {
    if((reg&(1<<0))==1){printf("%s\n",a);}
    if((reg&(1<<1))==1){printf("%s\n",b);}
    if((reg&(1<<2))==1){printf("%s\n",c);}
    if((reg&(1<<3))==1){printf("%s\n",d);}
    if((reg&(1<<4))==1){printf("%s\n",e);}
    if((reg&(1<<5))==1){printf("%s\n",f);}
    if((reg&(1<<6))==1){printf("%s\n",g);}
    if((reg&(1<<7))==1){printf("%s\n",h);}
}
int main() {
    uint8_t reg;
    const char *a="Power On",*b="Error",*c="Tx Ready";*d="Rx Ready",*e="Overheat",*f="Undervoltage",*g="Timeout",*h="Reserved";
    scanf("%hhu", &reg);
    decode_status(reg);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready