[wpilibc] SPI & I2C: Use handle wrapper to close port (#7217)

This commit is contained in:
Ryan Blue
2024-10-16 13:08:44 -04:00
committed by GitHub
parent fad06ae1e7
commit 68715aa484
4 changed files with 4 additions and 26 deletions

View File

@@ -19,16 +19,4 @@ HAL_ENUM(HAL_I2CPort) {
HAL_I2C_kOnboard,
HAL_I2C_kMXP
};
#ifdef __cplusplus
namespace hal {
/**
* A move-only C++ wrapper around HAL_I2CPort.
* Does not ensure destruction.
*/
using I2CPort = Handle<HAL_I2CPort, nullptr, HAL_I2C_kInvalid>;
} // namespace hal
#endif
/** @} */

View File

@@ -41,16 +41,4 @@ HAL_ENUM(HAL_SPIMode) {
/** Clock idle high, data sampled on rising edge. */
HAL_SPI_kMode3 = 3,
};
#ifdef __cplusplus
namespace hal {
/**
* A move-only C++ wrapper around HAL_SPIPort.
* Does not ensure destruction.
*/
using SPIPort = Handle<HAL_SPIPort, nullptr, HAL_SPI_kInvalid>;
} // namespace hal
#endif
/** @} */

View File

@@ -6,6 +6,7 @@
#include <stdint.h>
#include <hal/I2C.h>
#include <hal/I2CTypes.h>
namespace frc {
@@ -156,7 +157,7 @@ class I2C {
bool VerifySensor(int registerAddress, int count, const uint8_t* expected);
private:
hal::I2CPort m_port;
hal::Handle<HAL_I2CPort, HAL_CloseI2C, HAL_I2C_kInvalid> m_port;
int m_deviceAddress;
};

View File

@@ -9,6 +9,7 @@
#include <memory>
#include <span>
#include <hal/SPI.h>
#include <hal/SPITypes.h>
#include <units/time.h>
@@ -356,7 +357,7 @@ class SPI {
double GetAccumulatorIntegratedAverage() const;
protected:
hal::SPIPort m_port;
hal::Handle<HAL_SPIPort, HAL_CloseSPI, HAL_SPI_kInvalid> m_port;
HAL_SPIMode m_mode = HAL_SPIMode::HAL_SPI_kMode0;
private: