knx
ETS configurable knx-stack
linux_platform.h
Go to the documentation of this file.
1 #pragma once
2 
3 #ifdef __linux__
4 
5 #include <string>
6 #include "knx/platform.h"
7 
8 extern int gpio_direction(int pin, int dir);
9 extern int gpio_read(int pin);
10 extern int gpio_write(int pin, int value);
11 extern int gpio_export(int pin);
12 extern int gpio_unexport(int pin);
13 
14 class LinuxPlatform: public Platform
15 {
16  public:
17  LinuxPlatform();
18  virtual ~LinuxPlatform();
19 
20  void cmdLineArgs(int argc, char** argv);
21 
22  std::string flashFilePath();
23  void flashFilePath(const std::string path);
24 
25  // basic stuff
26  void restart() override;
27  void fatalError() override;
28 
29  // ip config
30  uint32_t currentIpAddress() override;
31  uint32_t currentSubnetMask() override;
32  uint32_t currentDefaultGateway() override;
33  void macAddress(uint8_t* data) override;
34 
35 
36  //multicast
37  void setupMultiCast(uint32_t addr, uint16_t port) override;
38  void closeMultiCast() override;
39  bool sendBytesMultiCast(uint8_t* buffer, uint16_t len) override;
40  int readBytesMultiCast(uint8_t* buffer, uint16_t maxLen) override;
41  bool sendBytesUniCast(uint32_t addr, uint16_t port, uint8_t* buffer, uint16_t len) override;
42 
43  //UART
44  void setupUart() override;
45  void closeUart() override;
46  int uartAvailable() override;
47  size_t writeUart(const uint8_t data) override;
48  size_t writeUart(const uint8_t* buffer, size_t size) override;
49  int readUart() override;
50  size_t readBytesUart(uint8_t* buffer, size_t length) override;
51 
52  //spi
53  void setupSpi() override;
54  void closeSpi() override;
55  int readWriteSpi (uint8_t* data, size_t len) override;
56 
57  //memory
58  uint8_t* getEepromBuffer(uint32_t size) override;
59  void commitToEeprom() override;
60  void cmdlineArgs(int argc, char** argv);
61 
62  private:
63  uint32_t _multicastAddr = -1;
64  uint16_t _multicastPort = -1;
65  int _multicastSocketFd = -1;
66 
67  void doMemoryMapping();
68  uint8_t* _mappedFile = 0;
69  int _fd = -1;
70  int _spiFd = -1;
71  int _uartFd = -1;
72  std::string _flashFilePath = "flash.bin";
73  char** _args = 0;
74 
75  uint8_t _macAddress[6] = {0, 0, 0, 0, 0, 0};
76  uint32_t _ipAddress = 0;
77  uint32_t _netmask = 0;
78  uint32_t _defaultGateway = 0;
79 };
80 
81 #endif
void closeMultiCast() override
void commitToEeprom() override
int readWriteSpi(uint8_t *data, size_t len) override
void macAddress(uint8_t *data) override
bool sendBytesMultiCast(uint8_t *buffer, uint16_t len) override
void setupMultiCast(uint32_t addr, uint16_t port) override
uint32_t currentDefaultGateway() override
uint32_t currentIpAddress() override
void setupSpi() override
void closeUart() override
void closeSpi() override
int readBytesMultiCast(uint8_t *buffer, uint16_t maxLen) override
void setupUart() override
std::string flashFilePath()
uint32_t currentSubnetMask() override
uint8_t * getEepromBuffer(uint32_t size) override
void cmdlineArgs(int argc, char **argv)
bool sendBytesUniCast(uint32_t addr, uint16_t port, uint8_t *buffer, uint16_t len) override
void fatalError() override
void cmdLineArgs(int argc, char **argv)
int readUart() override
size_t writeUart(const uint8_t data) override
virtual ~LinuxPlatform()
size_t readBytesUart(uint8_t *buffer, size_t length) override
int uartAvailable() override
void restart() override
int gpio_read(int pin)
int gpio_write(int pin, int value)
int gpio_export(int pin)
int gpio_direction(int pin, int dir)
int gpio_unexport(int pin)