diff --git a/io-helper.c b/io-helper.c index 2e05102..0603771 100644 --- a/io-helper.c +++ b/io-helper.c @@ -1,29 +1,57 @@ #include #include "io-helper.h" -volatile uint32_t outStates = 0; -volatile uint32_t inStates = 0; +volatile uint8_t outStates[]={0,0,0,0}; +volatile uint8_t inStates[] = {0,0,0,0}; + +/* @brief: copies a single bit from one char to another char (or arrays thereof) +* +* +*/ +/* +void ioHelperCpArb(volatile uint8_t *source, uint16_t sourceNr,volatile uint8_t *target, uint16_t targetNr) { + if(*(source+(sourceNr/8))&(1<<(sourceNr-((sourceNr/8)*8)))) + { + *(target+(targetNr/8))|=(1<<(targetNr-((targetNr/8)*8))); + } else *(target+(targetNr/8))&=~(1<<(targetNr-((targetNr/8)*8))); +} +*/ + +void ioHelperSetBit(volatile uint8_t *list, uint8_t nr, uint8_t state) { + unsigned char ArC=0; + ArC=nr/8; + if(state) *(list+ArC)|=(1<<(nr-(ArC*8))); + else *(list+ArC)&=~(1<<(nr-(ArC*8))); +} + +unsigned char ioHelperReadBit(volatile uint8_t *list, uint8_t nr) { + unsigned char ArC=0; + ArC=nr/8; + if (*(list+ArC)&(1<<(nr-(ArC*8)))) + { + return 1; + } else return 0; +} void ioHelperCpBit(uint8_t reg, uint8_t bi, uint8_t bo) { - if(reg&(1<