knx/tpuart_data_link_layer.cpp
Thomas Kunze b0b6336899 - refactor data-link layer
- add dummy tp-uart dl
- add bau07b0 (copy of bau57B0; refactoring needed)
2018-06-05 00:32:26 +02:00

74 lines
1.4 KiB
C++

#include "tpuart_data_link_layer.h"
#include "bits.h"
#include "platform.h"
#include "device_object.h"
#include "address_table_object.h"
#include "cemi_frame.h"
#include <stdio.h>
#include <string.h>
TpUartDataLinkLayer::TpUartDataLinkLayer(DeviceObject& devObj, AddressTableObject& addrTab,
NetworkLayer& layer, Platform& platform) : DataLinkLayer(devObj, addrTab, layer, platform)
{
}
bool TpUartDataLinkLayer::sendFrame(CemiFrame& frame)
{
uint16_t length = frame.totalLenght();
uint8_t* buffer = new uint8_t[length];
//TODO: Create TP standard frame or extended frame from cemi frame into buffer
bool success = sendBytes(buffer, length);
delete[] buffer;
return success;
}
void TpUartDataLinkLayer::loop()
{
if (!_enabled)
return;
uint8_t buffer[512];
int len = 0;
// TODO: implement receiving of frames
CemiFrame frame(buffer, len);
frameRecieved(frame);
}
void TpUartDataLinkLayer::enabled(bool value)
{
if (value && !_enabled)
{
//TODO: implement setup of Serial + TPUART
_enabled = true;
return;
}
if(!value && _enabled)
{
//TODO: implement disable of TPUART
_enabled = false;
return;
}
}
bool TpUartDataLinkLayer::enabled() const
{
return _enabled;
}
bool TpUartDataLinkLayer::sendBytes(uint8_t* bytes, uint16_t length)
{
if (!_enabled)
return false;
//TODO: implement
return false;
}