Update to work with latest mBed

Dependencies:   mbed-dev

Fork of FONA_CellPhone by Dream Team

Files at this revision

API Documentation at this revision

Comitter:
George windoge T
Date:
Mon Mar 28 12:20:13 2016 -0400
Parent:
12:a40669ca217a
Parent:
10:9dd3e49dec97
Child:
14:0c0bbca5ac26
Commit message:
GT: Changed file extension

Changed in this revision

--- a/Adafruit_FONA.cpp	Mon Mar 28 12:18:56 2016 -0400
+++ b/Adafruit_FONA.cpp	Mon Mar 28 12:20:13 2016 -0400
@@ -16,7 +16,7 @@
  ****************************************************/
  
  /*
-  *  Modified by Marc PLOUHINEC 27/06/2015 for use in mbed
+  *  Modified by George Tzintzarov & Jesse Baker 03/14/2016 for use in mbed LPC1768
   */
 #include <algorithm>
 #include "Adafruit_FONA.h"
@@ -30,6 +30,7 @@
 
 */
 
+
 bool Adafruit_FONA::begin(int baudrate) {
     mySerial.baud(baudrate); //set the baud rate of the fona serial connection
     mySerial.attach(this, &Adafruit_FONA::onSerialDataReceived, Serial::RxIrq); //attached onSerialDataReceived as Serial receive interrupt
--- a/Adafruit_FONA.h	Mon Mar 28 12:18:56 2016 -0400
+++ b/Adafruit_FONA.h	Mon Mar 28 12:20:13 2016 -0400
@@ -16,7 +16,7 @@
  ****************************************************/
  
  /*
-  *  Modified by Marc PLOUHINEC 27/06/2015 for use in mbed
+  *  Modified by George Tzintzarov & Jesse Baker 03/14/2016 for use in mbed LPC1768
   */
  
 #ifndef ADAFRUIT_FONA_H
@@ -51,11 +51,36 @@
 
 #define RX_BUFFER_SIZE  255
 
+/** Adafruit FONA 800H Class
+*  Modified by George Tzintzarov & Jesse Baker 03/14/2016 for use in mbed LPC1768
+*/
+
 class Adafruit_FONA : public Stream {
     public:
-        /**
-         * Listener for FONA events.
-         */
+/**
+Listener for FONA events. Inherit this class to customize.
+@code
+#define FONA_RST p12
+#define FONA_TX p13
+#define FONA_RX p14
+#define FONA_RI p11
+
+Adafruit_FONA my_fona(FONA_TX, FONA_RX, FONA_RST, FONA_RI);
+DigitalOut led1(LED1); 
+class FonaEventListener : public Adafruit_FONA::EventListener {
+    virtual void onRing() {
+        led1 = 1;
+}
+
+    virtual void onNoCarrier() {
+        led1 = 0; 
+    }
+};
+FonaEventListener fonaEventListener;
+my_fona.setEventListener(&fonaEventListener);
+@endcode
+*/
+        
         class EventListener {
             public:
                 /**
@@ -70,37 +95,178 @@
         };
     
     public:
+        /** Create instance of the Adafruit_FONA
+        @param tx Set mbed TX 
+        @param rx Set mbed RX
+        @param rst Set reset pin
+        @param ringIndicator Set ring indicator pin. This is to let mbed know if there is an incoming call
+        */
+        
         Adafruit_FONA(PinName tx, PinName rx, PinName rst, PinName ringIndicator) :
             _rstpin(rst, false), _ringIndicatorInterruptIn(ringIndicator),
             apn("FONAnet"), apnusername(NULL), apnpassword(NULL), httpsredirect(false), useragent("FONA"),
             _incomingCall(false), eventListener(NULL), mySerial(tx, rx), rxBufferInIndex(0), rxBufferOutIndex(0), 
             currentReceivedLineSize(0) {}
+            
+        /** Built-in Test to see if FONA is connected
+        @param baudrate test and set at baudrate
+        @return true upon success
+        @return false upon failure. Most likely something is not hooked up.
+        
+EXAMPLE CODE:
+        @code
+// See if the FONA is responding
+// fona is an instance of Adafruit_FONA
+if (! fona.begin(9600)) {
+    printf("Couldn't find FONA\r\n");
+    while (1);
+}
+        @endcode
+        */
         bool begin(int baudrate);
+        
+        /** Set the event listener for incoming calls
+        @param eventListener A pointer to the event listener
+        @see Adafruit_FONA::EventListener for specific example
+        */
+        
         void setEventListener(EventListener *eventListener);
         
-        // Stream
+        // Stream----------------------------------------------------------------------
         virtual int _putc(int value);
         virtual int _getc();
-        int readable();
         
-        // RTC
+        /** Check if FONA has anything in its output buffer
+        @return 0 if nothing
+        */
+        int readable(void);
+        
+        // RTC----------------------------------------------------------------------
         bool enableRTC(uint8_t i); // i = 0 <=> disable, i = 1 <=> enable
         
-        // Battery and ADC
+        // Battery and ADC----------------------------------------------------------------------
+        /** Get ADC voltage from external pin
+        @param v uint16_t pointer to insert ADC voltage data
+        @return TRUE if successful
+        
+EXAMPLE CODE:
+        @code
+// read the ADC
+// fona is an instance of Adafruit_FONA
+uint16_t adc;
+if (! fona.getADCVoltage(&adc)) {
+    printf("Failed to read ADC\r\n");
+} 
+else {
+    printf("ADC = %d mV\r\n", adc);
+}
+        @endcode
+        */
         bool getADCVoltage(uint16_t *v);
+        
+        /** Get battery percentage level
+        @param p uint16_t pointer to insert battery percent data
+        @return TRUE if successful
+        
+EXAMPLE CODE:
+        @code
+// read the battery percent level
+// fona is an instance of Adafruit_FONA
+uint16_t vbatPer;
+if (! fona.getBattPercent(&vbatPer)) {
+    printf("Failed to read Batt\r\n");
+} 
+else {
+    printf("VPct = %d%%\r\n", vbatPer);
+}
+        @endcode
+        */
+        
         bool getBattPercent(uint16_t *p);
+        
+        /** Get battery voltage level
+        @param v uint16_t pointer to insert battery voltage data
+        @return TRUE if successful
+        
+EXAMPLE CODE:
+        @code
+// read the battery voltage
+// fona is an instance of Adafruit_FONA
+uint16_t vbat;
+if (! fona.getBattPercent(&vbat)) {
+    printf("Failed to read Batt\r\n");
+} 
+else {
+    printf("Vbat = %d%%\r\n", vbat);
+}
+        @endcode
+        */
         bool getBattVoltage(uint16_t *v);
         
-        // SIM query
+        // SIM query----------------------------------------------------------------------
+        /** Unlock SIM if needed
+        @param pin 4 digit char arrary
+        @return TRUE if successful
+        */        
         bool unlockSIM(char *pin);
+        /** Get the SIM chip card interface device (CCID)
+        @param ccid make sure it is at least 21 bytes long
+        @return length of CCID
+        */
+        
         uint8_t getSIMCCID(char *ccid);
+        /** Get the Network Status of FONA
+        @return Code 0-5 
+        @see https://www.adafruit.com/datasheets/sim800_series_at_command_manual_v1.01.pdf page 80
+        */
         uint8_t getNetworkStatus(void);
+        
+        /** Get the RSSI of the network signal
+        @return RSSI value in dBm per below reference
+        
+        EXAMPLE
+        @code
+// read the RSSI
+uint8_t n = fona.getRSSI();
+int8_t r = 0;
+
+pcSerial.printf("RSSI = %d: ", n);
+if (n == 0) r = -115;
+if (n == 1) r = -111;
+if (n == 31) r = -52;
+if ((n >= 2) && (n <= 30)) {
+    r = map(n, 2, 30, -110, -54);
+}
+printf("%d dBm\r\n", r);
+
+// helper function MAP to do calculations
+long MAP(long x, long in_min, long in_max, long out_min, long out_max)
+{
+    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+}
+        @endcode
+        @see https://www.adafruit.com/datasheets/sim800_series_at_command_manual_v1.01.pdf page 82
+        */
         uint8_t getRSSI(void);
         
-        // IMEI
+        // IMEI----------------------------------------------------------------------
+        /** Get the International Mobile Station Equipment Identity (IMEI)
+        @param imei A char array with minimum length 16
+        @return The IMEI of the device
+        
+EXAMPLE CODE:
+        @code
+// Print SIM card IMEI number.
+char imei[15] = {0}; // MUST use a 16 character buffer for IMEI!
+uint8_t imeiLen = fona.getIMEI(imei); //fona is an instance of Adafruit_FONA
+if (imeiLen > 0) {
+    pcSerial.printf("SIM card IMEI: %s\r\n", imei);
+}
+        @endcode
+        */
         uint8_t getIMEI(char *imei);
         
-        // set Audio output
+        // set Audio output----------------------------------------------------------------------
         bool setAudio(uint8_t a);
         bool setVolume(uint8_t i);
         uint8_t getVolume(void);
@@ -108,14 +274,14 @@
         bool setMicVolume(uint8_t a, uint8_t level);
         bool playDTMF(char tone);
         
-        // FM radio functions
+        // FM radio functions----------------------------------------------------------------------
         bool tuneFMradio(uint16_t station);
         bool FMradio(bool onoff, uint8_t a = FONA_HEADSETAUDIO);
         bool setFMVolume(uint8_t i);
         int8_t getFMVolume();
         int8_t getFMSignalLevel(uint16_t station);
         
-        // SMS handling
+        // SMS handling----------------------------------------------------------------------
         bool setSMSInterrupt(uint8_t i);
         uint8_t getSMSInterrupt(void);
         int8_t getNumSMS(void);
@@ -124,26 +290,26 @@
         bool deleteSMS(uint8_t i);
         bool getSMSSender(uint8_t i, char *sender, int senderlen);
         
-        // Time
+        // Time----------------------------------------------------------------------
         bool enableNetworkTimeSync(bool onoff);
         bool enableNTPTimeSync(bool onoff, const char* ntpserver=0);
         bool getTime(char* buff, uint16_t maxlen);
         
-        // GPRS handling
+        // GPRS handling----------------------------------------------------------------------
         bool enableGPRS(bool onoff);
         uint8_t GPRSstate(void);
         bool getGSMLoc(uint16_t *replycode, char *buff, uint16_t maxlen);
         bool getGSMLoc(float *lat, float *lon);
         void setGPRSNetworkSettings(const char* apn, const char* username=0, const char* password=0);
 
-        // GPS handling
+        // GPS handling----------------------------------------------------------------------
         bool enableGPS(bool onoff);
         int8_t GPSstatus(void);
         uint8_t getGPS(uint8_t arg, char *buffer, uint8_t maxbuff);
         bool getGPS(float *lat, float *lon, float *speed_kph=0, float *heading=0, float *altitude=0);
         bool enableGPSNMEA(uint8_t nmea);
         
-        // TCP raw connections
+        // TCP raw connections----------------------------------------------------------------------
         bool TCPconnect(char *server, uint16_t port);
         bool TCPclose(void);
         bool TCPconnected(void);
@@ -151,7 +317,7 @@
         uint16_t TCPavailable(void);
         uint16_t TCPread(uint8_t *buff, uint8_t len);
         
-        // HTTP low level interface (maps directly to SIM800 commands).
+        // HTTP low level interface (maps directly to SIM800 commands).----------------------------------------------------------------------
         bool HTTP_init();
         bool HTTP_term();
         void HTTP_para_start(const char* parameter, bool quoted = true);
@@ -163,20 +329,20 @@
         bool HTTP_readall(uint16_t *datalen);
         bool HTTP_ssl(bool onoff);
         
-        // HTTP high level interface (easier to use, less flexible).
+        // HTTP high level interface (easier to use, less flexible).----------------------------------------------------------------------
         bool HTTP_GET_start(char *url, uint16_t *status, uint16_t *datalen);
         void HTTP_GET_end(void);
         bool HTTP_POST_start(char *url, const char* contenttype, const uint8_t *postdata, uint16_t postdatalen, uint16_t *status, uint16_t *datalen);
         void HTTP_POST_end(void);
         void setUserAgent(const char* useragent);
         
-        // HTTPS
+        // HTTPS----------------------------------------------------------------------
         void setHTTPSRedirect(bool onoff);
         
-        // PWM (buzzer)
+        // PWM (buzzer)----------------------------------------------------------------------
         bool setPWM(uint16_t period, uint8_t duty = 50);
         
-        // Phone calls
+        // Phone calls----------------------------------------------------------------------
         bool callPhone(char *phonenum);
         bool hangUp(void);
         bool pickUp(void);