set led to common anode

Dependencies:   C12832_lcd EthernetInterface LM75B MMA7660 libxively mbed-rtos mbed

Fork of xively-dreamforce by Ilya Dmitrichenko

Files at this revision

API Documentation at this revision

Comitter:
errordeveloper
Date:
Fri Nov 08 16:44:46 2013 +0000
Parent:
11:bdf601a405fc
Commit message:
First prototype

Changed in this revision

C12832_lcd.lib Show diff for this revision Revisions of this file
EthernetInterface.lib Show diff for this revision Revisions of this file
LM75B.lib Show diff for this revision Revisions of this file
MMA7660.lib Show diff for this revision Revisions of this file
UbloxUSBModem.lib Show annotated file Show diff for this revision Revisions of this file
app_board_io.cpp Show diff for this revision Revisions of this file
app_board_io.h Show diff for this revision Revisions of this file
cellular_board_io.cpp Show annotated file Show diff for this revision Revisions of this file
cellular_board_io.h Show annotated file Show diff for this revision Revisions of this file
logo.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show diff for this revision Revisions of this file
xi_user_config.h Show annotated file Show diff for this revision Revisions of this file
--- a/C12832_lcd.lib	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://mbed.org/users/dreschpe/code/C12832_lcd/#c9afe58d786a
--- a/EthernetInterface.lib	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/EthernetInterface/#cba86db5ab96
--- a/LM75B.lib	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/chris/code/LM75B/#6a70c9303bbe
--- a/MMA7660.lib	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/Sissors/code/MMA7660/#a8e20db7901e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UbloxUSBModem.lib	Fri Nov 08 16:44:46 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/UbloxUSBModem/#6e9d98f8c237
--- a/app_board_io.cpp	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#include "app_board_io.h"
-#include "C12832_lcd.h"
-
-extern C12832_LCD lcd;
-
-extern "C" void lcd_printf( const char* fmt, ...  )
-{
-    char buffer[ 64 ];
-    
-    va_list ap;
-    va_start( ap, fmt );
-    vsnprintf( buffer, 64, fmt, ap );
-    va_end( ap );
-    
-    lcd.cls();
-    lcd.locate( 0, 3 );
-    lcd.printf( buffer );
-    //wait( 1.0 );
-}
\ No newline at end of file
--- a/app_board_io.h	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-#include <stdarg.h>
-#include <stdio.h>
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void lcd_printf( const char* fmt, ...  );
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cellular_board_io.cpp	Fri Nov 08 16:44:46 2013 +0000
@@ -0,0 +1,1 @@
+#include "cellular_board_io.h"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cellular_board_io.h	Fri Nov 08 16:44:46 2013 +0000
@@ -0,0 +1,2 @@
+#include <stdarg.h>
+#include <stdio.h>
\ No newline at end of file
--- a/logo.h	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-static char xively_logo_data[] = {
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x1c, 0x0,
-  0x0,   0x0,   0x0,   0xe0,  0x0,   0x0,   0x0,  0x0,
-  0x3e,  0x0,   0x0,   0x0,   0x0,   0xf0,  0x0,  0x0,
-  0x0,   0x0,   0x3e,  0x0,   0x0,   0x0,   0x0,  0xf0,
-  0x0,   0x0,   0x0,   0x0,   0x1c,  0x0,   0x0,  0x0,
-  0x0,   0xf0,  0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0xf0,  0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0xf0,  0x0,  0x0,
-  0x10,  0x0,   0x0,   0x0,   0x0,   0xf,   0xc0, 0xf0,
-  0x0,   0x0,   0x1e,  0x7,   0x9c,  0xf0,  0x1e, 0x3f,
-  0xf0,  0xf7,  0x80,  0x78,  0xf,   0xf,   0x1c, 0xf0,
-  0x1e,  0x7f,  0xf8,  0xf7,  0x80,  0xf0,  0x7,  0x9e,
-  0x1c,  0xf0,  0x1e,  0xf8,  0x78,  0xf3,  0xc0, 0xf0,
-  0x7,   0x9e,  0x1c,  0x78,  0x3c,  0xf0,  0x3c, 0xf3,
-  0xc0,  0xe0,  0x3,   0xfc,  0x1c,  0x78,  0x3d, 0xe0,
-  0x1c,  0xf3,  0xc1,  0xe0,  0x1,   0xf8,  0x1c, 0x38,
-  0x39,  0xe0,  0x1c,  0xf1,  0xe1,  0xe0,  0x1,  0xf8,
-  0x1c,  0x3c,  0x79,  0xff,  0xfe,  0xf1,  0xe3, 0xc0,
-  0x1,   0xf8,  0x1c,  0x3c,  0x79,  0xff,  0xfe, 0xf0,
-  0xe3,  0xc0,  0x1,   0xf8,  0x1c,  0x1e,  0xf1, 0xe0,
-  0x0,   0xf0,  0xf3,  0x80,  0x3,   0xfc,  0x1c, 0x1e,
-  0xf1,  0xe0,  0x0,   0xf0,  0x77,  0x80,  0x7,  0x9e,
-  0x1c,  0xf,   0xe0,  0xf0,  0x0,   0xf0,  0x7f, 0x80,
-  0x7,   0x8f,  0x1c,  0xf,   0xe0,  0xf8,  0x10, 0xf0,
-  0x7f,  0x0,   0xf,   0xf,   0x1c,  0xf,   0xe0, 0x7f,
-  0xf8,  0xf0,  0x3f,  0x0,   0x1e,  0x7,   0x9c, 0x7,
-  0xc0,  0x3f,  0xf8,  0xf0,  0x3e,  0x0,   0x3e, 0x3,
-  0xdc,  0x7,   0xc0,  0x1f,  0xe0,  0xf0,  0x1e, 0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x1e,  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x3c,  0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x3c,  0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x1,   0xf8, 0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x1,
-  0xf8,  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x1,   0xf0,  0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0,
-  0x0,   0x0,   0x0,   0x0,   0x0,   0x0,   0x0,  0x0
-};
-
-inline void lcd_print_xively_logo() {
-  static Bitmap xively_logo = { 80, 32, 10, xively_logo_data };
-  lcd.cls();
-  lcd.print_bm(xively_logo, 24, 0);
-  lcd.copy_to_lcd();  
-  for(int i = -32; i < 32; i++){ 
-    lcd.cls();
-    lcd.print_bm(xively_logo, 24, i);
-    lcd.copy_to_lcd(); 
-    wait(0.1);
-  }
-}
\ No newline at end of file
--- a/main.cpp	Mon Oct 14 13:33:04 2013 +0000
+++ b/main.cpp	Fri Nov 08 16:44:46 2013 +0000
@@ -1,68 +1,54 @@
 #include "mbed.h"
