takashi kadono / Mbed OS Nucleo_446

Dependencies:   ssd1331

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers emac_TestNetworkStack.cpp Source File

emac_TestNetworkStack.cpp

00001 /*
00002  * Copyright (c) 2018, ARM Limited, All Rights Reserved
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License"); you may
00006  * not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  * http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00013  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include "unity.h"
00019 
00020 #include "EMACMemoryManager.h"
00021 #include "emac_TestNetworkStack.h"
00022 #include "emac_initialize.h"
00023 
00024 EmacTestNetworkStack::EmacTestNetworkStack()
00025     : m_interface(NULL)
00026 {
00027 
00028 }
00029 
00030 nsapi_error_t EmacTestNetworkStack::gethostbyname(const char *host, SocketAddress *address, nsapi_version_t version)
00031 {
00032     return NSAPI_ERROR_OK ;
00033 }
00034 
00035 nsapi_error_t EmacTestNetworkStack::add_dns_server(const SocketAddress &address)
00036 {
00037     return NSAPI_ERROR_OK ;
00038 }
00039 
00040 nsapi_error_t EmacTestNetworkStack::call_in(int delay, mbed::Callback<void()> func)
00041 {
00042     // Implemented as empty to save memory
00043     return NSAPI_ERROR_DEVICE_ERROR ;
00044 }
00045 
00046 EmacTestNetworkStack::call_in_callback_cb_t EmacTestNetworkStack::get_call_in_callback()
00047 {
00048     call_in_callback_cb_t cb(this, &EmacTestNetworkStack::call_in);
00049     return cb;
00050 }
00051 
00052 nsapi_error_t EmacTestNetworkStack::socket_open(nsapi_socket_t *handle, nsapi_protocol_t proto)
00053 {
00054     return NSAPI_ERROR_OK ;
00055 }
00056 
00057 nsapi_error_t EmacTestNetworkStack::socket_close(nsapi_socket_t handle)
00058 {
00059     return NSAPI_ERROR_OK ;
00060 }
00061 
00062 nsapi_error_t EmacTestNetworkStack::socket_bind(nsapi_socket_t handle, const SocketAddress &address)
00063 {
00064     return NSAPI_ERROR_OK ;
00065 }
00066 
00067 nsapi_error_t EmacTestNetworkStack::socket_listen(nsapi_socket_t handle, int backlog)
00068 {
00069     return NSAPI_ERROR_OK ;
00070 }
00071 
00072 nsapi_error_t EmacTestNetworkStack::socket_connect(nsapi_socket_t handle, const SocketAddress &address)
00073 {
00074     return NSAPI_ERROR_OK ;
00075 }
00076 
00077 nsapi_error_t EmacTestNetworkStack::socket_accept(nsapi_socket_t server, nsapi_socket_t *handle, SocketAddress *address)
00078 {
00079     return NSAPI_ERROR_OK ;
00080 }
00081 
00082 nsapi_size_or_error_t EmacTestNetworkStack::socket_send(nsapi_socket_t handle, const void *data, nsapi_size_t size)
00083 {
00084     return NSAPI_ERROR_OK ;
00085 }
00086 
00087 nsapi_size_or_error_t EmacTestNetworkStack::socket_recv(nsapi_socket_t handle, void *data, nsapi_size_t size)
00088 {
00089     return NSAPI_ERROR_OK ;
00090 }
00091 
00092 nsapi_size_or_error_t EmacTestNetworkStack::socket_sendto(nsapi_socket_t handle, const SocketAddress &address, const void *data, nsapi_size_t size)
00093 {
00094     return size;
00095 }
00096 
00097 nsapi_size_or_error_t EmacTestNetworkStack::socket_recvfrom(nsapi_socket_t handle, SocketAddress *address, void *data, nsapi_size_t size)
00098 {
00099     return NSAPI_ERROR_DEVICE_ERROR ;
00100 }
00101 
00102 nsapi_error_t EmacTestNetworkStack::setsockopt(nsapi_socket_t handle, int level, int optname, const void *optval, unsigned optlen)
00103 {
00104     return NSAPI_ERROR_OK ;
00105 }
00106 
00107 nsapi_error_t EmacTestNetworkStack::getsockopt(nsapi_socket_t handle, int level, int optname, void *optval, unsigned *optlen)
00108 {
00109     return NSAPI_ERROR_OK ;
00110 }
00111 
00112 void EmacTestNetworkStack::socket_attach(nsapi_socket_t handle, void (*callback)(void *), void *data)
00113 {
00114 
00115 }
00116 
00117 nsapi_error_t EmacTestNetworkStack::add_ethernet_interface(EMAC &emac, bool default_if, OnboardNetworkStack::Interface **interface_out)
00118 {
00119     // Test network stack supports only one interface
00120     TEST_ASSERT_MESSAGE(!m_interface, "Only one interface supported!");
00121 
00122     m_interface = &EmacTestNetworkStack::Interface::get_instance();
00123     TEST_ASSERT_MESSAGE(m_interface, "Invalid interface!");
00124 
00125     m_interface->m_emac = &emac;
00126 
00127     EmacTestMemoryManager *memory_manager = &EmacTestMemoryManager::get_instance();
00128     emac.set_memory_manager(*memory_manager);
00129 
00130     *interface_out = m_interface;
00131 
00132     return NSAPI_ERROR_OK ;
00133 }
00134 
00135 EmacTestNetworkStack::Interface::Interface()
00136     : m_emac(NULL)
00137 {
00138 
00139 }
00140 
00141 
00142 void EmacTestNetworkStack::Interface::attach(mbed::Callback<void(nsapi_event_t, intptr_t)> status_cb)
00143 {
00144 
00145 }
00146 
00147 nsapi_connection_status_t EmacTestNetworkStack::Interface::get_connection_status() const
00148 {
00149     return NSAPI_STATUS_ERROR_UNSUPPORTED;
00150 }
00151 
00152 char *EmacTestNetworkStack::Interface::get_mac_address(char *buf, nsapi_size_t buflen)
00153 {
00154     return NULL;
00155 }
00156 
00157 char *EmacTestNetworkStack::Interface::get_ip_address(char *buf, nsapi_size_t buflen)
00158 {
00159     return NULL;
00160 }
00161 
00162 char *EmacTestNetworkStack::Interface::get_netmask(char *buf, nsapi_size_t buflen)
00163 {
00164     return NULL;
00165 }
00166 
00167 char *EmacTestNetworkStack::Interface::get_gateway(char *buf, nsapi_size_t buflen)
00168 {
00169     return NULL;
00170 }
00171 
00172 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)
00173 {
00174     if (!emac_if_init(m_emac)) {
00175         TEST_ASSERT_MESSAGE(0, "emac initialization failed!");
00176     }
00177 
00178     return NSAPI_ERROR_OK ;
00179 }
00180 
00181 nsapi_error_t EmacTestNetworkStack::Interface::bringdown()
00182 {
00183     return NSAPI_ERROR_OK ;
00184 }
00185 
00186 EmacTestNetworkStack::Interface &EmacTestNetworkStack::Interface::get_instance()
00187 {
00188     static EmacTestNetworkStack::Interface test_interface;
00189     return test_interface;
00190 }
00191 
00192 EmacTestNetworkStack &EmacTestNetworkStack::get_instance()
00193 {
00194     static EmacTestNetworkStack test_stack;
00195     return test_stack;
00196 }
00197 
00198 #define TEST 0x33254234
00199 #if MBED_CONF_NSAPI_DEFAULT_STACK == TEST
00200 #undef TEST
00201 OnboardNetworkStack &OnboardNetworkStack::get_default_instance()
00202 {
00203     return EmacTestNetworkStack::get_instance();
00204 }
00205 #endif