Library for inclusion of main.cpp -forked

Dependents:   df-2014-workshop-rfid-case-generator-k64f df-2014-rfid-case-gen-k64f-complete df-2014-rfid-case-gen-k64f-exercise

Fork of EndpointMain by Doug Anson

Revision:
0:8f99b3f2c3a8
Child:
1:8364052fbe84
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Sep 09 20:45:08 2014 +0000
@@ -0,0 +1,112 @@
+/* Copyright C2014 ARM, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files the "Software", to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+ 
+ // StatusReporter
+ #include "StatusReporter.h"
+
+ // appboard LCD Panel
+ #if _NXP_PLATFORM
+    #include "C12832_lcd.h"
+    C12832_LCD lcd;
+ #endif
+ #if _UBLOX_PLATFORM
+     #include "C12832.h"
+     C12832 lcd(D11, D13, D12, D7, D10);  
+ #endif
+ 
+ // our Serial port
+ #include "BufferedSerial.h"
+ BufferedSerial pc(USBTX, USBRX);
+ 
+ // Ethernet
+ #include "EthernetInterface.h"
+ EthernetInterface ethernet;
+ 
+ // HTTP 
+ #include "HTTPClient.h"
+ HTTPClient http;
+ 
+ // HARD RESET
+extern "C" void HardFault_Handler() { NVIC_SystemReset(); }
+
+ // Main Task...
+ void mainTask(void const *v) {
+    // create our object instances 
+#if _NXP_PLATFORM || _UBLOX_PLATFORM
+    ErrorHandler logger(&pc,&lcd);
+#endif
+#if _K64F_PLATFORM
+    ErrorHandler logger(&pc,NULL);
+#endif
+    
+    // announce
+    logger.log("ARM/DreamForce 2014 mbed Status Reporter v%s",APP_VERSION);
+    logger.turnLEDBlue();
+    
+    // initialize Ethernet
+    logger.log("Initializing Ethernet...");
+    ethernet.init();
+    
+    // get a DHCP address and bring the network interface up
+    logger.log("Getting IP Address...");
+    logger.turnLEDOrange();
+    if (ethernet.connect() == 0) {
+        // log our IP address (DHCP)
+        logger.log("IP Address: %s",ethernet.getIPAddress());
+        
+        // create the StatusReporter
+        StatusReporter status_reporter(&logger,(void *)&http);
+        
+        // entering main loop
+        logger.log("Entering Main Loop...\r\nScanning...");
+        logger.turnLEDGreen();
+        
+        // Enter the main loop
+        while(true) {
+             // check and report on status updates
+             status_reporter.checkAndReportOnStatus();
+          }
+     }
+     else {
+         logger.log("No Network... Exiting...");
+         logger.turnLEDRed();
+         exit(1);
+     }
+     
+     // disconnect
+     logger.log("Disconnecting...");
+     logger.turnLEDOrange();
+     ethernet.disconnect();
+     
+     // Exit
+     logger.log("Exiting...");
+     logger.turnLEDBlue();
+     exit(1);
+  }
+  
+  // main entry
+  int main() {
+  #if _K64F_PLATFORM
+    Thread workerTask(mainTask, NULL, osPriorityNormal, STACK_SIZE);
+    while (true) {
+        Thread::wait(10*WAIT_TIME_MS);
+    }
+  #else
+    mainTask(NULL);
+  #endif
+  }
\ No newline at end of file