-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspidevice.h
More file actions
65 lines (58 loc) · 2.15 KB
/
spidevice.h
File metadata and controls
65 lines (58 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef LIBESP_DEVICE_H
#define LIBESP_DEVICE_H
#include "spibus.h"
namespace libesp {
class SPIDevice {
public:
bool init();
ErrorType shutdown();
ErrorType sendAndReceive(uint8_t out, uint8_t &in);
ErrorType sendAndReceive(uint8_t *p, int32_t len);
ErrorType sendAndReceive(uint8_t *out, uint8_t *in, int32_t len);
ErrorType sendAndReceive(uint8_t *out, uint8_t *in, int32_t len, void *userData);
ErrorType send(const uint8_t *p, int32_t len);
ErrorType send(const uint8_t *p, int32_t len, void *userData);
virtual ~SPIDevice();
SPIBus *getBus() {return MyBus;}
const spi_device_interface_config_t &getInterfaceConfig() const {return DevCfg;}
const spi_device_handle_t &getDeviceHandle() const {return SPIHandle;}
void setDebug(bool d) {Debug = d;}
bool getDebug() const {return Debug;}
protected:
SPIDevice(SPIBus* bus, const spi_device_handle_t &s, const spi_device_interface_config_t &devcfg);
virtual bool onInit()=0;
virtual ErrorType onShutdown()=0;
virtual ErrorType onSendAndReceive(uint8_t out, uint8_t &in)=0;
virtual ErrorType onSendAndReceive(uint8_t *p, int32_t len)=0;
virtual ErrorType onSendAndReceive(uint8_t *out, uint8_t *in, int32_t len, void *userData)=0;
virtual ErrorType onSend(const uint8_t *p, int32_t len, void *userData)=0;
protected:
SPIBus *MyBus;
spi_device_handle_t SPIHandle;
spi_device_interface_config_t DevCfg;
bool Debug;
};
/////////
//
class SPIMaster : public SPIDevice {
public:
virtual ~SPIMaster();
public:
static const char *LOGTAG;
static const uint32_t MILLIS_DEFAULT_WAIT = 5;
protected:
ErrorType onShutdown();
SPIMaster(SPIBus*b, const spi_device_handle_t &s, const spi_device_interface_config_t &devcfg, SemaphoreHandle_t sema);
virtual ErrorType onSendAndReceive(uint8_t out, uint8_t &in);
virtual ErrorType onSendAndReceive(uint8_t *p, int32_t len);
virtual ErrorType onSendAndReceive(uint8_t *out, uint8_t *in, int32_t len, void *userData);
virtual ErrorType onSend(const uint8_t *p, int32_t len, void *userData);
virtual bool onInit();
void setMillsSemaphoreWait(uint32_t t) {MillisToWait = t;}
private:
SemaphoreHandle_t MySemaphore;
uint32_t MillisToWait;
friend class SPIBus;
};
}
#endif