Etherios Cloud Connector very first porting for mbed. Tested in an LPC1768

Etherios Cloud Connector for Embedded v2.1.0.3 library for mbed. Early porting.

This port is centered mainly in the platform code. So it should work properly with the provided examples of send_data, device_request, data_points, RCI and firmware_update (stub implementation, not a real one... yet ;-)). Filesystem is not implemented yet, and some examples might need changes.

To run, it needs the following libraries: - mbed - mbed-rtos - EthernetInterface

Find more information (and the source code!) about Etherios Cloud Connector for Embedded here: http://www.etherios.com/products/devicecloud/support/connector and in: http://www.etherios.com

Revision:
0:1c358ea10753
Child:
1:908afea5a49d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_platform/main.cpp	Tue Dec 03 13:34:02 2013 +0000
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2013 Digi International Inc.,
+ * All rights not expressly granted are reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
+ * =======================================================================
+ */
+
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "Threads.h"
+extern "C" {
+
+#include "connector_api.h"
+#include "ecc_platform.h"
+
+}
+
+static void connector_run_thread(void const * arg)
+{
+
+    APP_DEBUG("connector_run thread starts\n");
+
+    for (;;)
+    {
+        connector_status_t const status = connector_run((void *)arg);
+
+        APP_DEBUG("connector_run returns %d\n", status);
+
+        if (status != connector_open_error) break;
+    }
+
+
+    APP_DEBUG("connector_run thread exits\n");
+
+}
+
+static void application_run_thread(void const * arg)
+{
+    int status;
+
+    APP_DEBUG("application_run thread starts\n");
+
+    status = application_run((void *)arg);
+
+    APP_DEBUG("application_run thread exits %d\n", status);
+
+}
+
+int main (void)
+{
+    EthernetInterface interface;
+
+    connector_handle_t connector_handle;
+    
+    set_time(0);
+    printf("Starting Ethernet interface\n");
+    
+    interface.init();
+    interface.connect();
+    printf("IP Address is %s\n\r", interface.getIPAddress());
+    
+    APP_DEBUG("Start Cloud Connector for Embedded\n");
+    connector_handle = connector_init(app_connector_callback);
+
+    if (connector_handle != NULL)
+    {
+        ThreadList* my_threads=NULL; //List of all Initialized threads
+        ThreadList* connector_thread; //pointer to the last created ThreadList element
+        ThreadList* application_thread; //pointer to the last created ThreadList element
+        
+        APP_DEBUG("Initiating CC thread\n");
+        if(initThread(&my_threads,connector_run_thread, &connector_thread,2)==0)
+        {
+           APP_DEBUG("Thread creation failed. \n");
+          
+        }
+        else
+        {
+            //Start the thread and store the id
+            connector_thread->id=osThreadCreate(connector_thread->thread, connector_handle);
+        }
+        APP_DEBUG("Initiating application thread\n");
+        if(initThread(&my_threads,application_run_thread, &application_thread,2)==0)
+        {
+           APP_DEBUG("Thread creation failed. \n");
+          
+        }
+        else
+        {
+            //Start the thread and store the id
+            application_thread->id=osThreadCreate(application_thread->thread, connector_handle);
+        }
+    }
+    else
+    {
+        APP_DEBUG("Unable to initialize the connector\n");
+    }
+    
+    {
+        DigitalOut myled(LED1);
+        for(;;)
+        {
+            myled = 1;
+            wait(0.2);
+            myled = 0;
+            wait(0.2);
+        }
+    }
+
+    return 0;
+}
+