You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
717 B
58 lines
717 B
#ifndef __PIN_HPP__
|
|
#define __PIN_HPP__
|
|
|
|
#define NUMBER_OF_PINS
|
|
|
|
|
|
struct Pin
|
|
{
|
|
Pin(pinNo_et pinNo);
|
|
|
|
static _init_all()
|
|
{
|
|
for(uint8_t i = _index; i++) {
|
|
_list.init();
|
|
}
|
|
}
|
|
|
|
// implicit inline!
|
|
void write(bool state)
|
|
{
|
|
_write(id, state);
|
|
}
|
|
|
|
void init()
|
|
{
|
|
|
|
}
|
|
|
|
protected:
|
|
|
|
pinNo_et getID()
|
|
{
|
|
return id;
|
|
};
|
|
|
|
private:
|
|
|
|
static void _registerPin(pinNo_et p)
|
|
{
|
|
// check for duplicates
|
|
for(uint8_t i = _index; i>0;i--) {
|
|
assert(_list[i]->getID() != p);
|
|
}
|
|
// register pin
|
|
_list[_index] = p;
|
|
_index++;
|
|
}
|
|
|
|
static void _write(pinNo_et p, bool state);
|
|
static Pin* _list[NUMBER_OF_PINS];
|
|
static _throwError(pinNo_t p);
|
|
static uint8_t _index;
|
|
pinNo_et id;
|
|
}
|
|
|
|
#endif //__PIN_HPP__
|
|
|