Speeduino
Loading...
Searching...
No Matches
pinNumbers_t.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include "../utils/minmax.h"
5#include <array>
6#include "../../board_definition.h"
7#include "../../config_pages.h"
8
10template <uint8_t N, typename base_type = std::array<uint8_t, N>>
11struct pin_array_t : public base_type
12{
13 // LCOV_EXCL_START
14 // Default constructor test coverage isn't registered since it's only used in constexpr context.
15 constexpr pin_array_t()
16 {
17 base_type::fill(NOT_A_PIN);
18 }
19 // LCOV_EXCL_STOP
20
22 bool __attribute__((optimize("Os"))) isPinUsed(uint8_t pin) const
23 {
24 uint8_t index = 0;
25 while (index<N && pin!=this->operator[](index))
26 {
27 ++index;
28 }
29 return index<N;
30 }
31};
32
35
38
41{
42 void setInjectorPin(uint8_t index, uint8_t pin)
43 {
44 if (index<injectorPins.size())
45 {
46 injectorPins[index] = pin;
47 }
48 }
49 void setCoilPin(uint8_t index, uint8_t pin)
50 {
51 if (index<coilPins.size())
52 {
53 coilPins[index] = pin;
54 }
55 }
58 uint8_t pinTrigger = NOT_A_PIN; //The CAS pin
59 uint8_t pinTrigger2 = NOT_A_PIN; //The Cam Sensor pin known as secondary input
60 uint8_t pinTrigger3 = NOT_A_PIN; //the 2nd cam sensor pin known as tertiary input
61 uint8_t pinTPS = NOT_A_PIN;//TPS input pin
62 uint8_t pinMAP = NOT_A_PIN; //MAP sensor pin
63 uint8_t pinEMAP = NOT_A_PIN; //EMAP sensor pin
64 uint8_t pinIAT = NOT_A_PIN; //IAT sensor pin
65 uint8_t pinCLT = NOT_A_PIN; //CLS sensor pin
66 uint8_t pinO2 = NOT_A_PIN; //O2 Sensor pin
67 uint8_t pinO2_2 = NOT_A_PIN; //second O2 pin
68 uint8_t pinBat = NOT_A_PIN; //Battery voltage pin
69 uint8_t pinTachOut = NOT_A_PIN; //Tacho output
70 uint8_t pinFuelPump = NOT_A_PIN; //Fuel pump on/off
71 uint8_t pinIdle1 = NOT_A_PIN; //Single wire idle control
72 uint8_t pinIdle2 = NOT_A_PIN; //2 wire idle control (Not currently used)
73 uint8_t pinIdleUp = NOT_A_PIN; //Input for triggering Idle Up
74 uint8_t pinIdleUpOutput = NOT_A_PIN; //Output that follows (normal or inverted) the idle up pin
75 uint8_t pinCTPS = NOT_A_PIN; //Input for triggering closed throttle state
76 uint8_t pinFuel2Input = NOT_A_PIN; //Input for switching to the 2nd fuel table
77 uint8_t pinSpark2Input = NOT_A_PIN; //Input for switching to the 2nd ignition table
79 uint8_t pinVVT_1 = NOT_A_PIN; // vvt output 1
80 uint8_t pinVVT_2 = NOT_A_PIN; // vvt output 2
81 uint8_t pinFan = NOT_A_PIN; // Cooling fan output
82 uint8_t pinStepperDir = NOT_A_PIN; //Direction pin for the stepper motor driver
83 uint8_t pinStepperStep = NOT_A_PIN; //Step pin for the stepper motor driver
84 uint8_t pinStepperEnable = NOT_A_PIN; //Turning the DRV8825 driver on/off
86 uint8_t pinIgnBypass = NOT_A_PIN; //The pin used for an ignition bypass (Optional)
87 uint8_t pinFlex = NOT_A_PIN; //Pin with the flex sensor attached
88 uint8_t pinVSS = NOT_A_PIN;
89 uint8_t pinBaro = NOT_A_PIN; //Pin that an external barometric pressure sensor is attached to (If used)
90 uint8_t pinResetControl = NOT_A_PIN; // Output pin used control resetting the Arduino
93 uint8_t pinWMIEmpty = NOT_A_PIN; // Water tank empty sensor
94 uint8_t pinWMIIndicator = NOT_A_PIN; // No water indicator bulb
95 uint8_t pinWMIEnabled = NOT_A_PIN; // ON-OFF output to relay/pump/solenoid
96#if defined(MC33810_SUPPORT)
97 uint8_t pinMC33810_1_CS = NOT_A_PIN;
98 uint8_t pinMC33810_2_CS = NOT_A_PIN;
99 uint8_t mc33810InjBits[8];
100 uint8_t mc33810IgnBits[8];
101#endif
102#ifdef SD_LOGGING
103 uint8_t pinSDEnable = NOT_A_PIN; //Input for manually enabling SD logging
104#endif
105#ifdef USE_SPI_EEPROM
106 uint8_t pinSPIFlash_CS = NOT_A_PIN;
107#endif
108 uint8_t pinAirConComp = NOT_A_PIN; // Air conditioning compressor output
109 uint8_t pinAirConFan = NOT_A_PIN; // Stand-alone air conditioning fan output
110 uint8_t pinAirConRequest = NOT_A_PIN; // Air conditioning request input
111};
constexpr uint8_t NOT_A_PIN
Definition board_definition.h:92
An array of pin numbers.
Definition pinNumbers_t.h:12
bool isPinUsed(uint8_t pin) const
Does the array contain pin?
Definition pinNumbers_t.h:22
constexpr pin_array_t()
Definition pinNumbers_t.h:15
Store the pin assignments, as defined by the board.
Definition pinNumbers_t.h:41
uint8_t pinIdleUpOutput
Definition pinNumbers_t.h:74
uint8_t pinStepperEnable
Definition pinNumbers_t.h:84
uint8_t pinVVT_2
Definition pinNumbers_t.h:80
uint8_t pinIdle2
Definition pinNumbers_t.h:72
uint8_t pinO2
Definition pinNumbers_t.h:66
uint8_t pinFan
Definition pinNumbers_t.h:81
uint8_t pinO2_2
Definition pinNumbers_t.h:67
uint8_t pinTrigger
Definition pinNumbers_t.h:58
uint8_t pinOilPressure
Definition pinNumbers_t.h:92
uint8_t pinCTPS
Definition pinNumbers_t.h:75
uint8_t pinBoost
Definition pinNumbers_t.h:78
uint8_t pinWMIEnabled
Definition pinNumbers_t.h:95
uint8_t pinTPS
Definition pinNumbers_t.h:61
uint8_t pinStepperDir
Definition pinNumbers_t.h:82
uint8_t pinIgnBypass
Definition pinNumbers_t.h:86
uint8_t pinMAP
Definition pinNumbers_t.h:62
uint8_t pinTrigger2
Definition pinNumbers_t.h:59
void setInjectorPin(uint8_t index, uint8_t pin)
Definition pinNumbers_t.h:42
uint8_t pinFuel2Input
Definition pinNumbers_t.h:76
uint8_t pinWMIEmpty
Definition pinNumbers_t.h:93
uint8_t pinEMAP
Definition pinNumbers_t.h:63
uint8_t pinWMIIndicator
Definition pinNumbers_t.h:94
uint8_t pinVVT_1
Definition pinNumbers_t.h:79
uint8_t pinIAT
Definition pinNumbers_t.h:64
uint8_t pinFuelPump
Definition pinNumbers_t.h:70
uint8_t pinResetControl
Definition pinNumbers_t.h:90
uint8_t pinStepperStep
Definition pinNumbers_t.h:83
uint8_t pinIdleUp
Definition pinNumbers_t.h:73
uint8_t pinFuelPressure
Definition pinNumbers_t.h:91
uint8_t pinVSS
Definition pinNumbers_t.h:88
uint8_t pinLaunch
Definition pinNumbers_t.h:85
uint8_t pinBaro
Definition pinNumbers_t.h:89
injector_pins_t injectorPins
Definition pinNumbers_t.h:56
uint8_t pinTachOut
Definition pinNumbers_t.h:69
uint8_t pinSpark2Input
Definition pinNumbers_t.h:77
coil_pins_t coilPins
Definition pinNumbers_t.h:57
uint8_t pinAirConFan
Definition pinNumbers_t.h:109
void setCoilPin(uint8_t index, uint8_t pin)
Definition pinNumbers_t.h:49
uint8_t pinCLT
Definition pinNumbers_t.h:65
uint8_t pinAirConRequest
Definition pinNumbers_t.h:110
uint8_t pinBat
Definition pinNumbers_t.h:68
uint8_t pinIdle1
Definition pinNumbers_t.h:71
uint8_t pinAirConComp
Definition pinNumbers_t.h:108
uint8_t pinFlex
Definition pinNumbers_t.h:87
uint8_t pinTrigger3
Definition pinNumbers_t.h:60