Skip to content

Commit 8db7428

Browse files
authored
Merge pull request #225 from uorocketry/digitalSafe
feat: add safe state to digital pins
2 parents 94ed5ce + 54d10b7 commit 8db7428

File tree

9 files changed

+14
-11
lines changed

9 files changed

+14
-11
lines changed

src/IO/Interface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Interface
2323

2424
#if USE_GPIO == 1
2525

26-
virtual void createNewGpioOutput(std::string name, int pinNbr) = 0;
26+
virtual void createNewGpioOutput(std::string name, int pinNbr, int safeState = 0) = 0;
2727

2828
virtual void createNewGpioPwmOutput(std::string name, int pinNbr, int safePosition, bool softpwm) = 0;
2929

src/IO/InterfaceImpl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ bool InterfaceImpl::updateOutputs(std::shared_ptr<StateData> data)
161161
}
162162

163163
#if USE_GPIO == 1
164-
void InterfaceImpl::createNewGpioOutput(std::string name, int pinNbr)
164+
void InterfaceImpl::createNewGpioOutput(std::string name, int pinNbr, int safeState)
165165
{
166-
gpio.createNewGpioOutput(name, pinNbr);
166+
gpio.createNewGpioOutput(name, pinNbr, safeState);
167167
}
168168

169169
void InterfaceImpl::createNewGpioPwmOutput(std::string name, int pinNbr, int safePosition, bool softpwm)

src/IO/InterfaceImpl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class InterfaceImpl : public Interface
3636
bool updateOutputs(std::shared_ptr<StateData> data) override;
3737

3838
#if USE_GPIO == 1
39-
void createNewGpioOutput(std::string name, int pinNbr) override;
39+
void createNewGpioOutput(std::string name, int pinNbr, int safeState = 0) override;
4040
void createNewGpioPwmOutput(std::string name, int pinNbr, int safePosition, bool softpwm) override;
4141
void createNewGpioDCMotorOutput(std::string name, int pinForward, int pinReverse, int motorPower,
4242
int limitSwitchMinPin, int limitSwitchMaxPin, int potentiometerPin) override;

src/IO/gpio/DigitalOutput.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
#include <wiringPi.h>
1010
#endif
1111

12-
DigitalOutput::DigitalOutput(const std::string &name, const int pin) : name(name), pinNbr(pin)
12+
DigitalOutput::DigitalOutput(const std::string &name, const int pin, const int safeState)
13+
: name(name), pinNbr(pin), safeState(safeState)
1314
{
1415
logger = spdlog::default_logger();
1516

@@ -20,6 +21,7 @@ DigitalOutput::DigitalOutput(const std::string &name, const int pin) : name(name
2021

2122
RocketryProto::ArduinoIn arduinoIn;
2223
arduinoIn.mutable_digitalinit()->set_pin(pin);
24+
arduinoIn.mutable_digitalinit()->set_safestate(safeState);
2325
arduinoProxy->send(arduinoIn);
2426
#elif USE_WIRING_Pi == 1
2527
pinMode(pinNbr, OUTPUT);

src/IO/gpio/DigitalOutput.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
class DigitalOutput : public Output
1515
{
1616
public:
17-
DigitalOutput(const std::string &name, const int pin);
17+
DigitalOutput(const std::string &name, const int pin, const int safeState);
1818

1919
bool setValue(int value);
2020

@@ -24,6 +24,7 @@ class DigitalOutput : public Output
2424
std::shared_ptr<spdlog::logger> logger;
2525
std::string name;
2626
const int pinNbr;
27+
const int safeState;
2728

2829
#if USE_ARDUINO_PROXY == 1
2930
ArduinoProxy *arduinoProxy;

src/IO/gpio/Gpio.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ GpioData Gpio::setOutputs(const GpioData &data)
5858
return result;
5959
}
6060

61-
void Gpio::createNewGpioOutput(const std::string &name, int pinNbr)
61+
void Gpio::createNewGpioOutput(const std::string &name, int pinNbr, int safeState)
6262
{
63-
digitalOutputsMap.insert({name, DigitalOutput(name, pinNbr)});
63+
digitalOutputsMap.insert({name, DigitalOutput(name, pinNbr, safeState)});
6464
}
6565

6666
void Gpio::createNewGpioPwmOutput(const std::string &name, int pinNbr, int safePosition, bool softPWM)

src/IO/gpio/Gpio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Gpio : public IO
2828

2929
bool isInitialized() override;
3030

31-
void createNewGpioOutput(const std::string &name, int pinNbr);
31+
void createNewGpioOutput(const std::string &name, int pinNbr, int safeState);
3232
void createNewGpioPwmOutput(const std::string &name, int pinNbr, int safePosition, bool softPWM = false);
3333
void createNewGpioDCMotorOutput(const std::string &name, int pinForward, int pinReverse, int motorPower,
3434
int limitSwitchMinPin, int limitSwitchMaxPin, int potentiometerPin);

src/stateMachine/HotFire/HotFireStateMachine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ STATE_DEFINE(HotFireStateMachine, Init, UOSMData)
198198
#endif
199199

200200
#if USE_IGNITER
201-
interface->createNewGpioOutput(IGNITER_NAME, IGNITER_PIN);
201+
interface->createNewGpioOutput(IGNITER_NAME, IGNITER_PIN, IGNITER_OFF);
202202
#endif
203203

204204
#if USE_PWM_MAIN

0 commit comments

Comments
 (0)