HomeGPT v.1.0
HomeGPT revolutionizes home automation with advanced features such as facial recognition for secure access, mood-responsive lighting, RFID-enabled garage entry, and clap-activated door closures. This system elevates the living experience by seamlessly blending security, convenience, and ambiance-enhancing technology.
Loading...
Searching...
No Matches
spi.h
Go to the documentation of this file.
1// Copyright (C) 2021 twyleg
2#pragma once
3
4#include <linux/spi/spidev.h>
5
6#include <chrono>
7#include <string>
8#include <cstdint>
9#include <cstddef>
10#include <iostream>
11
12namespace spidevpp {
13
14class Spi {
15
16public:
17
18 explicit Spi(const std::string& device);
19
20 void setBitsPerWord(uint8_t bitsPerWord);
21 uint8_t getBitsPerWord() const;
22
23 void setSpeed(uint32_t speed);
24 uint32_t getSpeed() const;
25
26 void setMode(uint32_t mode);
27 uint32_t getMode() const;
28
29 void setDelay(std::chrono::microseconds);
30 std::chrono::microseconds getDelay() const;
31
32 void write(char* pData, size_t len);
33 void read(char* pData, size_t len);
34 void writeRead(char* pData, size_t len);
35 char writeRead(char data);
36
37 template <class Stream>
38 friend Stream& operator<<(Stream& out, const Spi&);
39
40private:
41
42 const std::string mDevice;
43
44 int mFd;
45 uint8_t mBitsPerWord = 8;
46 std::chrono::microseconds mDelay = std::chrono::microseconds(0);
47 uint32_t mMode = 0;
48 uint32_t mSpeed = 500000;
49
50};
51
52template <class Stream>
53Stream& operator<<(Stream& out, const Spi& spi)
54{
55 out << "SPI " << spi.mDevice << std::endl;
56 out << "\tMode: " << spi.getMode() << std::endl;
57 out << "\tSpeed [Hz]: " << spi.getSpeed() << std::endl;
58 out << "\tWord length [bits]: " << static_cast<int>(spi.getBitsPerWord()) << std::endl;
59 out << "\tDelay [us]: " << spi.getDelay().count() << std::endl;
60
61 return out;
62}
63
64}
65
Definition: spi.h:14
uint32_t getSpeed() const
Definition: spi.cc:40
void setBitsPerWord(uint8_t bitsPerWord)
Definition: spi.cc:18
uint32_t getMode() const
Definition: spi.cc:55
void write(char *pData, size_t len)
Definition: spi.cc:71
void read(char *pData, size_t len)
Definition: spi.cc:89
void writeRead(char *pData, size_t len)
Definition: spi.cc:107
void setDelay(std::chrono::microseconds)
Definition: spi.cc:63
void setMode(uint32_t mode)
Definition: spi.cc:48
uint8_t getBitsPerWord() const
Definition: spi.cc:25
std::chrono::microseconds getDelay() const
Definition: spi.cc:67
void setSpeed(uint32_t speed)
Definition: spi.cc:33
friend Stream & operator<<(Stream &out, const Spi &)
Definition: spi.h:53
Definition: gpio.cc:9
Stream & operator<<(Stream &out, const Spi &spi)
Definition: spi.h:53