aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/lib/spi/spidev_iface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/lib/spi/spidev_iface.cpp')
-rw-r--r--mpm/lib/spi/spidev_iface.cpp83
1 files changed, 25 insertions, 58 deletions
diff --git a/mpm/lib/spi/spidev_iface.cpp b/mpm/lib/spi/spidev_iface.cpp
index 8b629e7b6..c8a2133e8 100644
--- a/mpm/lib/spi/spidev_iface.cpp
+++ b/mpm/lib/spi/spidev_iface.cpp
@@ -5,14 +5,13 @@
//
-#include <mpm/spi/spi_iface.hpp>
#include <mpm/exception.hpp>
+#include <mpm/spi/spi_iface.hpp>
extern "C" {
#include "spidev.h"
}
#include <fcntl.h>
#include <linux/spi/spidev.h>
-
#include <boost/format.hpp>
#include <iostream>
@@ -24,29 +23,18 @@ using namespace mpm::spi;
class spidev_iface_impl : public spi_iface
{
public:
-
spidev_iface_impl(
- const std::string &device,
- const int max_speed_hz,
- const int spi_mode
- ) : _speed(max_speed_hz),
- _mode(spi_mode)
+ const std::string& device, const int max_speed_hz, const int spi_mode)
+ : _speed(max_speed_hz), _mode(spi_mode)
{
- if (init_spi(
- &_fd,
- device.c_str(),
- _mode, _speed, _bits, _delay) < 0)
- {
- throw mpm::runtime_error(str(
- boost::format("Could not initialize spidev device %s")
- % device));
+ if (init_spi(&_fd, device.c_str(), _mode, _speed, _bits, _delay) < 0) {
+ throw mpm::runtime_error(
+ str(boost::format("Could not initialize spidev device %s") % device));
}
- if (_fd < 0)
- {
- throw mpm::runtime_error(str(
- boost::format("Could not open spidev device %s")
- % device));
+ if (_fd < 0) {
+ throw mpm::runtime_error(
+ str(boost::format("Could not open spidev device %s") % device));
}
}
@@ -55,53 +43,37 @@ public:
close(_fd);
}
- uint32_t transfer24_8(
- const uint32_t data_
- ) {
+ uint32_t transfer24_8(const uint32_t data_)
+ {
int ret(0);
- uint32_t data = data_;
- uint8_t *tx_data = reinterpret_cast<uint8_t *>(&data);
+ uint32_t data = data_;
+ uint8_t* tx_data = reinterpret_cast<uint8_t*>(&data);
// Create tx and rx buffers:
uint8_t tx[] = {tx_data[2], tx_data[1], tx_data[0]}; // FIXME guarantee endianness
uint8_t rx[3]; // Buffer length must match tx buffer
- if (transfer(
- _fd,
- &tx[0], &rx[0],
- 3,
- _speed, _bits, _delay
- ) != 0) {
- throw mpm::runtime_error(str(
- boost::format("SPI Transaction failed!")
- ));
+ if (transfer(_fd, &tx[0], &rx[0], 3, _speed, _bits, _delay) != 0) {
+ throw mpm::runtime_error(str(boost::format("SPI Transaction failed!")));
}
return uint32_t(rx[2]);
}
- uint32_t transfer24_16(
- const uint32_t data_
- ) {
+ uint32_t transfer24_16(const uint32_t data_)
+ {
int ret(0);
- uint32_t data = data_;
- uint8_t *tx_data = reinterpret_cast<uint8_t *>(&data);
+ uint32_t data = data_;
+ uint8_t* tx_data = reinterpret_cast<uint8_t*>(&data);
// Create tx and rx buffers:
uint8_t tx[] = {tx_data[2], tx_data[1], tx_data[0]}; // FIXME guarantee endianness
uint8_t rx[3]; // Buffer length must match tx buffer
- if (transfer(
- _fd,
- &tx[0], &rx[0],
- 3,
- _speed, _bits, _delay
- ) != 0) {
- throw mpm::runtime_error(str(
- boost::format("SPI Transaction failed!")
- ));
+ if (transfer(_fd, &tx[0], &rx[0], 3, _speed, _bits, _delay) != 0) {
+ throw mpm::runtime_error(str(boost::format("SPI Transaction failed!")));
}
return uint32_t(rx[1] << 8 | rx[2]);
@@ -111,7 +83,7 @@ private:
int _fd;
const uint32_t _mode;
uint32_t _speed = 2000000;
- uint8_t _bits = 8;
+ uint8_t _bits = 8;
uint16_t _delay = 0;
};
@@ -119,12 +91,7 @@ private:
* Factory
*****************************************************************************/
spi_iface::sptr spi_iface::make_spidev(
- const std::string &device,
- const int speed_hz,
- const int spi_mode
-) {
- return std::make_shared<spidev_iface_impl>(
- device, speed_hz, spi_mode
- );
+ const std::string& device, const int speed_hz, const int spi_mode)
+{
+ return std::make_shared<spidev_iface_impl>(device, speed_hz, spi_mode);
}
-