From 9845efcc4573ce34e8c9d257b77daf4e3e906cf0 Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Mon, 10 Apr 2023 18:30:49 +0800 Subject: [PATCH] wiringPi: allow external pins in pinMode, digitalRead, digitalWrite --- Code/devterm_wiringpi_cpi/wiringPi/wiringPi.c | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/Code/devterm_wiringpi_cpi/wiringPi/wiringPi.c b/Code/devterm_wiringpi_cpi/wiringPi/wiringPi.c index b6f273f..6c42106 100644 --- a/Code/devterm_wiringpi_cpi/wiringPi/wiringPi.c +++ b/Code/devterm_wiringpi_cpi/wiringPi/wiringPi.c @@ -1446,7 +1446,14 @@ void pinMode (int pin, int mode) setupCheck ("pinMode") ; #ifdef CONFIG_CLOCKWORKPI - CPiPinMode(pin, mode); + + if ((pin & PI_GPIO_MASK) == 0) // On-board pin + { + CPiPinMode(pin, mode); + } else if ((node = wiringPiFindNode (pin)) != NULL) + { + node->pinMode (node, pin, mode) ; + } return; #endif @@ -1565,7 +1572,14 @@ int digitalRead (int pin) struct wiringPiNodeStruct *node = wiringPiNodes ; #ifdef CONFIG_CLOCKWORKPI - return CPiDigitalRead(pin); + if ((pin & PI_GPIO_MASK) == 0) // On-Board Pin + { + return CPiDigitalRead(pin); + } else { + if ((node = wiringPiFindNode (pin)) == NULL) + return LOW ; + return node->digitalRead (node, pin) ; + } #endif if ((pin & PI_GPIO_MASK) == 0) // On-Board Pin @@ -1632,7 +1646,13 @@ void digitalWrite (int pin, int value) struct wiringPiNodeStruct *node = wiringPiNodes ; #ifdef CONFIG_CLOCKWORKPI - CPiDigitalWrite(pin, value); + if ((pin & PI_GPIO_MASK) == 0) // On-Board Pin + { + CPiDigitalWrite(pin, value); + } else { + if ((node = wiringPiFindNode (pin)) != NULL) + node->digitalWrite (node, pin, value) ; + } return; #endif