A library for the SIM900 module to enable calling, answering, sending and receiving SMS messages
Dependents: Seeed_GPRS_Shield_GSM BluetoothNONIN HealthCare_Graduation
Fork of GSM by
GSM.h
- Committer:
- screamer
- Date:
- 2014-05-13
- Revision:
- 10:24671d8aa0c9
- Parent:
- GPRS.h@ 9:2f5445178940
File content as of revision 10:24671d8aa0c9:
/*
GSM.h
2013 Copyright (c) Seeed Technology Inc. All right reserved.
Author:lawliet.zou@gmail.com
2013-11-14
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __GSM_H__
#define __GSM_H__
#include <stdio.h>
#include "mbed.h"
#define DEFAULT_TIMEOUT 5
#define SMS_MAX_LENGTH 16
enum GSM_MESSAGE {
MESSAGE_RING = 0,
MESSAGE_SMS = 1,
MESSAGE_ERROR
};
/** GSM class.
* Used for mobile communication. attention that GSM module communicate with MCU in serial protocol
*/
class GSM
{
public:
/** Create GSM instance
* @param tx uart transmit pin to communicate with GSM module
* @param rx uart receive pin to communicate with GSM module
* @param baudRate baud rate of uart communication
* @param number default phone number during mobile communication
*/
GSM(PinName tx, PinName rx, int baudRate,char *number) : gprsSerial(tx, rx) {
//gprsSerial.baud(baudRate);
phoneNumber = number;
};
int powerCheck(void);
/** init GSM module including SIM card check & signal strength & network check
* @returns
* 0 on success,
* -1 on error
*/
int init(void);
/** Check SIM card' Status
* @returns
* 0 on success,
* -1 on error
*/
int checkSIMStatus(void);
/** Check signal strength
* @returns
* signal strength in number(ex 3,4,5,6,7,8...) on success,
* -1 on error
*/
int checkSignalStrength(void);
/** Set SMS format and processing mode
* @returns
* 0 on success,
* -1 on error
*/
int settingSMS(void);
/** Send text SMS
* @param *number phone number which SMS will be send to
* @param *data message that will be send to
* @returns
* 0 on success,
* -1 on error
*/
int sendSMS(char *number, char *data);
/** Read SMS by index
* @param *message buffer used to get SMS message
* @param index which SMS message to read
* @returns
* 0 on success,
* -1 on error
*/
int readSMS(char *message, int index);
/** Delete SMS message on SIM card
* @param *index the index number which SMS message will be delete
* @returns
* 0 on success,
* -1 on error
*/
int deleteSMS(int index);
/** Read SMS when coming a message,it will be store in messageBuffer.
* @param message buffer used to get SMS message
*/
int getSMS(char* message);
/** Call someone
* @param *number the phone number which you want to call
* @returns
* 0 on success,
* -1 on error
*/
int callUp(char *number);
/** Auto answer if coming a call
* @returns
* 0 on success,
* -1 on error
*/
int answer(void);
/** A loop to wait for some event. if a call comes in, it will auto answer it and if a SMS message comes in, it will read the message
* @param *check whether to check phone number when get event
* @returns
* 0 on success,
* -1 on error
*/
int loopHandle(void);
/** GSM network init
* @param *apn Access Point Name to connect network
* @param *userName general is empty
* @param *passWord general is empty
*/
int networkInit(char* apn, char* userName = NULL, char* passWord = NULL);
/** Build TCP connect
* @param *ip ip address which will connect to
* @param *port TCP server' port number
* @returns
* 0 on success,
* -1 on error
*/
int connectTCP(char *ip, char *port);
/** Send data to TCP server
* @param *data data that will be send to TCP server
* @returns
* 0 on success,
* -1 on error
*/
int sendTCPData(char *data);
/** Close TCP connection
* @returns
* 0 on success,
* -1 on error
*/
int closeTCP(void);
/** Close TCP service
* @returns
* 0 on success,
* -1 on error
*/
int shutTCP(void);
Serial gprsSerial;
//USBSerial pc;
private:
/** Read from GSM module and save to buffer array
* @param *buffer buffer array to save what read from GSM module
* @param *count the maximal bytes number read from GSM module
* @returns
* 0 on success,
* -1 on error
*/
int readBuffer(char *buffer,int count);
/** Send AT command to GSM module
* @param *cmd command array which will be send to GSM module
*/
void sendCmd(char *cmd);
/** Check GSM module response before timeout
* @param *resp correct response which GSM module will return
* @param *timeout waiting seconds till timeout
* @returns
* 0 on success,
* -1 on error
*/
int waitForResp(char *resp, int timeout);
/** Send AT command to GSM module and wait for correct response
* @param *cmd AT command which will be send to GSM module
* @param *resp correct response which GSM module will return
* @param *timeout waiting seconds till timeout
* @returns
* 0 on success,
* -1 on error
*/
int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout);
Timer timeCnt;
char *phoneNumber;
char messageBuffer[SMS_MAX_LENGTH];
};
#endif
