 |
EPPL
0.1 alpha
|
|
Go to the documentation of this file.
44 #ifndef EPPL_H_INCLUDED
45 #include "eppl_config.h"
73 #define EPPL_NP (-255L)
87 #define EPPL_PINCNT ( EPPL_port_PORTSIZE * EPPL_port_PORTCNT )
103 #define EPPL_DEFPP(port, pin) ( (port)*EPPL_port_PORTSIZE + (pin) )
112 #define EPPL_PORTNR(px) (((px) % EPPL_PINCNT) / EPPL_port_PORTSIZE)
121 #define EPPL_PINNR(px) ((px)%EPPL_port_PORTSIZE)
129 #define EPPL_SC(px, conf) ( ((px) < 0) ? (px) : ( (px) + ( (conf) * EPPL_PINCNT ) ) )
138 #define EPPL_GC(px) ( ( (px) / EPPL_PINCNT) % (EPPL_port_CONFSIZE) )
159 #define EPPL_SR(px, from, to) ( ((px) < 0) ? (px) : ( ((from) << (EPPL_configBits)) | (to) ) * (EPPL_PINCNT) + (px))
164 #define EPPL_GRfrom(px) ( (((px) / EPPL_PINCNT) >> EPPL_configBits) % EPPL_avr8_CONFSIZE )
168 #define EPPL_GRto(px) EPPL_GC(px)
186 #define EPPL_COUNTARGS(args...) xEPPL_COUNTARGS(args, EPPL_COUNTARGS_RSEQ)
196 #define EPPL_ActivePinCountInSet(pins...) EPPL_GETSUBSET(EPPL_checkPinDefined, 0, EPPL_extractOne, +, pins)
212 #define EPPL_PinCountInSet(pins...) EPPL_COUNTARGS(pins)
242 #define EPPL_PROCESSEVERYPIN(macro, op, pins...) \
243 EPPL_LC(EPPL_PROCESSEVERYPIN, EPPL_COUNTARGS(pins))(macro, op, pins)
253 #define EPPL_PROCESSEVERYARG(macro, op, args...) \
254 EPPL_PROCESSEVERYPIN(macro, op, args)
286 #define EPPL_REPEATONEVERYPIN(macro, pins...) \
288 EPPL_PROCESSEVERYPIN(macro, none, pins) \
299 #define EPPL_REPEATONEVERYARG(macro, args...) \
301 EPPL_PROCESSEVERYARG(macro, none, args) \
336 #define eppl_init(default, pinconfigs...) \
338 EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generateInitOnePort, default, pinconfigs) \
351 #define eppl_reinitFromISR(pinconfigs...) \
353 EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generateReinitOnePort, pinconfigs) \
374 #define eppl_reinit(pinconfigs...) \
376 eppl_port_LockableBlockBegin(!(EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generatePortSafeCheck, pinconfigs) 1)); \
377 eppl_reinitFromISR(pinconfigs); \
378 eppl_port_LockableBlockEnd(!(EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generatePortSafeCheck, pinconfigs) 1)); \
408 #define eppl_mapIn(pins...) \
409 ( EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_port_generateMapInFromOnePort, pins) (uint8_t)0 )
420 #define eppl_mapOutFromISR(mode, value, pins...) \
421 do{ EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_port_generateMapOutToOnePort, mode, value, pins) }while(0)
439 #define eppl_mapOut(mode, value, pins...) \
441 eppl_port_LockableBlockBegin(!(EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generateMapOutSafeCheck, mode, pins) 1)); \
442 eppl_mapOutFromISR(mode, value, pins); \
443 eppl_port_LockableBlockEnd(!(EPPL_REPEAT(EPPL_port_PORTCNT, EPPL_generateMapOutSafeCheck, mode, pins) 1)); \
449 #include EPPL_TARGET_FILE