Decode Status Register into Human-Readable Flags

Code

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

void decode_status(uint8_t status_reg) {
    // Your logic here
    int value ;
    uint8_t count = 0;

    while (count != 8 )
    {
        
      int a =  (1<<count) ;
       
        if ( (status_reg & a) == a )
        {
    switch (count)
    {
     case 0 :
     printf("Power On\n");
          break;
          case 1 :
     printf("Error\n");
     break;
          case 2 :
     printf("Tx Ready\n");
          break;
          case 3 :
     printf("Rx Ready\n");
          break;
          case 4 :
     printf("Overheat\n");
          break;
          case 5:
     printf("Undervoltage\n");
          break;
          case 6 :
     printf("Timeout\n");
          break;
          case 7 :
     printf("Reserved\n");
          break;
     default:
     printf("God is Great\n");
          break;

    }
            count ++ ;
            
        }
        else
        count++;
    }

}

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