initial analog card OOP draft
This commit is contained in:
parent
75aa6f490b
commit
ec7b7f2510
5 changed files with 273 additions and 6 deletions
|
@ -10,6 +10,47 @@ AnalogCard::AnalogCard() : dac0(DAC0_ADDRESS),
|
|||
}
|
||||
|
||||
void AnalogCard::dacWrite(uint8_t pin, uint16_t value)
|
||||
{
|
||||
this->setDACState(pin, value > 0);
|
||||
this->setDACValue(pin, value);
|
||||
}
|
||||
|
||||
void AnalogCard::setDACState(uint8_t pin, bool state)
|
||||
{
|
||||
this->dac_state[pin] = state;
|
||||
this->sendDataToDAC(pin, this->dac_value[pin]*state);
|
||||
if (this->dac_change_callback != NULL)
|
||||
{
|
||||
this->dac_change_callback(pin, state, this->dac_value[pin]);
|
||||
}
|
||||
}
|
||||
|
||||
void AnalogCard::setDACValue(uint8_t pin, uint16_t value)
|
||||
{
|
||||
this->dac_value[pin] = value;
|
||||
this->sendDataToDAC(pin, value*this->dac_state[pin]);
|
||||
if (this->dac_change_callback != NULL)
|
||||
{
|
||||
this->dac_change_callback(pin, this->dac_state[pin], value);
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t AnalogCard::getDACValue(uint8_t pin)
|
||||
{
|
||||
return this->dac_value[pin];
|
||||
}
|
||||
|
||||
bool AnalogCard::getDACState(uint8_t pin)
|
||||
{
|
||||
return this->dac_state[pin];
|
||||
}
|
||||
|
||||
uint16_t AnalogCard::getDACValue(uint8_t pin)
|
||||
{
|
||||
return this->dac_value[pin];
|
||||
}
|
||||
|
||||
void AnalogCard::sendDataToDAC(uint8_t pin, uint16_t value)
|
||||
{
|
||||
switch (pin)
|
||||
{
|
||||
|
@ -85,4 +126,14 @@ void AnalogCard::loop()
|
|||
uint8_t AnalogCard::getType()
|
||||
{
|
||||
return CARD_TYPE_ANALOG;
|
||||
}
|
||||
|
||||
void AnalogCard::registerDACChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback)
|
||||
{
|
||||
this->dac_change_callback = callback;
|
||||
}
|
||||
|
||||
void AnalogCard::deregisterDACChangeCallback()
|
||||
{
|
||||
this->dac_change_callback = NULL;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue