From 989c8e85eb78edde4a4d0aa4bf4ffce5c9064027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=20Lepp=C3=A4nen?= Date: Wed, 24 Mar 2021 13:25:57 +0200 Subject: [PATCH] Added new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old ones Previously WisunBorderRouter start() used NetworkInterface type for mesh interface, although only WisunInterface type is possible for the call. Added a new overloads of the start with the WisunInterface as mesh interface type and deprecated the old ones. This makes the calls stricter about the interface type and safer. It also allows to remove the reinterpret_cast that causes compiler warning on ARM compiler. --- .../mbed-mesh-api/WisunBorderRouter.h | 30 ++++++++++++++++++ .../source/WisunBorderRouter.cpp | 31 ++++++++++++++++--- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/connectivity/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h b/connectivity/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h index 5f8625619a..f1bb0ba093 100644 --- a/connectivity/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h +++ b/connectivity/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h @@ -86,6 +86,21 @@ public: * \return MESH_ERROR_NONE on success. * \return MESH_ERROR_UNKNOWN in case of failure. * */ + mesh_error_t start(WisunInterface *mesh_if, NetworkInterface *backbone_if); + + /** + * \brief Start Wi-SUN Border Router + * + * Starts Wi-SUN Border Router and routing between the mesh and backbone interfaces. Network interfaces + * must be initialized and connected before calling the start. Backbone interface can be either Ethernet + * (EMAC) or Cellular. + * + * \param mesh_if Wi-SUN mesh network interface + * \param backbone_if Backbone network interface + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + MBED_DEPRECATED_SINCE("mbed-os-6.10.0", "Using NetworkInterface type for mesh_if is deprecated, use WisunInterface instead") mesh_error_t start(NetworkInterface *mesh_if, NetworkInterface *backbone_if); /** @@ -100,6 +115,21 @@ public: * \return MESH_ERROR_NONE on success. * \return MESH_ERROR_UNKNOWN in case of failure. * */ + mesh_error_t start(WisunInterface *mesh_if, OnboardNetworkStack::Interface *backbone_if); + + /** + * \brief Start Wi-SUN Border Router + * + * Starts Wi-SUN Border Router and routing between the mesh and backbone interfaces. Mesh network interface + * must be initialized and connected before calling the start. Backbone OnboardNetworkStack::Interface must + * be brought up before calling the start. Backbone interface can be either Ethernet (EMAC) or Cellular (PPP). + * + * \param mesh_if Wi-SUN mesh network interface + * \param backbone_if Backbone OnboardNetworkStack::Interface interface + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + MBED_DEPRECATED_SINCE("mbed-os-6.10.0", "Using NetworkInterface type for mesh_if is deprecated, use WisunInterface instead") mesh_error_t start(NetworkInterface *mesh_if, OnboardNetworkStack::Interface *backbone_if); /** diff --git a/connectivity/nanostack/mbed-mesh-api/source/WisunBorderRouter.cpp b/connectivity/nanostack/mbed-mesh-api/source/WisunBorderRouter.cpp index 941e577a63..a007d3e6c2 100644 --- a/connectivity/nanostack/mbed-mesh-api/source/WisunBorderRouter.cpp +++ b/connectivity/nanostack/mbed-mesh-api/source/WisunBorderRouter.cpp @@ -40,8 +40,17 @@ mesh_error_t WisunBorderRouter::start(NetworkInterface *mesh_if, NetworkInterfac return MESH_ERROR_PARAM; } - InterfaceNanostack *nano_mesh_if = reinterpret_cast(mesh_if); - int8_t mesh_if_id = nano_mesh_if->get_interface_id(); + WisunInterface *wisun_mesh_if = reinterpret_cast(mesh_if); + return start(wisun_mesh_if, backbone_if); +} + +mesh_error_t WisunBorderRouter::start(WisunInterface *mesh_if, NetworkInterface *backbone_if) +{ + if (mesh_if == NULL || backbone_if == NULL) { + return MESH_ERROR_PARAM; + } + + int8_t mesh_if_id = mesh_if->get_interface_id(); if (mesh_if_id < 0) { return MESH_ERROR_UNKNOWN; } @@ -71,10 +80,24 @@ mesh_error_t WisunBorderRouter::start(NetworkInterface *mesh_if, NetworkInterfac return MESH_ERROR_NONE; } + mesh_error_t WisunBorderRouter::start(NetworkInterface *mesh_if, OnboardNetworkStack::Interface *backbone_if) { - InterfaceNanostack *nano_mesh_if = reinterpret_cast(mesh_if); - int8_t mesh_if_id = nano_mesh_if->get_interface_id(); + if (mesh_if == NULL || backbone_if == NULL) { + return MESH_ERROR_PARAM; + } + + WisunInterface *wisun_mesh_if = reinterpret_cast(mesh_if); + return start(wisun_mesh_if, backbone_if); +} + +mesh_error_t WisunBorderRouter::start(WisunInterface *mesh_if, OnboardNetworkStack::Interface *backbone_if) +{ + if (mesh_if == NULL || backbone_if == NULL) { + return MESH_ERROR_PARAM; + } + + int8_t mesh_if_id = mesh_if->get_interface_id(); if (mesh_if_id < 0) { return MESH_ERROR_UNKNOWN; }