C027_SupportTest_xively_locationで使用しているC027用ライブラリ

Fork of C027_Support by u-blox

Embed: (wiki syntax)

« Back to documentation index

MDMParser Class Reference

basic modem parser class More...

#include <MDM.h>

Inherited by MDMSerial, and MDMUsb.

Data Structures

struct  DevStatus
 Device status. More...
struct  NetStatus
 Network Status. More...

Public Types

enum  Dev
 

MT Device Types.

More...
enum  Sim
 

SIM Status.

More...
enum  Lpm
 

SIM Status.

More...
enum  Reg
 

Registration Status.

More...
enum  AcT
 

Access Technology.

More...
enum  IpProtocol
 

Type of IP protocol.

More...
typedef uint32_t IP
 An IP v4 address.
typedef int(* _DPRINT )(void *param, char const *format,...)
 helper type for DPRINT
typedef int(* _CALLBACKPTR )(int type, const char *buf, int len, void *param)
 callback function for waitFinalResp with void* as argument

Public Member Functions

 MDMParser (void)
 Constructor.
bool connect (const char *simpin=NULL, const char *apn=NULL, const char *username=NULL, const char *password=NULL, Auth auth=AUTH_DETECT, PinName pn MDM_IF(=MDMPWRON,=D4))
 Combined Init, checkNetStatus, join suitable for simple applications.
bool init (const char *simpin=NULL, DevStatus *status=NULL, PinName pn MDM_IF(=MDMPWRON,=D4))
 register (Attach) the MT to the GPRS service.
bool registerNet (NetStatus *status=NULL, int timeout_ms=180000)
 register to the network
bool checkNetStatus (NetStatus *status=NULL)
 check if the network is available
bool powerOff (void)
 Power off the MT, This function has to be called prior to switching off the supply.
MDMParser::IP join (const char *apn=NULL, const char *username=NULL, const char *password=NULL, Auth auth=AUTH_DETECT)
 register (Attach) the MT to the GPRS service.
bool disconnect (void)
 deregister (detach) the MT from the GPRS service.
MDMParser::IP gethostbyname (const char *host)
 Translates a domain name to an IP address.
int socketSocket (IpProtocol ipproto, int port=-1)
 Create a socket for a ip protocol (and optionaly bind)
bool socketConnect (int socket, const char *host, int port)
 make a socket connection
bool socketIsConnected (int socket)
 make a socket connection
bool socketSetBlocking (int socket, int timeout_ms)
 Get the number of bytes pending for reading for this socket.
int socketSend (int socket, const char *buf, int len)
 Write socket data.
int socketSendTo (int socket, IP ip, int port, const char *buf, int len)
 Write socket data to a IP.
int socketReadable (int socket)
 Get the number of bytes pending for reading for this socket.
int socketRecv (int socket, char *buf, int len)
 Read this socket.
int socketRecvFrom (int socket, IP *ip, int *port, char *buf, int len)
 Read from this socket.
bool socketClose (int socket)
 Close a connectied socket (that was connected with socketConnect)
bool socketFree (int socket)
 Free the socket (that was allocated before by socketSocket)
int smsList (const char *stat="ALL", int *ix=NULL, int num=0)
 count the number of sms in the device and optionally return a list with indexes from the storage locations in the device.
bool smsRead (int ix, char *num, char *buf, int len)
 Read a Message from a storage position.
bool smsDelete (int ix)
 Send a message to a recipient.
bool smsSend (const char *num, const char *buf)
 Send a message to a recipient.
bool ussdCommand (const char *cmd, char *buf)
 Read a Message from a storage position.
bool delFile (const char *filename)
 Delete a file in the local file system.
int writeFile (const char *filename, const char *buf, int len)
 Write some data to a file in the local file system.
int readFile (const char *filename, char *buf, int len)
 REad a file from the local file system.
