ExternalIn

Dependents:   Telliskivi2_2014

externalin.cpp

Committer:
Reiko
Date:
2013-11-03
Revision:
2:6c525c701aad
Parent:
1:feaee10590b7

File content as of revision 2:6c525c701aad:

#include "externalin.h"

ExternalIn::ExternalIn(PCA9555 *ioExt, unsigned int pin)
    : extIO(ioExt), inPin(pin) {
    
    pinState = false;
 
    extIO->change(this, &ExternalIn::callChange);
}

ExternalIn::ExternalIn(PCA9555 *ioExt, unsigned int pin, bool defaultState)
    : extIO(ioExt), inPin(pin), pinState(defaultState) {
    
    extIO->change(this, &ExternalIn::callChange);
}

bool ExternalIn::read() {
    return extIO->getPin(inPin);
}

void ExternalIn::setState(bool newState) {
    bool oldState = pinState;
    pinState = newState;
    /*if (oldState != newState) {
        _callbackChange.call();
    }*/
}

void ExternalIn::change(void (*function)(void)) { 
    _callbackChange.attach(function);
}
/*
template<typename T>
void BallSens::change(T *object, void (T::*member)(void)) { 
    _callbackChange.attach(object, member); 
}
*/
void ExternalIn::callChange(void) {
    //setState((extIO->read() & ((unsigned int)1 << inPin)) > 0);
    _callbackChange.call();
}