+
+#define ao_gpio_token_paster(x,y) x ## y
+#define ao_gpio_token_evaluator(x,y) ao_gpio_token_paster(x,y)
+
+#define ao_gpio_set(port, bit, pin, v) do { \
+ if (v) \
+ (ao_gpio_token_evaluator(PORT,port)) |= (1 << bit); \
+ else \
+ (ao_gpio_token_evaluator(PORT,port)) &= ~(1 << bit); \
+ } while (0)
+