#include "device.hpp" #include Device::Device() : reg_control(0x00) { std::cout << "Device::Device()" << std::endl; std::cout << +reg_control.raw << std::endl; reg_control.bits.POWER_DEV = Reg_Control::POWER_DEV::TURN_OFF; reg_control.bits.SPEED = Reg_Control::SPEED::STAND_STILL; std::cout << "POWER = " << +reg_control.bits.POWER_DEV << std::endl; std::cout << "SPEED = " <<+reg_control.bits.SPEED << std::endl; } void Device::doSomething() { std::cout << "Device::doSomething()" << std::endl; reg_control.bits.POWER_DEV = Reg_Control::POWER_DEV::TURN_ON; reg_control.bits.SPEED = Reg_Control::SPEED::FAST; if(reg_control.bits.POWER_DEV == Reg_Control::POWER_DEV::TURN_ON){ std::cout << "device turned on!" << std::endl; } std::cout << "POWER = " << +reg_control.bits.POWER_DEV << std::endl; std::cout << "SPEED = " << +reg_control.bits.SPEED << std::endl; std::cout << +reg_control << std::endl; reg_control = 0; std::cout << +reg_control << std::endl; std::cout << "POWER = " << +reg_control.bits.POWER_DEV << std::endl; std::cout << "SPEED = " << +reg_control.bits.SPEED << std::endl; //reg_control.bits.SPEED = Reg_Control::SPEED::FAST; reg_control.bits.POWER_DEV = Reg_Control::POWER_DEV::TURN_ON; std::cout << "POWER = " << +reg_control.bits.POWER_DEV << std::endl; std::cout << "SPEED = " << +reg_control.bits.SPEED << std::endl; } void Device::status() { // imitating read hardware register (for example reading from device via SPI or i2c) reg_motorStatus = 0xFE; if(reg_motorStatus.bits.POWER == Reg_MotorStatus::POWER::ON) { std::cout << "Motor is Powered ON!" << std::endl; } else { std::cout << "Motor is Powered OFF!" << std::endl; } // will throw error because this bitfield is set const! //reg_motorStatus.bits.STATUS = Reg_MotorStatus::STATUS::STANDSTILL; std::cout << +reg_motorStatus.bits.POWER << std::endl; std::cout << "Motor Status : " << +reg_motorStatus.bits.STATUS << std::endl; }