Decode Status Register into Human-Readable Flags

Code

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

#define CHECK_BIT(REG,BIT)          ((REG) & (1 << BIT))

const char * flag[8] = {
    "Power On",
    "Error",
    "Tx Ready",
    "Rx Ready",
    "Overheat",
    "Undervoltage",
    "Timeout",
    "Reserved"
};

void status_reg(uint8_t reg){
    for(int i = 0 ; i <= 7 ; ++i){
        if(CHECK_BIT(reg,i)){
            printf("%s\n", flag[i]);
        }
    }
}

int main(){
    uint8_t reg;
    scanf("%hhu", &reg);
    status_reg(reg);
return 0;

}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready