mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #ifdef __linux__
 | |
| 
 | |
| #include <string>
 | |
| #include "knx/platform.h"
 | |
| 
 | |
| class LinuxPlatform: public Platform
 | |
| {
 | |
|     using Platform::_memoryReference;
 | |
|     using Platform::memoryReference;
 | |
| public:
 | |
|     LinuxPlatform(int argc, char** argv);
 | |
|     virtual ~LinuxPlatform();
 | |
| 
 | |
|     std::string flashFilePath();
 | |
|     void flashFilePath(const std::string path);
 | |
| 
 | |
|     // ip stuff
 | |
|     uint32_t currentIpAddress() override;
 | |
|     uint32_t currentSubnetMask() override;
 | |
|     uint32_t currentDefaultGateway() override;
 | |
|     void macAddress(uint8_t* addr) override;
 | |
| 
 | |
|     // basic stuff
 | |
|     uint32_t millis() override;
 | |
|     void mdelay(uint32_t millis) override;
 | |
|     void restart() override;
 | |
|     void fatalError() override;
 | |
| 
 | |
|     //multicast
 | |
|     void setupMultiCast(uint32_t addr, uint16_t port) override;
 | |
|     void closeMultiCast() override;
 | |
|     bool sendBytes(uint8_t* buffer, uint16_t len) override;
 | |
|     int readBytes(uint8_t* buffer, uint16_t maxLen) override;
 | |
|     
 | |
|     //uart
 | |
|     void setupUart() override;
 | |
|     void closeUart() override;
 | |
|     int uartAvailable() override;
 | |
|     size_t writeUart(const uint8_t data) override;
 | |
|     size_t writeUart(const uint8_t *buffer, size_t size) override;
 | |
|     int readUart() override;
 | |
|     size_t readBytesUart(uint8_t *buffer, size_t length) override;
 | |
| 
 | |
|     //memory
 | |
|     uint8_t* getEepromBuffer(uint16_t size) override;
 | |
|     void commitToEeprom() override;
 | |
|     uint8_t* allocMemory(size_t size) override;
 | |
|     void freeMemory(uint8_t* ptr) override;
 | |
|     void cmdlineArgs(int argc, char** argv);
 | |
| 
 | |
|   private:
 | |
|     uint32_t _multicastAddr = -1;
 | |
|     uint16_t _port = -1;
 | |
|     int _socketFd = -1;
 | |
|     void doMemoryMapping();
 | |
|     uint8_t* _mappedFile = 0;
 | |
|     int _fd = -1;
 | |
|     uint8_t* _currentMaxMem = 0;
 | |
|     std::string _flashFilePath = "flash.bin";
 | |
|     char** _args = 0;
 | |
| };
 | |
| 
 | |
| #endif |