Update to new API version of ESP-KNX-IP

This commit is contained in:
Adrian Scillato 2018-04-09 22:40:18 -03:00 committed by GitHub
parent 7445b20a95
commit 2ce8faec62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,17 +20,10 @@
#ifdef USE_KNX #ifdef USE_KNX
#include <esp-knx-ip.h> // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) #include <esp-knx-ip.h> // Include ESP KNX IP library (async-udp branch) (https://github.com/envy/esp-knx-ip/tree/async-udp)
// use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) // The ESP KNX IP library requires also ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP)
// use the library patched with
// https://github.com/envy/esp-knx-ip/pull/48
// https://github.com/envy/esp-knx-ip/pull/52
// https://github.com/envy/esp-knx-ip/pull/54
// https://github.com/envy/esp-knx-ip/pull/55
// The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP)
// use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21)
// //
// A copy of both libraries with the modifications needed is available at: // A copy of both libraries is available also at:
// https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp
// https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master
@ -160,10 +153,6 @@ const char *device_param_cb[] = {
nullptr nullptr
}; };
#ifndef USE_WEBSERVER
ESP8266WebServer *WebServer;
#endif
byte KNX_GA_Search( byte param, byte start = 0 ) byte KNX_GA_Search( byte param, byte start = 0 )
{ {
@ -311,7 +300,7 @@ void KNX_DEL_CB( byte CBnum )
byte len = 0; byte len = 0;
// Delete assigment // Delete assigment
knx.callback_delete_assignment(CBnum-1); knx.callback_unassign(CBnum-1);
Settings.knx_CB_param[CBnum-1] = 0; Settings.knx_CB_param[CBnum-1] = 0;
if (CBnum == 1) if (CBnum == 1)
@ -348,7 +337,7 @@ void KNX_DEL_CB( byte CBnum )
// Check if there is no other assigment to that callback. If there is not. delete that callback register // Check if there is no other assigment to that callback. If there is not. delete that callback register
if ( KNX_CB_Search( oldparam ) == KNX_Empty ) { if ( KNX_CB_Search( oldparam ) == KNX_Empty ) {
knx.callback_delete_register( device_param[oldparam-1].CB_id ); knx.callback_deregister( device_param[oldparam-1].CB_id );
device_param[oldparam-1].CB_id = KNX_Empty; device_param[oldparam-1].CB_id = KNX_Empty;
} }
@ -368,7 +357,6 @@ bool KNX_CONFIG_NOT_MATCH()
{ {
if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; } if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; }
if ( KNX_CB_Search(i+8) != KNX_Empty ) { return true; } if ( KNX_CB_Search(i+8) != KNX_Empty ) { return true; }
} }
} }
} }
@ -378,12 +366,14 @@ bool KNX_CONFIG_NOT_MATCH()
void KNXStart() void KNXStart()
{ {
knx.start(nullptr);
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_START));
AddLog(LOG_LEVEL_DEBUG);
}
#ifndef USE_WEBSERVER
WebServer = new ESP8266WebServer(80);
knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage.
#endif
void KNX_INIT()
{
// Check for incompatible config // Check for incompatible config
if (Settings.knx_GA_registered > MAX_KNX_GA) { Settings.knx_GA_registered = MAX_KNX_GA; } if (Settings.knx_GA_registered > MAX_KNX_GA) { Settings.knx_GA_registered = MAX_KNX_GA; }
if (Settings.knx_CB_registered > MAX_KNX_CB) { Settings.knx_CB_registered = MAX_KNX_CB; } if (Settings.knx_CB_registered > MAX_KNX_CB) { Settings.knx_CB_registered = MAX_KNX_CB; }
@ -436,14 +426,13 @@ void KNXStart()
if ( j > 0 ) if ( j > 0 )
{ {
device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter
// to identify which action was requested on the KNX network // to identify which action was requested on the KNX network
// to be performed on this device (set relay, etc.) // to be performed on this device (set relay, etc.)
// Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc)
KNX_addr.value = Settings.knx_CB_addr[i]; KNX_addr.value = Settings.knx_CB_addr[i];
knx.callback_assign( device_param[j-1].CB_id, KNX_addr ); knx.callback_assign( device_param[j-1].CB_id, KNX_addr );
} }
} }
} }
@ -877,7 +866,7 @@ boolean Xdrv10(byte function)
boolean result = false; boolean result = false;
switch (function) { switch (function) {
case FUNC_INIT: case FUNC_INIT:
KNXStart(); KNX_INIT();
break; break;
case FUNC_LOOP: case FUNC_LOOP:
knx.loop(); // Process knx events knx.loop(); // Process knx events