Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>
#define BIT_0 Power On
#define BIT_0	Power On
#define BIT_1	Error
#define BIT_2	Tx Ready
#define BIT_3	Rx Ready
#define BIT_4	Overheat
#define BIT_5	Undervoltage
#define BIT_6	Timeout
#define BIT_7	Reserved


void decode_status(uint8_t status_reg) {
    // Your logic here
    for(uint8_t i=0;i<8;i++)
    {
     if(status_reg&(1<<i))
     {
        if(i==0)
        {
            printf("Power On\n");
        }else if(i==1)
        {
            printf("Error\n");
        }else if(i==2)
        {
            printf("Tx Ready\n");
        }else if(i==3)
         {
            printf("Rx Ready\n");
         }else if(i==4)
         {
              printf("Overheat\n");
         }else if(i==5)
         {
              printf("Undervoltage\n");
         }else if(i==6)
         {
              printf("Timeout\n");
         }else if(i==7)
         {
               printf("Reserved\n");
         }

     }
    
    
    }
}

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

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready