Socket interface for C027Interface. Implements the NetworkSocketAPI

Dependencies:   C027_Support

Dependents:   HelloC027Interface U_Blox_DeviceConnector U_Blox_DeviceConnector U-Blox_Client

Fork of LWIPInterface by NetworkSocketAPI

Revision:
12:181a9415736b
Child:
14:3d1845f5cd81
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C027Interface.h	Fri Apr 15 16:06:47 2016 +0000
@@ -0,0 +1,75 @@
+/* C027 implementation of NetworkInterfaceAPI
+ * Copyright (c) 2015 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef C027_INTERFACE_H
+#define C027_INTERFACE_H
+
+#include "CellularInterface.h"
+#include "MDM.h"
+
+
+/** C027Interface class
+ *  Implementation of the NetworkInterface for C027
+ */
+class C027Interface : public CellularInterface
+{
+public:
+    // Lifetime of C027Interface
+    C027Interface(const char *simpin=0, bool debug=false);
+
+    // Implementation of CellularInterface
+    virtual int32_t connect(const char *apn=0, const char *username=0, const char *password=0);
+    virtual int32_t disconnect();
+
+    // Implementation of NetworkInterface
+    virtual const char *getIPAddress();
+    virtual const char *getMACAddress();
+
+    virtual SocketInterface *createSocket(ns_protocol_t proto);
+    virtual void destroySocket(SocketInterface *socket);
+
+private:
+    // Modem object
+    bool _debug;
+    MDMSerial *_mdm;
+    char _ip_address[NS_IP_SIZE];
+    char _mac_address[NS_MAC_SIZE];
+    char _pin[sizeof "1234"];
+
+    // Implementation of the TCP SocketInterface for C027
+    class C027Socket : public SocketInterface
+    {
+    public:
+
+        C027Socket(MDMSerial *mdm, int socket, MDMParser::IpProtocol proto)
+            : _mdm(mdm), _socket(socket), _proto(proto) {}
+        MDMSerial *_mdm;
+        int _socket;
+        MDMParser::IpProtocol _proto;
+        MDMParser::IP _ip;
+        int _port;
+
+        // Implementation of SocketInterface
+        virtual int32_t open(const char *ip, uint16_t port);
+        virtual int32_t close();
+
+        virtual int32_t send(const void *data, uint32_t size);
+        virtual int32_t recv(void *data, uint32_t size);
+    };
+};
+
+
+#endif