22#include <piduino/iodevice.h>
23#include <piduino/gpiopin.h>
24#include <piduino/system.h>
25#include <linux/spi/spidev.h>
84 inline int id()
const {
151 inline const std::string &
path()
const {
155 inline const std::map<int, Cs> &
csList()
const {
221 return ! (*
this == other);
259 Transfer (
const uint8_t * txbuf = 0, uint8_t * rxbuf = 0, uint32_t count = 0) :
284 explicit SpiDev (
int idBus,
int idCs = 0);
289 explicit SpiDev (
const std::string & path);
362 int transfer (
const uint8_t * txbuf, uint8_t * rxbuf, uint32_t len);
371 int read (uint8_t * buffer, uint32_t len);
381 int write (
const uint8_t *buffer, uint32_t len);
A type-safe flags class for bitwise operations on enum values.
Abstract base class for input/output devices.
@ ReadWrite
Open the device for both input and output operations.
Represents a general-purpose input/output (GPIO) pin and its configuration.
Mode
Enumerates the possible modes for a pin.
Broche de chip select d'un bus SPI.
bool driverControl() const
void setMode(Pin::Mode value)
bool setDriverControl(bool enable=false, bool activeLevel=false)
Informations sur un bus SPI.
bool setPath(const std::string &path)
Info(int bus=0, int cs=0)
static const int MaxBuses
static std::deque< SpiDev::Info > availableBuses()
Liste des bus disponibles sur le systèmes.
const std::map< int, Cs > & csList() const
static Info defaultBus()
Information sur le bus SPI par défaut disponible sur la carte Pi Dépend du modèle de carte (informati...
void setId(int bus, int cs=0)
std::string _path
chemin du bus dans /dev
bool operator==(const Info &other)
const std::string & path() const
static std::string busPath(int bus, int cs=0)
Chemin système correspondant à un bus.
bool operator!=(const Info &other)
std::map< int, Cs > _csList
liste des broches de CS du bus
int _cs
index du CS affecté par le driver spidev
Settings(uint32_t clock=10000000, bool bitOrder=MsbFirst, uint8_t dataMode=SPI_MODE_0, uint8_t dataBits=8)
@ MsbFirst
MSB en premier.
@ LsbFirst
LSB en premier.
bool operator==(const Settings &other)
bool operator!=(const Settings &other)
bool operator==(const Transfer &other)
uint16_t delayBeforeReleaseCs
Transfer(const uint8_t *txbuf=0, uint8_t *rxbuf=0, uint32_t count=0)
const Info & bus() const
Informations sur le bus.
const Settings & settings() const
Configuration actuelle.
void setBusPath(const std::string &path)
Modification du chemin du bus Si la liaison ouverte, celle-ci est fermée, puis réouverte sur le nouve...
uint8_t bitsPerWord() const
Nombre de bits par mot.
int transfer(const uint8_t *txbuf, uint8_t *rxbuf, uint32_t len)
Transfert d'un message en entrée-sortie.
virtual void close()
Fermeture du bus Cette fonction est appelée par le destructeur.
int write(const uint8_t *buffer, uint32_t len)
Ecriture d'un message.
void setBus(int idBus, int idCs=0)
Modification du bus SPI Si la liaison ouverte, celle-ci est fermée, puis réouverte sur le nouveau bus...
uint32_t speedHz() const
Vitesse maximale de transmission en Hz.
void setMode(uint8_t mode)
Modification du mode de fonctionnement Les valeurs généralement utilisées sont SPI_MODE_0,...
SpiDev(const std::string &path)
Constructeur à partir chemin de bus.
void setSettings(const Settings &settings)
Modification des réglages de la transmission Si la liaison est ouverte les réglages sont appliqués im...
SpiDev(int idBus, int idCs=0)
Constructeur à partir identifiant de bus.
void setBusPath(const char *path)
Surcharge de setBusPath() à partir d'une variable const char *.
int read(uint8_t *buffer, uint32_t len)
Lecture d'un message.
void setBitsPerWord(uint8_t bit)
Modification du nombre de bits par mot Si la liaison est ouverte les réglages sont appliqués immédiat...
SpiDev(const Info &bus)
Constructeur à partir d'un bus.
void setBitOrder(bool bitOrder)
Modification de l'ordre de transmission des bits MsbFirst ou LsbFirst Si la liaison est ouverte les r...
void pushTransfer(Transfer &t)
Empilement d'un message dans la pile de transmission Permet de gérer l'envoi de plusieurs message d'u...
void setSpeedHz(uint32_t speedHz)
Modification de la vitesse maximale de transmission en Hz Si la liaison est ouverte les réglages sont...
SpiDev()
Constructeur par défaut.
uint8_t mode() const
Mode de fonctionnement cf setMode()
int transfer()
Transmission des messages de la pile de transmission La pile est vidée avant retour.
bool bitOrder() const
Ordre de transmission des bits MsbFirst ou LsbFirst.
virtual ~SpiDev()
Destructeur.
void setBus(const Info &bus)
Surcharge de setBus() à partir d'une variable Info.
void clear()
Vidage de la pile de transmission Pas nécessaire après transfer()
SpiDev(const char *path)
Constructeur à partir chemin de bus const char *.
virtual bool open(OpenMode mode=IoDevice::ReadWrite)
Ouverture du bus SPI La configuration settings() est appliquée.
static bool charFileExists(const char *path)
Internal implementation class for GpioDevice.
#define PIMP_DECLARE_PRIVATE(Class)
PIMP_DECLARE_PRIVATE.
Global namespace for Piduino.
SpiDev SPI
Piduino SpiDev Global Object.