An application to log WiFi SSIDs for position lookup testing

Dependencies:   C027_Support SWO mbed-rtos mbed picojson

Fork of lpc4088_ebb_ublox_Cellular_PubNubDemo_rtos by EmbeddedArtists AB

Revision:
1:cac9b2960637
Parent:
0:713518ea5028
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Feb 15 22:04:12 2015 +0000
@@ -0,0 +1,130 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "MDM.h"
+#include "GPS.h"
+#include "DeviceInfo.h"
+#include "DeviceMemory.h"
+#include "MbedAgent.h"
+#include "GPSTracker.h"
+#include "DeviceConfiguration.h"
+
+#include <stdio.h>
+
+// ----------------------------------------------------------------
+// Cellular modem / SIM parameters
+// ----------------------------------------------------------------
+#include "MDM.h"
+#define SIMPIN      NULL                    //!< Set your secret SIM pin here (e.g. "1234"). Check your SIM manual.
+#define APN         "internet"              //!< The APN of your network operator SIM, sometimes it is "internet"
+#define USERNAME    NULL                    //!< Set the user name for your APN, or NULL if not needed
+#define PASSWORD    NULL                    //!< Set the password for your APN, or NULL if not needed
+
+// ----------------------------------------------------------------
+// PubNub Config
+// ----------------------------------------------------------------
+//#include "PubNub.h"
+//const char pubkey[] = "pub-c-e3a95948-182a-46fd-b5f3-52c184eb3c12";
+//const char subkey[] = "sub-c-0313f6b2-b2c0-11e4-ab0e-02ee2ddab7fe";
+//const char channel[] = "mbed";
+//const char channel_pub[] = "mbed_data";
+//const char channel_sub[] = "mbed_cmd";
+
+int main()
+{
+    MDMParser::DevStatus devStatus;
+    uint8_t status = 0;
+
+    MDMRtos<MDMSerial> mdm;
+    GPSI2C gps;
+    
+    //mdm.setDebug(4);
+
+    if (!mdm.init(SIMPIN, &devStatus))
+        status = 1;
+    else if (!gps.init())
+        status = 2;
+    
+    DeviceIO io(gps);
+
+    /** For debugging, you may find it useful to print memory usage
+     * stats. AvailableMemory may be flaky, but the following is nice.
+     * It will get printed to the USB serial port interface. 
+     */
+    //io.debugPrint("%d: ", __LINE__); __heapstats((__heapprt)fprintf, stdout);
+    
+    io.debugPrint("\r\nWiFi Scanner build " __DATE__ " " __TIME__ "\r\n");
+    //io.debugPrint("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);  
+    
+    switch (status) {
+    case 1:
+        io.debugPrint("MODEM INIT FAILURE. CHECK SIM");
+        break;
+    case 2:
+        io.debugPrint("GPS INIT FAILURE");
+        break;
+    }
+    
+    if (status != 0)
+        goto error;
+    
+    io.debugPrint("DEVICE INIT");
+    
+    //io.debugPrint("REGISTER NETWORK. IMEI: %s", devStatus.imei);
+
+    if (!mdm.registerNet()) {
+        io.debugPrint("NETWORK REG ERROR");
+        goto error;
+    }
+
+    io.debugPrint("JOIN NETWORK");
+#ifdef SIM_APN
+    if (mdm.join(SIM_APN, SIM_USER, SIM_PASS) == NOIP) {
+#else
+    if (mdm.join() == NOIP) {
+#endif
+        io.debugPrint("NETWORK JOIN FAILURE");
+        goto error;
+    }
+    
+    {
+        uint8_t tries;
+        DeviceInfo deviceInfo(mdm, devStatus);
+        DeviceMemory deviceMemory(mdm);
+        
+        if (io.userButtonPressed()) {
+            if (deviceMemory.resetConfiguration())
+                io.deviceFeedback().showSuccess();
+            else
+                io.deviceFeedback().showFailure();
+            Thread::wait(1000);
+            return 0;
+        }
+
+        MbedAgent agent(io, mdm, deviceInfo, deviceMemory);
+    
+        io.debugPrint("AGENT INIT");
+        if (!agent.init()) {
+            io.debugPrint("AGENT INIT FAILURE");
+            goto error;
+        }
+        
+        tries = 3;
+        do {
+            io.debugPrint("AGENT RUN");
+            if (agent.run())
+                break;
+        } while (--tries > 0);
+
+        if (tries == 0) {
+            io.debugPrint("AGENT RUN FAILURE");
+            goto error;
+        }
+    }
+    
+    mdm.disconnect();
+    return 0;
+
+error:
+    mdm.disconnect();
+    return 1;
+}