ExternalIn
externalin.cpp@2:6c525c701aad, 2013-11-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |