add facade

This commit is contained in:
Thomas Kunze 2018-03-20 23:56:42 +01:00
parent 7a30d482a5
commit 8b71fb3d8e
7 changed files with 147 additions and 40 deletions

View File

@ -40,7 +40,7 @@ void EspPlatform::mdelay(uint32_t millis)
void EspPlatform::restart()
{
Serial.println("restart");
ESP.restart();
ESP.reset();
}
void EspPlatform::fatalError()

View File

@ -14,7 +14,6 @@
<ProjectCapability Include="SourceItemsFromImports" />
</ItemGroup>
<ItemGroup>
<Text Include="$(MSBuildThisFileDirectory)readme.txt" />
<Text Include="$(MSBuildThisFileDirectory)library.properties" />
<Text Include="$(MSBuildThisFileDirectory)knx_esp.h" />
</ItemGroup>
@ -37,6 +36,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)group_object_table_object.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)interface_object.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)ip_parameter_object.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)knx_facade.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)knx_types.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)memory.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)network_layer.h" />
@ -65,6 +65,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)group_object.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)group_object_table_object.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)ip_parameter_object.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)knx_facade.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)memory.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)network_layer.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)npdu.cpp" />

View File

@ -77,9 +77,11 @@
<ClCompile Include="$(MSBuildThisFileDirectory)transport_layer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)knx_facade.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="$(MSBuildThisFileDirectory)readme.txt" />
<Text Include="$(MSBuildThisFileDirectory)library.properties" />
<Text Include="$(MSBuildThisFileDirectory)knx_esp.h">
<Filter>Header Files</Filter>
@ -167,5 +169,8 @@
<ClInclude Include="$(MSBuildThisFileDirectory)transport_layer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)knx_facade.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -1,19 +1,3 @@
/*
Name: knx_esp.h
Created: 01.03.2018 21:14:55
Author: tkunze
Editor: http://www.visualmicro.com
*/
#ifndef _knx_esp_h
#define _knx_esp_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "arduino.h"
#else
#include "WProgram.h"
#endif
#endif
#pragma once
#include "knx_facade.h"

104
knx_facade.cpp Normal file
View File

@ -0,0 +1,104 @@
#include "knx_facade.h"
KnxFacade knx;
KnxFacade::KnxFacade() : _bau(_platform)
{
}
bool KnxFacade::enabled()
{
return _bau.enabled();
}
void KnxFacade::enabled(bool value)
{
_bau.enabled(true);
}
bool KnxFacade::progMode()
{
return _bau.deviceObject().progMode();
}
void KnxFacade::progMode(bool value)
{
_bau.deviceObject().progMode(value);
}
bool KnxFacade::configured()
{
return _bau.configured();
}
void KnxFacade::readMemory()
{
_bau.readMemory();
}
void KnxFacade::loop()
{
_bau.loop();
}
void KnxFacade::registerGroupObjects(GroupObject* groupObjects, uint16_t count)
{
_bau.groupObjectTable().groupObjects(groupObjects, count);
}
void KnxFacade::manufacturerId(uint16_t value)
{
_bau.deviceObject().manufacturerId(value);
}
void KnxFacade::bauNumber(uint32_t value)
{
_bau.deviceObject().bauNumber(value);
}
void KnxFacade::orderNumber(const char* value)
{
_bau.deviceObject().orderNumber(value);
}
void KnxFacade::hardwareType(uint8_t* value)
{
_bau.deviceObject().hardwareType(value);
}
void KnxFacade::version(uint16_t value)
{
_bau.deviceObject().version(value);
}
uint8_t* KnxFacade::paramData(uint32_t addr)
{
if (!_bau.configured())
return nullptr;
return _bau.parameters().data(addr);
}
uint8_t KnxFacade::paramByte(uint32_t addr)
{
if (!_bau.configured())
return 0;
return _bau.parameters().getByte(addr);
}
uint16_t KnxFacade::paramWord(uint32_t addr)
{
if (!_bau.configured())
return 0;
return _bau.parameters().getWord(addr);
}
uint32_t KnxFacade::paramInt(uint32_t addr)
{
if (!_bau.configured())
return 0;
return _bau.parameters().getInt(addr);
}

32
knx_facade.h Normal file
View File

@ -0,0 +1,32 @@
#pragma once
#include "esp_platform.h"
#include "bau57B0.h"
class KnxFacade
{
public:
KnxFacade();
bool enabled();
void enabled(bool value);
bool progMode();
void progMode(bool value);
bool configured();
void readMemory();
void loop();
void registerGroupObjects(GroupObject* groupObjects, uint16_t count);
void manufacturerId(uint16_t value);
void bauNumber(uint32_t value);
void orderNumber(const char* value);
void hardwareType(uint8_t* value);
void version(uint16_t value);
uint8_t* paramData(uint32_t addr);
uint8_t paramByte(uint32_t addr);
uint16_t paramWord(uint32_t addr);
uint32_t paramInt(uint32_t addr);
private:
EspPlatform _platform;
Bau57B0 _bau;
};
extern KnxFacade knx;

View File

@ -1,19 +0,0 @@
Arduino Compatible Cross Platform C++ Library Project : For more information see http://www.visualmicro.com
This project works exactly the same way as an Arduino library.
Add this project to any solution that contains an Arduino project and #include <headers.h> in code as you would any normal Arduino library headers.
To enable intellisense and to support live build discovery outside of the "standard" Arduino library locations, ensure that the library is added as a shared project reference to the master Arduino project. To do this, right click the master project "References" node and then click "Add Reference". A window will open and the library will appear on the "Shared Projects" tab. Click the checkbox next to the library name to add the reference. If this library is moved the shared referencemust be removed and re-added.
VS2017 has a bug, workround: After moving existing source code within a "library or shared project", close and re-open the solution.
Visual Studio will display intellisense for libraries based on the platform/board that has been specified for the currently active "Startup Project" of the current solution.
IMPORTANT: The arduino.cc Library Rules must be followed when adding code or restructing libraries.
blog: http://www.visualmicro.com/post/2017/01/16/Arduino-Cross-Platform-Library-Development.aspx