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

C027Interface.h

Committer:
geky
Date:
2016-04-15
Revision:
12:181a9415736b
Child:
14:3d1845f5cd81

File content as of revision 12:181a9415736b:

/* 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