zhang chenhong / Mbed 2 deprecated IDW01M1_Cloud_IBM

Dependencies:   mbed Servo X_NUCLEO_IKS01A2 X_NUCLEO_IDW01M1v2 NetworkSocketAPI NDefLib MQTT

Committer:
mridup
Date:
Fri Apr 08 12:07:17 2016 +0000
Revision:
0:cbf8bc43bc9e
changes for optimization in Keil compiler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mridup 0:cbf8bc43bc9e 1 /* Socket
mridup 0:cbf8bc43bc9e 2 * Copyright (c) 2015 ARM Limited
mridup 0:cbf8bc43bc9e 3 *
mridup 0:cbf8bc43bc9e 4 * Licensed under the Apache License, Version 2.0 (the "License");
mridup 0:cbf8bc43bc9e 5 * you may not use this file except in compliance with the License.
mridup 0:cbf8bc43bc9e 6 * You may obtain a copy of the License at
mridup 0:cbf8bc43bc9e 7 *
mridup 0:cbf8bc43bc9e 8 * http://www.apache.org/licenses/LICENSE-2.0
mridup 0:cbf8bc43bc9e 9 *
mridup 0:cbf8bc43bc9e 10 * Unless required by applicable law or agreed to in writing, software
mridup 0:cbf8bc43bc9e 11 * distributed under the License is distributed on an "AS IS" BASIS,
mridup 0:cbf8bc43bc9e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mridup 0:cbf8bc43bc9e 13 * See the License for the specific language governing permissions and
mridup 0:cbf8bc43bc9e 14 * limitations under the License.
mridup 0:cbf8bc43bc9e 15 */
mridup 0:cbf8bc43bc9e 16
mridup 0:cbf8bc43bc9e 17 #ifndef SOCKET_H
mridup 0:cbf8bc43bc9e 18 #define SOCKET_H
mridup 0:cbf8bc43bc9e 19
mridup 0:cbf8bc43bc9e 20 #include "NetworkInterface.h"
mridup 0:cbf8bc43bc9e 21
mridup 0:cbf8bc43bc9e 22 /** Abstract socket class
mridup 0:cbf8bc43bc9e 23 * API for handling general sockets. Supports IP address operations
mridup 0:cbf8bc43bc9e 24 * and sending/recieving data.
mridup 0:cbf8bc43bc9e 25 */
mridup 0:cbf8bc43bc9e 26 class Socket
mridup 0:cbf8bc43bc9e 27 {
mridup 0:cbf8bc43bc9e 28 public:
mridup 0:cbf8bc43bc9e 29 ~Socket();
mridup 0:cbf8bc43bc9e 30
mridup 0:cbf8bc43bc9e 31 /** Open a connection to the underlying address
mridup 0:cbf8bc43bc9e 32 * @param address URL or IP address to connect to
mridup 0:cbf8bc43bc9e 33 * @param port Port to connect to
mridup 0:cbf8bc43bc9e 34 * @return 0 on success
mridup 0:cbf8bc43bc9e 35 */
mridup 0:cbf8bc43bc9e 36 int32_t open(const char *address, uint16_t port);
mridup 0:cbf8bc43bc9e 37
mridup 0:cbf8bc43bc9e 38 /** Close an open connection
mridup 0:cbf8bc43bc9e 39 * @return 0 on success
mridup 0:cbf8bc43bc9e 40 */
mridup 0:cbf8bc43bc9e 41 int32_t close();
mridup 0:cbf8bc43bc9e 42
mridup 0:cbf8bc43bc9e 43 /** Send data over the socket
mridup 0:cbf8bc43bc9e 44 * @param data Buffer of data to send
mridup 0:cbf8bc43bc9e 45 * @param size Size of data to send
mridup 0:cbf8bc43bc9e 46 * @return 0 on success
mridup 0:cbf8bc43bc9e 47 */
mridup 0:cbf8bc43bc9e 48 int32_t send(const void *data, uint32_t size);
mridup 0:cbf8bc43bc9e 49
mridup 0:cbf8bc43bc9e 50 /** Recieve data over the socket
mridup 0:cbf8bc43bc9e 51 * @param data Buffer to store recieved data
mridup 0:cbf8bc43bc9e 52 * @param size Size of provided buffer
mridup 0:cbf8bc43bc9e 53 * @param blocking If true wait for data, otherwise return 0 if no data is available
mridup 0:cbf8bc43bc9e 54 * @return Number of bytes recieved or a negative value on failure
mridup 0:cbf8bc43bc9e 55 */
mridup 0:cbf8bc43bc9e 56 int32_t recv(void *data, uint32_t size, bool blocking = true);
mridup 0:cbf8bc43bc9e 57
mridup 0:cbf8bc43bc9e 58 /** Gets the IP address
mridup 0:cbf8bc43bc9e 59 * @return IP address to connect to
mridup 0:cbf8bc43bc9e 60 */
mridup 0:cbf8bc43bc9e 61 const char *getIPAddress() const;
mridup 0:cbf8bc43bc9e 62
mridup 0:cbf8bc43bc9e 63 /** Gets the port
mridup 0:cbf8bc43bc9e 64 * @return Port to connect to
mridup 0:cbf8bc43bc9e 65 */
mridup 0:cbf8bc43bc9e 66 uint16_t getPort() const;
mridup 0:cbf8bc43bc9e 67
mridup 0:cbf8bc43bc9e 68 /** Returns status of socket
mridup 0:cbf8bc43bc9e 69 * @return true if connected
mridup 0:cbf8bc43bc9e 70 */
mridup 0:cbf8bc43bc9e 71 bool isConnected();
mridup 0:cbf8bc43bc9e 72
mridup 0:cbf8bc43bc9e 73 protected:
mridup 0:cbf8bc43bc9e 74 Socket(NetworkInterface *iface, ns_protocol_t proto);
mridup 0:cbf8bc43bc9e 75
mridup 0:cbf8bc43bc9e 76 private:
mridup 0:cbf8bc43bc9e 77 NetworkInterface *_iface;
mridup 0:cbf8bc43bc9e 78 ns_protocol_t _proto;
mridup 0:cbf8bc43bc9e 79 SocketInterface *_socket;
mridup 0:cbf8bc43bc9e 80
mridup 0:cbf8bc43bc9e 81 char _ip_address[NS_IP_SIZE];
mridup 0:cbf8bc43bc9e 82 uint16_t _port;
mridup 0:cbf8bc43bc9e 83 };
mridup 0:cbf8bc43bc9e 84
mridup 0:cbf8bc43bc9e 85 #endif