bool setDebug (int level)
 _DUMP_TEMPLATE (dumpDevStatus, MDMParser::DevStatus *, status) _DUMP_TEMPLATE(dumpNetStatus
 dump the device status to stdout using printf
MDMParser::NetStatus status _DUMP_TEMPLATE (dumpIp, MDMParser::IP, ip) enum
 dump the ip address to stdout using printf
virtual int getLine (char *buf, int len)=0
 Get a line from the physical interface.
virtual int send (const char *buf, int len)
 Write data to the device.
int sendFormated (const char *format,...)
 Write formated date to the physical interface (printf style)
int waitFinalResp (_CALLBACKPTR cb=NULL, void *param=NULL, int timeout_ms=10000)
 Wait for a final respons.
template<class T >
int waitFinalResp (int(*cb)(int type, const char *buf, int len, T *param), T *param, int timeout_ms=10000)
 template version of waitFinalResp when using callbacks, This template will allow the compiler to do type cheking but internally symply casts the arguments and call the (void*) version of waitFinalResp.

Static Public Member Functions

static MDMParsergetInstance ()
 get static instance

Protected Member Functions

virtual int _send (const void *buf, int len)=0
 Write bytes to the physical interface.
virtual void wait_ms (int ms)
 override in a rtos system, you us the wait function of a Thread
virtual void lock (void)
 override the lock in a rtos system
virtual void unlock (void)
 override the unlock in a rtos system

Static Protected Member Functions

static int _getLine (Pipe< char > *pipe, char *buffer, int length)
 Helper: Parse a line from the receiving buffered pipe.
static int _parseMatch (Pipe< char > *pipe, int len, const char *sta, const char *end)
 Helper: Parse a match from the pipe.
static int _parseFormated (Pipe< char > *pipe, int len, const char *fmt)
 Helper: Parse a match from the pipe.

Protected Attributes

DevStatus _dev
 collected device information
NetStatus _net
 collected network information
IP _ip
 assigned ip address

Detailed Description

basic modem parser class

Definition at line 22 of file MDM.h.


Member Typedef Documentation

typedef int(* _CALLBACKPTR)(int type, const char *buf, int len, void *param)

callback function for waitFinalResp with void* as argument

Parameters:
typethe getLine response
bufthe parsed line
lenthe size of the parsed line
paramthe optional argument passed to waitFinalResp
Returns:
WAIT if processing should continue, any other value aborts waitFinalResp and this retunr value retuned

Definition at line 438 of file MDM.h.

typedef int(* _DPRINT)(void *param, char const *format,...)

helper type for DPRINT

Definition at line 331 of file MDM.h.

typedef uint32_t IP

An IP v4 address.

Definition at line 70 of file MDM.h.


Member Enumeration Documentation

enum AcT

Access Technology.

Definition at line 56 of file MDM.h.

enum Dev

MT Device Types.

Definition at line 34 of file MDM.h.

enum IpProtocol

Type of IP protocol.

Definition at line 160 of file MDM.h.

enum Lpm

SIM Status.

Definition at line 39 of file MDM.h.

enum Reg

Registration Status.

Definition at line 54 of file MDM.h.

enum Sim

SIM Status.

Definition at line 37 of file MDM.h.


Constructor & Destructor Documentation

MDMParser ( void   )

Constructor.

Definition at line 83 of file MDM.cpp.


Member Function Documentation

_DUMP_TEMPLATE ( dumpDevStatus  ,
MDMParser::DevStatus ,
status   
)

dump the device status to stdout using printf

Parameters:
statusthe status to convert to textual form, unavailable fields are ommited (not printed)
dprinta function pointer
paramthe irst argument passed to dprint dump the network status to stdout using printf
statusthe status to convert to textual form, unavailable fields are ommited (not printed)
dprinta function pointer
paramthe irst argument passed to dprint
MDMParser::NetStatus status _DUMP_TEMPLATE ( dumpIp  ,
MDMParser::IP  ,
ip   
)

dump the ip address to stdout using printf

Parameters:
ipthe ip to convert to textual form, unavailable fields are ommited (not printed)
dprinta function pointer
paramthe irst argument passed to dprint

Definition at line 365 of file MDM.h.

int _getLine ( Pipe< char > *  pipe,
char *  buffer,
int  length 
) [static, protected]

Helper: Parse a line from the receiving buffered pipe.

Parameters:
pipethe receiving buffer pipe
bufthe parsed line
lenthe size of the parsed line
Returns:
type and length if something was found, WAIT if not enough data is available NOT_FOUND if nothing was found

Definition at line 1508 of file MDM.cpp.

int _parseFormated ( Pipe< char > *  pipe,
int  len,
const char *  fmt 
) [static, protected]

Helper: Parse a match from the pipe.

Parameters:
pipethe buffered pipe
numberof bytes to parse at maximum,
fmtthe formating string (d any number, c any char of last d len)
Returns:
size of parsed match

Definition at line 1465 of file MDM.cpp.

int _parseMatch ( Pipe< char > *  pipe,
int  len,
const char *  sta,
const char *  end 
) [static, protected]

Helper: Parse a match from the pipe.

Parameters:
pipethe buffered pipe
numberof bytes to parse at maximum,
stathe starting string, NULL if none
endthe terminating string, NULL if none
Returns:
size of parsed match

Definition at line 1439 of file MDM.cpp.

virtual int _send ( const void *  buf,
int  len 
) [protected, pure virtual]

Write bytes to the physical interface.

This function should be implemented in a inherited class.

Parameters:
bufthe buffer to write
bufsize of the buffer to write
Returns:
bytes written

Implemented in MDMSerial.

bool checkNetStatus ( NetStatus status = NULL )

check if the network is available

Parameters:
statusan optional structure to with network information
Returns:
true if successful and connected to network, false otherwise

Definition at line 546 of file MDM.cpp.

bool connect ( const char *  simpin = NULL,
const char *  apn = NULL,
const char *  username = NULL,
const char *  password = NULL,
Auth  auth = AUTH_DETECT,
PinName pn   MDM_IF=MDMPWRON,=D4 
)

Combined Init, checkNetStatus, join suitable for simple applications.

Parameters:
simpina optional pin of the SIM card
apnthe of the network provider e.g. "internet" or "apn.provider.com"
usernameis the user name text string for the authentication phase
passwordis the password text string for the authentication phase
authis the authentication mode (CHAP,PAP,NONE or DETECT)
Returns:
true if successful, false otherwise
bool delFile ( const char *  filename )

Delete a file in the local file system.

Parameters:
filenamethe name of the file
Returns:
true if successful, false otherwise

Definition at line 1311 of file MDM.cpp.

bool disconnect ( void   )

deregister (detach) the MT from the GPRS service.

Returns:
true if successful, false otherwise

Definition at line 845 of file MDM.cpp.

MDMParser::IP gethostbyname ( const char *  host )

Translates a domain name to an IP address.

Parameters:
hostthe domain name to translate e.g. "u-blox.com"
Returns:
the IP if successful, 0 otherwise

Definition at line 867 of file MDM.cpp.

static MDMParser* getInstance (  ) [static]

get static instance

Definition at line 28 of file MDM.h.

virtual int getLine ( char *  buf,
int  len 
) [pure virtual]

Get a line from the physical interface.

This function need to be implemented in a inherited class. Usually just calls _getLine on the rx buffer pipe.

Parameters:
bufthe buffer to store it
bufsize of the buffer
Returns:
type and length if something was found, WAIT if not enough data is available NOT_FOUND if nothing was found

Implemented in MDMSerial.

bool init ( const char *  simpin = NULL,
DevStatus status = NULL,
PinName pn   MDM_IF=MDMPWRON,=D4 
)

register (Attach) the MT to the GPRS service.

Parameters:
simpina optional pin of the SIM card
statusan optional struture to with device information
Returns:
true if successful, false otherwise
MDMParser::IP join ( const char *  apn = NULL,
const char *  username = NULL,
const char *  password = NULL,
Auth  auth = AUTH_DETECT 
)

register (Attach) the MT to the GPRS service.

Parameters:
apnthe of the network provider e.g. "internet" or "apn.provider.com"
usernameis the user name text string for the authentication phase
passwordis the password text string for the authentication phase
authis the authentication mode (CHAP,PAP,NONE or DETECT)
Returns:
the ip that is assigned

Definition at line 691 of file MDM.cpp.

virtual void lock ( void   ) [protected, virtual]

override the lock in a rtos system

Definition at line 507 of file MDM.h.

bool powerOff ( void   )

Power off the MT, This function has to be called prior to switching off the supply.

Returns:
true if successfully, false otherwise

Definition at line 481 of file MDM.cpp.

int readFile ( const char *  filename,
char *  buf,
int  len 
)

REad a file from the local file system.

Parameters:
filenamethe name of the file
bufa buffer to hold the data
lenthe size to read
Returns:
the number of bytes read

Definition at line 1334 of file MDM.cpp.

bool registerNet ( NetStatus status = NULL,
int  timeout_ms = 180000 
)

register to the network

Parameters:
statusan optional structure to with network information
timeout_ms-1 blocking, else non blocking timeout in ms
Returns:
true if successful and connected to network, false otherwise

Definition at line 534 of file MDM.cpp.

int send ( const char *  buf,
int  len 
) [virtual]

Write data to the device.

Parameters:
bufthe buffer to write
bufsize of the buffer to write
Returns:
bytes written

Definition at line 101 of file MDM.cpp.

int sendFormated ( const char *  format,
  ... 
)

Write formated date to the physical interface (printf style)

Parameters:
fmtthe format string
..variable arguments to be formated
Returns:
bytes written

Definition at line 112 of file MDM.cpp.

bool setDebug ( int  level )

Set the debug level

Parameters:
level0 = OFF, 1 = INFO(default), 2 = TRACE, 3 = ATCMD
Returns:
true if successful, false not possible

Definition at line 1365 of file MDM.cpp.

bool smsDelete ( int  ix )

Send a message to a recipient.

Parameters:
ixthe storage position to delete
Returns:
true if successful, false otherwise

Definition at line 1246 of file MDM.cpp.

int smsList ( const char *  stat = "ALL",
int *  ix = NULL,
int  num = 0 
)

count the number of sms in the device and optionally return a list with indexes from the storage locations in the device.

Parameters:
statwhat type of messages you can use use "REC UNREAD", "REC READ", "STO UNSENT", "STO SENT", "ALL"
ixlist where to save the storage positions
numnumber of elements in the list
Returns:
the number of messages, this can be bigger than num, -1 on failure

Definition at line 1218 of file MDM.cpp.

bool smsRead ( int  ix,
char *  num,
char *  buf,
int  len 
)

Read a Message from a storage position.

Parameters:
ixthe storage position to read
numthe originator address (~16 chars)
bufa buffer where to save the sm
lenthe length of the sm
Returns:
true if successful, false otherwise

Definition at line 1270 of file MDM.cpp.

bool smsSend ( const char *  num,
const char *  buf 
)

Send a message to a recipient.

Parameters:
numthe phone number of the recipient
bufthe content of the message to sent
Returns:
true if successful, false otherwise

Definition at line 1231 of file MDM.cpp.

bool socketClose ( int  socket )

Close a connectied socket (that was connected with socketConnect)

Parameters:
socketthe socket handle
Returns:
true if successfully, false otherwise

Definition at line 968 of file MDM.cpp.

bool socketConnect ( int  socket,
const char *  host,
int  port 
)

make a socket connection

Parameters:
socketthe socket handle
hostthe domain name to connect e.g. "u-blox.com"
portthe port to connect
Returns:
true if successfully, false otherwise

Definition at line 927 of file MDM.cpp.

bool socketFree ( int  socket )

Free the socket (that was allocated before by socketSocket)

Parameters:
socketthe socket handle
Returns:
true if successfully, false otherwise

Definition at line 984 of file MDM.cpp.

bool socketIsConnected ( int  socket )

make a socket connection

Parameters:
socketthe socket handle
Returns:
true if connected, false otherwise

Definition at line 945 of file MDM.cpp.

int socketReadable ( int  socket )

Get the number of bytes pending for reading for this socket.

Parameters:
socketthe socket handle
Returns:
the number of bytes pending or SOCKET_ERROR on failure

Definition at line 1060 of file MDM.cpp.

int socketRecv ( int  socket,
char *  buf,
int  len 
)

Read this socket.

Parameters:
socketthe socket handle
bufthe buffer to read into
lenthe size of the buffer to read into
Returns:
the number of bytes read or SOCKET_ERROR on failure

Definition at line 1087 of file MDM.cpp.

int socketRecvFrom ( int  socket,
IP ip,
int *  port,
char *  buf,
int  len 
)

Read from this socket.

Parameters:
socketthe socket handle
ipthe ip of host where the data originates from
portthe port where the data originates from
bufthe buffer to read into
lenthe size of the buffer to read into
Returns:
the number of bytes read or SOCKET_ERROR on failure

Definition at line 1147 of file MDM.cpp.

int socketSend ( int  socket,
const char *  buf,
int  len 
)

Write socket data.

Parameters:
socketthe socket handle
bufthe buffer to write
lenthe size of the buffer to write
Returns:
the size written or SOCKET_ERROR on failure

Definition at line 1004 of file MDM.cpp.

int socketSendTo ( int  socket,
IP  ip,
int  port,
const char *  buf,
int  len 
)

Write socket data to a IP.

Parameters:
socketthe socket handle
ipthe ip to send to
portthe port to send to
bufthe buffer to write
lenthe size of the buffer to write
Returns:
the size written or SOCKET_ERROR on failure

Definition at line 1032 of file MDM.cpp.

bool socketSetBlocking ( int  socket,
int  timeout_ms 
)

Get the number of bytes pending for reading for this socket.

Parameters:
socketthe socket handle
timeout_ms-1 blocking, else non blocking timeout in ms
Returns:
0 if successful or SOCKET_ERROR on failure

Definition at line 955 of file MDM.cpp.

int socketSocket ( IpProtocol  ipproto,
int  port = -1 
)

Create a socket for a ip protocol (and optionaly bind)

Parameters:
ipprotothe protocol (UDP or TCP)
portin case of UDP, this optional port where it is bind
Returns:
the socket handle if successful or SOCKET_ERROR on failure

Definition at line 896 of file MDM.cpp.

virtual void unlock ( void   ) [protected, virtual]

override the unlock in a rtos system

Definition at line 509 of file MDM.h.

bool ussdCommand ( const char *  cmd,
char *  buf 
)

Read a Message from a storage position.

Parameters:
cmdthe ussd command to send e.g "*#06#"
bufa buffer where to save the reply
Returns:
true if successful, false otherwise

Definition at line 1296 of file MDM.cpp.

virtual void wait_ms ( int  ms ) [protected, virtual]

override in a rtos system, you us the wait function of a Thread

Parameters:
msthe number of milliseconds to wait

Definition at line 505 of file MDM.h.

int waitFinalResp ( int(*)(int type, const char *buf, int len, T *param)  cb,
T *  param,
int  timeout_ms = 10000 
)

template version of waitFinalResp when using callbacks, This template will allow the compiler to do type cheking but internally symply casts the arguments and call the (void*) version of waitFinalResp.

See also:
waitFinalResp

Definition at line 457 of file MDM.h.

int waitFinalResp ( _CALLBACKPTR  cb = NULL,
void *  param = NULL,
int  timeout_ms = 10000 
)

Wait for a final respons.

Parameters:
cbthe optional callback function
paramthe optional callback function parameter
timeout_msthe timeout to wait (See Estimated command response time of AT manual)

Definition at line 121 of file MDM.cpp.

int writeFile ( const char *  filename,
const char *  buf,
int  len 
)

Write some data to a file in the local file system.

Parameters:
filenamethe name of the file
bufthe data to write
lenthe size of the data to write
Returns:
the number of bytes written

Definition at line 1321 of file MDM.cpp.


Field Documentation

DevStatus _dev [protected]

collected device information

Definition at line 543 of file MDM.h.

IP _ip [protected]

assigned ip address

Definition at line 545 of file MDM.h.

NetStatus _net [protected]

collected network information

Definition at line 544 of file MDM.h.