test

Fork of WizFi250Interface by WIZnet

Committer:
cliff1
Date:
Fri Aug 18 04:50:17 2017 +0000
Revision:
1:116433d24e91
Parent:
0:e3dc9e54a15b
Test 5.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaizen 0:e3dc9e54a15b 1 /* WizFi250 implementation of NetworkInterfaceAPI
kaizen 0:e3dc9e54a15b 2 * Copyright (c) 2015 ARM Limited
kaizen 0:e3dc9e54a15b 3 *
kaizen 0:e3dc9e54a15b 4 * Licensed under the Apache License, Version 2.0 (the "License");
kaizen 0:e3dc9e54a15b 5 * you may not use this file except in compliance with the License.
kaizen 0:e3dc9e54a15b 6 * You may obtain a copy of the License at
kaizen 0:e3dc9e54a15b 7 *
kaizen 0:e3dc9e54a15b 8 * http://www.apache.org/licenses/LICENSE-2.0
kaizen 0:e3dc9e54a15b 9 *
kaizen 0:e3dc9e54a15b 10 * Unless required by applicable law or agreed to in writing, software
kaizen 0:e3dc9e54a15b 11 * distributed under the License is distributed on an "AS IS" BASIS,
kaizen 0:e3dc9e54a15b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kaizen 0:e3dc9e54a15b 13 * See the License for the specific language governing permissions and
kaizen 0:e3dc9e54a15b 14 * limitations under the License.
kaizen 0:e3dc9e54a15b 15 */
kaizen 0:e3dc9e54a15b 16
kaizen 0:e3dc9e54a15b 17 #ifndef WIZFI250_INTERFACE_H
kaizen 0:e3dc9e54a15b 18 #define WIZFI250_INTERFACE_H
kaizen 0:e3dc9e54a15b 19
cliff1 1:116433d24e91 20 #include "mbed.h"
kaizen 0:e3dc9e54a15b 21 #include "WizFi250.h"
kaizen 0:e3dc9e54a15b 22
kaizen 0:e3dc9e54a15b 23 #define WIZFI250_SOCKET_COUNT 8
kaizen 0:e3dc9e54a15b 24
kaizen 0:e3dc9e54a15b 25 /** WizFi250Interface class
kaizen 0:e3dc9e54a15b 26 * Implementation of the NetworkStack for the WizFi250
kaizen 0:e3dc9e54a15b 27 */
kaizen 0:e3dc9e54a15b 28 class WizFi250Interface : public NetworkStack, public WiFiInterface
kaizen 0:e3dc9e54a15b 29 {
kaizen 0:e3dc9e54a15b 30 public:
kaizen 0:e3dc9e54a15b 31 WizFi250Interface(PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud=115200 );
cliff1 1:116433d24e91 32
kaizen 0:e3dc9e54a15b 33 virtual int connect(
kaizen 0:e3dc9e54a15b 34 const char *ssid,
kaizen 0:e3dc9e54a15b 35 const char *pass,
kaizen 0:e3dc9e54a15b 36 nsapi_security_t security = NSAPI_SECURITY_NONE);
kaizen 0:e3dc9e54a15b 37
kaizen 0:e3dc9e54a15b 38 /** Stop the interface
kaizen 0:e3dc9e54a15b 39 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 40 */
kaizen 0:e3dc9e54a15b 41 virtual int disconnect();
kaizen 0:e3dc9e54a15b 42
kaizen 0:e3dc9e54a15b 43 /** Get the internally stored IP address
kaizen 0:e3dc9e54a15b 44 * @return IP address of the interface or null if not yet connected
kaizen 0:e3dc9e54a15b 45 */
kaizen 0:e3dc9e54a15b 46 virtual const char *get_ip_address();
kaizen 0:e3dc9e54a15b 47
kaizen 0:e3dc9e54a15b 48 /** Get the internally stored MAC address
kaizen 0:e3dc9e54a15b 49 * @return MAC address of the interface
kaizen 0:e3dc9e54a15b 50 */
kaizen 0:e3dc9e54a15b 51 virtual const char *get_mac_address();
cliff1 1:116433d24e91 52
cliff1 1:116433d24e91 53
cliff1 1:116433d24e91 54 // -- Added by cliff
cliff1 1:116433d24e91 55 virtual int connect(){ };
cliff1 1:116433d24e91 56 virtual int set_credentials(const char *ssid, const char *pass, nsapi_security_t security = NSAPI_SECURITY_NONE){ };
cliff1 1:116433d24e91 57 virtual int set_channel(uint8_t channel){ };
cliff1 1:116433d24e91 58 virtual const char *get_gateway() { };
cliff1 1:116433d24e91 59 virtual const char *get_netmask() { };
cliff1 1:116433d24e91 60 virtual int8_t get_rssi() { };
cliff1 1:116433d24e91 61 virtual int scan(WiFiAccessPoint *res, unsigned count) { };
cliff1 1:116433d24e91 62
cliff1 1:116433d24e91 63 //using NetworkInterface::gethostbyname;
kaizen 0:e3dc9e54a15b 64
kaizen 0:e3dc9e54a15b 65 protected:
kaizen 0:e3dc9e54a15b 66 /** Open a socket
kaizen 0:e3dc9e54a15b 67 * @param handle Handle in which to store new socket
kaizen 0:e3dc9e54a15b 68 * @param proto Type of socket to open, NSAPI_TCP or NSAPI_UDP
kaizen 0:e3dc9e54a15b 69 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 70 */
kaizen 0:e3dc9e54a15b 71 virtual int socket_open(void **handle, nsapi_protocol_t proto);
kaizen 0:e3dc9e54a15b 72
kaizen 0:e3dc9e54a15b 73 /** Close the socket
kaizen 0:e3dc9e54a15b 74 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 75 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 76 * @note On failure, any memory associated with the socket must still
kaizen 0:e3dc9e54a15b 77 * be cleaned up
kaizen 0:e3dc9e54a15b 78 */
kaizen 0:e3dc9e54a15b 79 virtual int socket_close(void *handle);
kaizen 0:e3dc9e54a15b 80
kaizen 0:e3dc9e54a15b 81 /** Bind a server socket to a specific port
kaizen 0:e3dc9e54a15b 82 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 83 * @param address Local address to listen for incoming connections on
kaizen 0:e3dc9e54a15b 84 * @return 0 on success, negative on failure.
kaizen 0:e3dc9e54a15b 85 */
kaizen 0:e3dc9e54a15b 86 virtual int socket_bind(void *handle, const SocketAddress &address);
kaizen 0:e3dc9e54a15b 87
kaizen 0:e3dc9e54a15b 88 /** Start listening for incoming connections
kaizen 0:e3dc9e54a15b 89 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 90 * @param backlog Number of pending connections that can be queued up at any
kaizen 0:e3dc9e54a15b 91 * one time [Default: 1]
kaizen 0:e3dc9e54a15b 92 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 93 */
kaizen 0:e3dc9e54a15b 94 virtual int socket_listen(void *handle, int backlog);
kaizen 0:e3dc9e54a15b 95
kaizen 0:e3dc9e54a15b 96 /** Connects this TCP socket to the server
kaizen 0:e3dc9e54a15b 97 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 98 * @param address SocketAddress to connect to
kaizen 0:e3dc9e54a15b 99 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 100 */
kaizen 0:e3dc9e54a15b 101 virtual int socket_connect(void *handle, const SocketAddress &address);
kaizen 0:e3dc9e54a15b 102
kaizen 0:e3dc9e54a15b 103 /** Accept a new connection.
kaizen 0:e3dc9e54a15b 104 * @param handle Handle in which to store new socket
kaizen 0:e3dc9e54a15b 105 * @param server Socket handle to server to accept from
kaizen 0:e3dc9e54a15b 106 * @return 0 on success, negative on failure
kaizen 0:e3dc9e54a15b 107 * @note This call is not-blocking, if this call would block, must
kaizen 0:e3dc9e54a15b 108 * immediately return NSAPI_ERROR_WOULD_WAIT
kaizen 0:e3dc9e54a15b 109 */
kaizen 0:e3dc9e54a15b 110 virtual int socket_accept(void **handle, void *server);
kaizen 0:e3dc9e54a15b 111
kaizen 0:e3dc9e54a15b 112 /** Send data to the remote host
kaizen 0:e3dc9e54a15b 113 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 114 * @param data The buffer to send to the host
kaizen 0:e3dc9e54a15b 115 * @param size The length of the buffer to send
kaizen 0:e3dc9e54a15b 116 * @return Number of written bytes on success, negative on failure
kaizen 0:e3dc9e54a15b 117 * @note This call is not-blocking, if this call would block, must
kaizen 0:e3dc9e54a15b 118 * immediately return NSAPI_ERROR_WOULD_WAIT
kaizen 0:e3dc9e54a15b 119 */
kaizen 0:e3dc9e54a15b 120 virtual int socket_send(void *handle, const void *data, unsigned size);
kaizen 0:e3dc9e54a15b 121
kaizen 0:e3dc9e54a15b 122 /** Receive data from the remote host
kaizen 0:e3dc9e54a15b 123 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 124 * @param data The buffer in which to store the data received from the host
kaizen 0:e3dc9e54a15b 125 * @param size The maximum length of the buffer
kaizen 0:e3dc9e54a15b 126 * @return Number of received bytes on success, negative on failure
kaizen 0:e3dc9e54a15b 127 * @note This call is not-blocking, if this call would block, must
kaizen 0:e3dc9e54a15b 128 * immediately return NSAPI_ERROR_WOULD_WAIT
kaizen 0:e3dc9e54a15b 129 */
kaizen 0:e3dc9e54a15b 130 virtual int socket_recv(void *handle, void *data, unsigned size);
kaizen 0:e3dc9e54a15b 131
kaizen 0:e3dc9e54a15b 132 /** Send a packet to a remote endpoint
kaizen 0:e3dc9e54a15b 133 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 134 * @param address The remote SocketAddress
kaizen 0:e3dc9e54a15b 135 * @param data The packet to be sent
kaizen 0:e3dc9e54a15b 136 * @param size The length of the packet to be sent
kaizen 0:e3dc9e54a15b 137 * @return The number of written bytes on success, negative on failure
kaizen 0:e3dc9e54a15b 138 * @note This call is not-blocking, if this call would block, must
kaizen 0:e3dc9e54a15b 139 * immediately return NSAPI_ERROR_WOULD_WAIT
kaizen 0:e3dc9e54a15b 140 */
kaizen 0:e3dc9e54a15b 141 virtual int socket_sendto(void *handle, const SocketAddress &address, const void *data, unsigned size);
kaizen 0:e3dc9e54a15b 142
kaizen 0:e3dc9e54a15b 143 /** Receive a packet from a remote endpoint
kaizen 0:e3dc9e54a15b 144 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 145 * @param address Destination for the remote SocketAddress or null
kaizen 0:e3dc9e54a15b 146 * @param buffer The buffer for storing the incoming packet data
kaizen 0:e3dc9e54a15b 147 * If a packet is too long to fit in the supplied buffer,
kaizen 0:e3dc9e54a15b 148 * excess bytes are discarded
kaizen 0:e3dc9e54a15b 149 * @param size The length of the buffer
kaizen 0:e3dc9e54a15b 150 * @return The number of received bytes on success, negative on failure
kaizen 0:e3dc9e54a15b 151 * @note This call is not-blocking, if this call would block, must
kaizen 0:e3dc9e54a15b 152 * immediately return NSAPI_ERROR_WOULD_WAIT
kaizen 0:e3dc9e54a15b 153 */
kaizen 0:e3dc9e54a15b 154 virtual int socket_recvfrom(void *handle, SocketAddress *address, void *buffer, unsigned size);
kaizen 0:e3dc9e54a15b 155
kaizen 0:e3dc9e54a15b 156 /** Register a callback on state change of the socket
kaizen 0:e3dc9e54a15b 157 * @param handle Socket handle
kaizen 0:e3dc9e54a15b 158 * @param callback Function to call on state change
kaizen 0:e3dc9e54a15b 159 * @param data Argument to pass to callback
kaizen 0:e3dc9e54a15b 160 * @note Callback may be called in an interrupt context.
kaizen 0:e3dc9e54a15b 161 */
kaizen 0:e3dc9e54a15b 162 virtual void socket_attach(void *handle, void (*callback)(void *), void *data);
kaizen 0:e3dc9e54a15b 163
kaizen 0:e3dc9e54a15b 164 private:
kaizen 0:e3dc9e54a15b 165 WizFi250 _wizfi250;
kaizen 0:e3dc9e54a15b 166 bool _ids[WIZFI250_SOCKET_COUNT];
kaizen 0:e3dc9e54a15b 167 };
kaizen 0:e3dc9e54a15b 168
kaizen 0:e3dc9e54a15b 169 #endif
kaizen 0:e3dc9e54a15b 170