diff --git a/src/Relays/Relays.c b/src/Relays/Relays.c index 9141fb7..435dce7 100644 --- a/src/Relays/Relays.c +++ b/src/Relays/Relays.c @@ -7,8 +7,24 @@ #include "Relays.h" +/* +static void WaitForRelayConnect(void) { + while (!(PORTA.IN & RELAYREADINGPIN)) { + ; + } +} + +static void WaitForRelayDisconnect(void) { + while (PORTA.IN & RELAYREADINGPIN) { + ; + } +} +*/ + void Relay_MeasureMakeTime(Relay *relay) {} +void Relay_MeasureBreakTime(Relay *relay) {} + void Relay_Enable(Relay *relay) { if (relay->disabled_fpc) { return; @@ -25,6 +41,11 @@ void Relay_Disable(Relay *relay) { (*(uint8_t *)relay->output_port) &= ~(1 << (relay->output_pin)); } - - void Relay_DisableForPowerCycle(Relay *relay) { relay->disabled_fpc = true; } + +bool Relay_ReadState(Relay *relay) { + if (*(uint8_t *)relay->input_port & (1 << relay->input_pin)) { + return true; + } + return false; +} diff --git a/src/Relays/Relays.h b/src/Relays/Relays.h index 2d2809b..15fc404 100644 --- a/src/Relays/Relays.h +++ b/src/Relays/Relays.h @@ -63,4 +63,10 @@ void Relay_Disable(Relay *relay); */ void Relay_DisableForPowerCycle(Relay *relay); +/** + * Reads the relay's input pin on the input port. + * @return True for enabled false for disabled relays. + */ +bool Relay_ReadState(Relay *relay); + #endif // RELAYS diff --git a/tests/Relays/test_Relays.cpp b/tests/Relays/test_Relays.cpp index 6b58abd..a6982d7 100644 --- a/tests/Relays/test_Relays.cpp +++ b/tests/Relays/test_Relays.cpp @@ -112,8 +112,15 @@ TEST(test_Relays, ReadStateOfEnabledRelayReadsTrue) for(uint8_t i = 0; i <= 7; i++){ zero_relay_struct(&relay); relay.input_pin = i; - Relay_Enable(&relay); + *(uint8_t *)relay.input_port |= (1<