Line data Source code
1 : /* ✔ */
2 :
3 : #pragma once
4 :
5 : #include <AH/Hardware/Arduino-Hardware-Types.hpp>
6 : #include <AH/STL/climits>
7 : #include <AH/Settings/NamespaceSettings.hpp>
8 :
9 : BEGIN_AH_NAMESPACE
10 :
11 : class ExtendedIOElement;
12 :
13 : /**
14 : * @brief A namespace with alternatives to the standard Arduino IO functions
15 : * that can be used with extended IO pin numbers.
16 : */
17 : namespace ExtIO {
18 :
19 : /// @addtogroup AH_ExtIO
20 : /// @{
21 :
22 : /// Check if the given pin number is a real Arduino pin number, and not an ExtIO
23 : /// pin number.
24 849 : inline bool isNativePin(pin_t pin) {
25 849 : return pin.pin < NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS;
26 : }
27 :
28 : /**
29 : * @brief Find the IO element of a given extended IO pin number.
30 : *
31 : * @param pin
32 : * The extended IO pin number to find the IO element of.
33 : * @return A pointer to the extended IO element that the given pin belongs to.
34 : */
35 : ExtendedIOElement *getIOElementOfPinOrNull(pin_t pin);
36 : /// @copydoc getIOElementOfPinOrNull
37 : /// Throws an error if the element was not found.
38 : ExtendedIOElement *getIOElementOfPin(pin_t pin);
39 :
40 : /// An ExtIO version of the Arduino function
41 : /// @see ExtendedIOElement::pinMode
42 : void pinMode(pin_t pin, PinMode_t mode);
43 : /// An ExtIO version of the Arduino function
44 : /// @see ExtendedIOElement::digitalWrite
45 : void digitalWrite(pin_t pin, PinStatus_t val);
46 : /// An ExtIO version of the Arduino function
47 : /// @see ExtendedIOElement::digitalRead
48 : PinStatus_t digitalRead(pin_t pin);
49 :
50 : /// An ExtIO version of the Arduino function
51 : /// @see ExtendedIOElement::analogRead
52 : analog_t analogRead(pin_t pin);
53 : /// An ExtIO version of the Arduino function
54 : /// @see ExtendedIOElement::analogWrite
55 : void analogWrite(pin_t pin, analog_t val);
56 : /// An ExtIO version of the Arduino function
57 : /// @see ExtendedIOElement::analogWrite
58 : void analogWrite(pin_t pin, int val);
59 :
60 : /// An ExtIO version of the Arduino function
61 : void shiftOut(pin_t dataPin, pin_t clockPin, BitOrder_t bitOrder, uint8_t val);
62 :
63 : /// A buffered ExtIO version of the Arduino function
64 : /// @see ExtendedIOElement::pinModeBuffered
65 : void pinModeBuffered(pin_t pin, PinMode_t mode);
66 : /// A buffered ExtIO version of the Arduino function
67 : /// @see ExtendedIOElement::digitalWriteBuffered
68 : void digitalWriteBuffered(pin_t pin, PinStatus_t val);
69 : /// A buffered ExtIO version of the Arduino function
70 : /// @see ExtendedIOElement::digitalReadBuffered
71 : PinStatus_t digitalReadBuffered(pin_t pin);
72 :
73 : /// A buffered ExtIO version of the Arduino function
74 : /// @see ExtendedIOElement::analogReadBuffered
75 : analog_t analogReadBuffered(pin_t pin);
76 : /// A buffered ExtIO version of the Arduino function
77 : /// @see ExtendedIOElement::analogWriteBuffered
78 : void analogWriteBuffered(pin_t pin, analog_t val);
79 : /// A buffered ExtIO version of the Arduino function
80 : /// @see ExtendedIOElement::analogWriteBuffered
81 : void analogWriteBuffered(pin_t pin, int val);
82 :
83 : /// @}
84 :
85 : } // namespace ExtIO
86 :
87 : END_AH_NAMESPACE
|