ExternalIn

Dependents:   Telliskivi2_2014

Committer:
Reiko
Date:
Sun Nov 03 11:38:18 2013 +0000
Revision:
2:6c525c701aad
Parent:
1:feaee10590b7
Added constructor with ability to specify initial state

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Reiko 0:7e487b9595e4 1 #include "externalin.h"
Reiko 0:7e487b9595e4 2
Reiko 0:7e487b9595e4 3 ExternalIn::ExternalIn(PCA9555 *ioExt, unsigned int pin)
Reiko 0:7e487b9595e4 4 : extIO(ioExt), inPin(pin) {
Reiko 0:7e487b9595e4 5
Reiko 0:7e487b9595e4 6 pinState = false;
Reiko 0:7e487b9595e4 7
Reiko 0:7e487b9595e4 8 extIO->change(this, &ExternalIn::callChange);
Reiko 0:7e487b9595e4 9 }
Reiko 0:7e487b9595e4 10
Reiko 2:6c525c701aad 11 ExternalIn::ExternalIn(PCA9555 *ioExt, unsigned int pin, bool defaultState)
Reiko 2:6c525c701aad 12 : extIO(ioExt), inPin(pin), pinState(defaultState) {
Reiko 2:6c525c701aad 13
Reiko 2:6c525c701aad 14 extIO->change(this, &ExternalIn::callChange);
Reiko 2:6c525c701aad 15 }
Reiko 2:6c525c701aad 16
Reiko 0:7e487b9595e4 17 bool ExternalIn::read() {
Reiko 1:feaee10590b7 18 return extIO->getPin(inPin);
Reiko 0:7e487b9595e4 19 }
Reiko 0:7e487b9595e4 20
Reiko 0:7e487b9595e4 21 void ExternalIn::setState(bool newState) {
Reiko 0:7e487b9595e4 22 bool oldState = pinState;
Reiko 0:7e487b9595e4 23 pinState = newState;
Reiko 0:7e487b9595e4 24 /*if (oldState != newState) {
Reiko 0:7e487b9595e4 25 _callbackChange.call();
Reiko 0:7e487b9595e4 26 }*/
Reiko 0:7e487b9595e4 27 }
Reiko 0:7e487b9595e4 28
Reiko 0:7e487b9595e4 29 void ExternalIn::change(void (*function)(void)) {
Reiko 0:7e487b9595e4 30 _callbackChange.attach(function);
Reiko 0:7e487b9595e4 31 }
Reiko 0:7e487b9595e4 32 /*
Reiko 0:7e487b9595e4 33 template<typename T>
Reiko 0:7e487b9595e4 34 void BallSens::change(T *object, void (T::*member)(void)) {
Reiko 0:7e487b9595e4 35 _callbackChange.attach(object, member);
Reiko 0:7e487b9595e4 36 }
Reiko 0:7e487b9595e4 37 */
Reiko 0:7e487b9595e4 38 void ExternalIn::callChange(void) {
Reiko 0:7e487b9595e4 39 //setState((extIO->read() & ((unsigned int)1 << inPin)) > 0);
Reiko 0:7e487b9595e4 40 _callbackChange.call();
Reiko 0:7e487b9595e4 41 }