From bf7068ac276f8bd01027a9a66a791912ebac0a13 Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 15 Dec 2022 09:28:42 -0800 Subject: [PATCH] [wpilibc] Add missing PPS implementation for C++ (#4821) --- wpilibc/src/main/native/cpp/DigitalOutput.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/wpilibc/src/main/native/cpp/DigitalOutput.cpp b/wpilibc/src/main/native/cpp/DigitalOutput.cpp index aa86a54f84..fc69e359da 100644 --- a/wpilibc/src/main/native/cpp/DigitalOutput.cpp +++ b/wpilibc/src/main/native/cpp/DigitalOutput.cpp @@ -95,6 +95,23 @@ void DigitalOutput::SetPWMRate(double rate) { FRC_CheckErrorStatus(status, "Channel {}", m_channel); } +void DigitalOutput::EnablePPS(double dutyCycle) { + if (m_pwmGenerator != HAL_kInvalidHandle) { + return; + } + + int32_t status = 0; + + m_pwmGenerator = HAL_AllocateDigitalPWM(&status); + FRC_CheckErrorStatus(status, "Channel {}", m_channel); + + HAL_SetDigitalPWMPPS(m_pwmGenerator, dutyCycle, &status); + FRC_CheckErrorStatus(status, "Channel {}", m_channel); + + HAL_SetDigitalPWMOutputChannel(m_pwmGenerator, m_channel, &status); + FRC_CheckErrorStatus(status, "Channel {}", m_channel); +} + void DigitalOutput::EnablePWM(double initialDutyCycle) { if (m_pwmGenerator != HAL_kInvalidHandle) { return;