ADC Config Flags

#include <iostream>
#include <cstdint>
using namespace std;

// your code here: declare enum class AdcConfig : uint8_t 
// with ChannelEnable=1, InterruptEnable=2, DMAEnable=4

enum class AdcConfig : uint8_t {
    ChannelEnable     = 1, // 0000 0001
    InterruptEnable   = 2, // 0000 0010
    DMAEnable         = 4  // 0000 0100
};

void printConfig(uint8_t cfg) {
	// your code here: implement void printConfig(uint8_t cfg)
   if(cfg & static_cast<uint8_t> (AdcConfig::ChannelEnable)){
      std::cout <<"ChannelEnable ";
   }

   if(cfg & static_cast<uint8_t> (AdcConfig::InterruptEnable)){
      std::cout<< "InterruptEnable ";
   }

   if(cfg & static_cast<uint8_t> (AdcConfig::DMAEnable)){
      std::cout<<"DMAEnable";
   }
   if(!cfg)
      std::cout<<"None";
}

int main() {
   int ch, intr, dma;
   cin >> ch >> intr >> dma;
   uint8_t cfg = 0;
   if (ch)   cfg |= static_cast<uint8_t>(AdcConfig::ChannelEnable);
   if (intr) cfg |= static_cast<uint8_t>(AdcConfig::InterruptEnable);
   if (dma)  cfg |= static_cast<uint8_t>(AdcConfig::DMAEnable);
   printConfig(cfg);
   return 0;
}
Upvote
Downvote
Loading...

Input

1 0 1

Expected Output

ChannelEnable DMAEnable