@@ -84,26 +84,24 @@ extern const uint32_t analogInputPin[];
8484
8585/* Convert a digital pin number Dxx to a PinName PX_n */
8686/* Note: Analog pin is also a digital pin */
87- #define digitalPinToPinName (p ) (((uint32_t)p < NUM_DIGITAL_PINS) ? digitalPin[p] : \
88- ((uint32_t)p >= NUM_ANALOG_FIRST ) && ((uint32_t)p <= NUM_ANALOG_LAST ) ? \
89- digitalPin[analogInputPin[p-NUM_ANALOG_FIRST ]] : NC)
87+ #define digitalPinToPinName (p ) (((uint32_t)(p) < NUM_DIGITAL_PINS) ? digitalPin[p] : \
88+ ((( uint32_t)(p) & PANA) == PANA ) && ((uint32_t)(p) < NUM_ANALOG_INTERNAL_FIRST ) ? \
89+ digitalPin[analogInputPin[(p)&PANA_IDX ]] : NC)
9090/* Convert a PinName PX_n to a digital pin number */
9191uint32_t pinNametoDigitalPin (PinName p );
9292
9393/* Convert an analog pin number to a digital pin number */
9494#if NUM_ANALOG_INPUTS > 0
9595/* Used by analogRead api to have A0 == 0 */
9696/* Non contiguous analog pins definition in digitalPin array */
97- #define analogInputToDigitalPin (p ) ( \
98- ((uint32_t)p < NUM_ANALOG_INPUTS) ? analogInputPin[p] : \
99- ((uint32_t)p >= NUM_ANALOG_FIRST) && ((uint32_t)p <= NUM_ANALOG_LAST) ? \
100- analogInputPin[p-NUM_ANALOG_FIRST] : p)
101- #else
102- /* No analog pin defined */
97+ #define analogInputToDigitalPin (p ) (((uint32_t)(p) < NUM_ANALOG_INPUTS) ? analogInputPin[p] : \
98+ (((uint32_t)(p) & PANA) == PANA) && ((uint32_t)(p) < NUM_ANALOG_INTERNAL_FIRST) ? \
99+ analogInputPin[(p)&PANA_IDX] : (uint32_t)NC)
100+ #else /* No analog pin defined */
103101#define analogInputToDigitalPin (p ) (NUM_DIGITAL_PINS)
104102#endif // NUM_ANALOG_INPUTS > 0
105103
106- /* Convert an analog pin number Axx to a PinName PX_n */
104+ /* Convert an analog pin number Ax to a PinName PX_n */
107105PinName analogInputToPinName (uint32_t pin );
108106
109107/* All pins could manage EXTI */
@@ -162,8 +160,9 @@ PinName analogInputToPinName(uint32_t pin);
162160#define pinIsSerial (p ) ((digitalPinFirstOccurence(p) == PIN_SERIAL_RX) ||\
163161 (digitalPinFirstOccurence(p) == PIN_SERIAL_TX))
164162#endif
165- /* Convenient macro to handle Analog */
166- bool pinIsAnalogInput (uint32_t pin );
163+ /* Convenient macro to handle Analog for Firmata */
164+ #define pinIsAnalogInput digitalpinIsAnalogInput
165+ bool digitalpinIsAnalogInput (uint32_t pin );
167166uint32_t digitalPinToAnalogInput (uint32_t pin );
168167
169168#ifdef __cplusplus
0 commit comments