-#include "EthernetInterface.h"
 
-#define XI_FEED_ID 128488 // set Xively Feed ID (numerical, no quoutes)
-#define XI_API_KEY "T4KXAH_dasgw1PWBPc3fdsfsdgsdy-dUc4ND0g" // set Xively API key (double-quoted string)
+#include "UbloxUSBCDMAModem.h"
+#include "UbloxUSBGSMModem.h"
+#define MODEM_UBLOX_CDMA // remove this if you are using GSM
 
-#include "app_board_io.h"
+#define XI_FEED_ID 248 // set Xively Feed ID (numerical, no quoutes)
+#define XI_API_KEY "T4KXAH_dasgw1PWBsfsdgy-dUc4ND0g" // set Xively API key (double-quoted string)
+
+#include "cellular_board_io.h"
 
 #include "xively.h"
 #include "xi_err.h"
 
-#include "MMA7660.h"
-#include "LM75B.h"
-#include "C12832_lcd.h"
-
-MMA7660 axl(p28, p27);
-LM75B tmp(p28, p27);
-C12832_LCD lcd;
+int main() {
 
-#include "logo.h"
+//TODO: maybe move these into board_io files and do it for app board ethernet version too...
+#ifdef MODEM_UBLOX_CDMA
+    UbloxUSBCDMAModem modem(p18, true, 1);
+#else
+    UbloxUSBGSMModem modem;
+#endif
 
-int main() {
-    lcd_print_xively_logo();
-    EthernetInterface eth;
-    
-    int s = eth.init(); //Use DHCP
+    modem.power(true);
+    Thread::wait(1000);
+
+    int s = modem.connect(NULL, NULL, "internet");
     
-    if( s != NULL )
+    if( s )
     {
-        lcd_printf( "Could not initialise. Will halt!\n" );        
+        printf( "Could not connect to the Internet. Will halt!\r\n" );
         exit( 0 );
-    }    
-        
-    s = eth.connect();
-    
-    if( s != NULL )
-    {
-        lcd_printf( "Could not connect. Will halt!\n" );
-        exit( 0 );
-    }
-    else 
-    {
-        lcd_printf( "IP: %s\n", eth.getIPAddress() );    
     }
     
     xi_feed_t feed;
     memset( &feed, NULL, sizeof( xi_feed_t ) );
     
     feed.feed_id = XI_FEED_ID;
-    feed.datastream_count = 3;
+    feed.datastream_count = 1;
     
     feed.datastreams[0].datapoint_count = 1;
-    xi_datastream_t* orientation_datastream = &feed.datastreams[0];
-    strcpy( orientation_datastream->datastream_id, "orientation" );
-    xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
+    xi_datastream_t* counter_datastream = &feed.datastreams[0];
+    strcpy( counter_datastream->datastream_id, "counter" ); 
+    xi_datapoint_t* counter = &counter_datastream->datapoints[0];
 
-    feed.datastreams[1].datapoint_count = 1;
-    xi_datastream_t* side_rotation_datastream = &feed.datastreams[1];
-    strcpy( side_rotation_datastream->datastream_id, "side_rotation" );
-    xi_datapoint_t* current_side_rotation = &side_rotation_datastream->datapoints[0];
-    
-    feed.datastreams[2].datapoint_count = 1;
-    xi_datastream_t* temperature_datastream = &feed.datastreams[2];
-    strcpy( temperature_datastream->datastream_id, "temperature" );
-    xi_datapoint_t* current_temperature = &temperature_datastream->datapoints[0];
+    //TODO:
+    //- figure out how got send `AT$DEBUG?` command and parse it's ouput which looks like:
+    // $DEBUG: 4183,233,100,1,99,-9,-105,2,2,2,93,261,429,186,249,438,21,63,63,63,63,63
+    // For details see docs: http://www.u-blox.com/images/downloads/Product_Docs/LISAC200-FW75C200_ATCommandsManual_%28CDMA-2X-11002%29.pdf)
+    // Some of these values represent varios interesting things, e.g. RSSI.
+    // We should put some of those into separate Xively datastreams...
     
     // create the cosm library context
     xi_context_t* xi_context
@@ -73,45 +59,15 @@
     {
         return -1;
     }
-
+    long unsigned int c = 0; 
     while(1) {
       
-      switch( axl.getSide() ) {
-        case MMA7660::Front:
-          xi_set_value_str( current_side_rotation, "front" );
-          break;
-        case MMA7660::Back:
-          xi_set_value_str( current_side_rotation, "back" );
-          break;
-        default:
-          xi_set_value_str( current_side_rotation, "unknown" );
-          break;
-      }
+      xi_set_value_i32( counter, ++c );
+        
+      printf( "Updating Xively feed %d...\r\n", XI_FEED_ID );
+      xi_feed_update( xi_context, &feed );
+      printf( "   done!\r\n" ); //TODO: add error check, as cellular can be flaky.
       
-      switch( axl.getOrientation() ) {
-        case MMA7660::Down:
-          xi_set_value_str( current_orientation, "down" );
-          break;
-        case MMA7660::Up:
-           xi_set_value_str( current_orientation, "up" );
-           break;
-        case MMA7660::Right:
-          xi_set_value_str( current_orientation, "right" );
-          break;
-        case MMA7660::Left:
-          xi_set_value_str( current_orientation, "left" );
-          break;
-        default: 
-          xi_set_value_str( current_orientation, "unknown" );
-          break;
-      }
-      
-      xi_set_value_f32( current_temperature, tmp.read() );
-        
-      lcd_printf( "update...\n" );
-      xi_feed_update( xi_context, &feed );
-      lcd_printf( "done...\n" );
-      
-      wait( 15.0 );
+      wait( 50.0 );
     }
 }
--- a/mbed-rtos.lib	Mon Oct 14 13:33:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#ee87e782d34f
--- a/xi_user_config.h	Mon Oct 14 13:33:04 2013 +0000
+++ b/xi_user_config.h	Fri Nov 08 16:44:46 2013 +0000
@@ -18,7 +18,7 @@
 
 // On the mbed app board we can use the LCD for debug output,
 // but one may wish to modify this and write to file instead
-#include "app_board_io.h"
-#define XI_DEBUG_PRINTF lcd_printf
+#include "cellular_board_io.h"
+#define XI_DEBUG_PRINTF printf
 
 #endif /* __XI_USER_CONFIG_H__ */