mirror of
https://github.com/thelsing/knx.git
synced 2025-10-08 11:14:29 +02:00
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#ifdef __linux__
|
|
|
|
#include <string>
|
|
#include "knx/platform.h"
|
|
|
|
class LinuxPlatform: public Platform
|
|
{
|
|
using Platform::_memoryReference;
|
|
using Platform::memoryReference;
|
|
public:
|
|
LinuxPlatform();
|
|
virtual ~LinuxPlatform();
|
|
|
|
void cmdLineArgs(int argc, char** argv);
|
|
|
|
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
|
|
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
|
|
bool writeNVMemory(uintptr_t addr,uint8_t data);
|
|
uint8_t readNVMemory(uintptr_t addr);
|
|
uintptr_t allocNVMemory(size_t size,uint32_t ID);
|
|
uintptr_t reloadNVMemory(uint32_t ID);
|
|
void finishNVMemory();
|
|
void freeNVMemory(uint32_t ID);
|
|
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
|