Support for LISA-N101

Fork of C027_Support by u-blox

This is a variant of the C027 driver code for the C027N version, i.e. the one with the Neul/Huawei/u-blox Cellular Internet of Things module on board. The AT command interface for this module is entirely different to the AT interface for the other u-blox modules, hence this fork of the driver. Work is underway to rearchitect the original C027 driver so that a merge can be done.

Socket/Socket.h

Committer:
RobMeades
Date:
2015-06-17
Revision:
127:4df82b52f834
Parent:
67:ff9472d344d4

File content as of revision 127:4df82b52f834:

#ifndef SOCKET_H_
#define SOCKET_H_

#include "MDM.h"

/** Socket file descriptor and select wrapper
  */
class Socket {
public:
    Socket() {
        _socket  = -1;
        _timeout_ms = MDMParser::TIMEOUT_BLOCKING;
        _mdm     = NULL;
    }
    
    void set_blocking(bool blocking, unsigned int timeout = 1500) {
        _timeout_ms = blocking ? MDMParser::TIMEOUT_BLOCKING : (int)timeout;
        if (_socket >= 0) {
            _mdm->socketSetBlocking(_socket, _timeout_ms); 
        }
    }
    
    int close() {
        bool ret = false;
        if (_socket >= 0)
        {
            ret = _mdm->socketClose(_socket);
            _mdm->socketFree(_socket);
            _socket = -1;
            _timeout_ms = MDMParser::TIMEOUT_BLOCKING;
        }
        return ret ? 0 : -1;
    }
    
    ~Socket() { close(); }
    
protected:
    int _socket;
    int _timeout_ms;
    MDMParser* _mdm;
};


#endif /* SOCKET_H_ */