From 5d357bc9252ad9c44f17c99e5809c4e5e0cd652e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=20Lepp=C3=A4nen?= Date: Thu, 17 May 2018 11:53:15 +0300 Subject: [PATCH 1/2] Added memory manager set to add_ethernet_interface() of test stack This allows that EMAC memory manager can be used to allocate EMAC driver memory already after the add_ethernet_interface() call. --- TESTS/network/emac/emac_TestNetworkStack.cpp | 3 +++ TESTS/network/emac/emac_test_initialize.cpp | 2 -- features/netsocket/OnboardNetworkStack.h | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/TESTS/network/emac/emac_TestNetworkStack.cpp b/TESTS/network/emac/emac_TestNetworkStack.cpp index ea9e8da7817..a842424fbf7 100644 --- a/TESTS/network/emac/emac_TestNetworkStack.cpp +++ b/TESTS/network/emac/emac_TestNetworkStack.cpp @@ -114,6 +114,9 @@ nsapi_error_t EmacTestNetworkStack::add_ethernet_interface(EMAC &emac, bool defa m_interface->m_emac = &emac; + EmacTestMemoryManager *memory_manager = &EmacTestMemoryManager::get_instance(); + emac.set_memory_manager(*memory_manager); + *interface_out = m_interface; return NSAPI_ERROR_OK; diff --git a/TESTS/network/emac/emac_test_initialize.cpp b/TESTS/network/emac/emac_test_initialize.cpp index 01bc6191751..0e8dc5d617b 100644 --- a/TESTS/network/emac/emac_test_initialize.cpp +++ b/TESTS/network/emac/emac_test_initialize.cpp @@ -115,8 +115,6 @@ EmacTestMemoryManager *emac_m_mngr_get(void) bool emac_if_init(void) { static EMAC *emac = &EMAC::get_default_instance(); - static EmacTestMemoryManager *memory_manager = &EmacTestMemoryManager::get_instance(); - emac->set_memory_manager(*memory_manager); emac->set_link_input_cb(emac_if_link_input_cb); emac->set_link_state_cb(emac_if_link_state_change_cb); diff --git a/features/netsocket/OnboardNetworkStack.h b/features/netsocket/OnboardNetworkStack.h index bccd664dbc3..9a154c7e0fd 100644 --- a/features/netsocket/OnboardNetworkStack.h +++ b/features/netsocket/OnboardNetworkStack.h @@ -124,7 +124,8 @@ class OnboardNetworkStack : public NetworkStack { /** Register a network interface with the IP stack * * Connects EMAC layer with the IP stack and initializes all the required infrastructure. - * This function should be called only once for each available interface. + * This function should be called only once for each available interface. EMAC memory + * manager is available to EMAC after this function call. * * @param emac EMAC HAL implementation for this network interface * @param default_if true if the interface should be treated as the default one From 33204974ee371be497fabf640470d00388b3e505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=20Lepp=C3=A4nen?= Date: Thu, 17 May 2018 16:47:52 +0300 Subject: [PATCH 2/2] Removed EMAC get default instance from EMAC tests Test environment now uses the EMAC defined by add ethernet interface. --- TESTS/network/emac/emac_TestNetworkStack.cpp | 2 +- TESTS/network/emac/emac_initialize.h | 2 +- TESTS/network/emac/emac_test_initialize.cpp | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/TESTS/network/emac/emac_TestNetworkStack.cpp b/TESTS/network/emac/emac_TestNetworkStack.cpp index a842424fbf7..9209f79492a 100644 --- a/TESTS/network/emac/emac_TestNetworkStack.cpp +++ b/TESTS/network/emac/emac_TestNetworkStack.cpp @@ -161,7 +161,7 @@ char *EmacTestNetworkStack::Interface::get_gateway(char *buf, nsapi_size_t bufle nsapi_error_t EmacTestNetworkStack::Interface::bringup(bool dhcp, const char *ip, const char *netmask, const char *gw, const nsapi_ip_stack_t stack, bool blocking) { - if (!emac_if_init()) { + if (!emac_if_init(m_emac)) { TEST_ASSERT_MESSAGE(0, "emac initialization failed!"); } diff --git a/TESTS/network/emac/emac_initialize.h b/TESTS/network/emac/emac_initialize.h index d434e394b88..ff54da18441 100644 --- a/TESTS/network/emac/emac_initialize.h +++ b/TESTS/network/emac/emac_initialize.h @@ -19,7 +19,7 @@ #define EMAC_INITIALIZE_H unsigned char *emac_if_get_hw_addr(void); -bool emac_if_init(void); +bool emac_if_init(EMAC *emac); EMAC *emac_if_get(void); EmacTestMemoryManager *emac_m_mngr_get(void); diff --git a/TESTS/network/emac/emac_test_initialize.cpp b/TESTS/network/emac/emac_test_initialize.cpp index 0e8dc5d617b..4dcc1a0b383 100644 --- a/TESTS/network/emac/emac_test_initialize.cpp +++ b/TESTS/network/emac/emac_test_initialize.cpp @@ -48,6 +48,7 @@ using namespace utest::v1; static unsigned char eth_mac_addr[ETH_MAC_ADDR_LEN]; +EMAC *emac_handle = NULL; void test_emac_initialize() { @@ -104,7 +105,7 @@ unsigned char *emac_if_get_hw_addr(void) EMAC *emac_if_get(void) { - return &EMAC::get_default_instance(); + return emac_handle; } EmacTestMemoryManager *emac_m_mngr_get(void) @@ -112,9 +113,9 @@ EmacTestMemoryManager *emac_m_mngr_get(void) return &EmacTestMemoryManager::get_instance(); } -bool emac_if_init(void) +bool emac_if_init(EMAC *emac) { - static EMAC *emac = &EMAC::get_default_instance(); + emac_handle = emac; emac->set_link_input_cb(emac_if_link_input_cb); emac->set_link_state_cb(emac_if_link_state_change_cb);