Development version of xively-jumpstart-demo

Dependencies:   C12832_lcd EthernetInterface LM75B MMA7660 libxively-develop mbed-rtos mbed

Fork of xively-jumpstart-demo by Xively Official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003 
00004 #define XI_FEED_ID 128488 // set Xively Feed ID (numerical, no quoutes)
00005 #define XI_API_KEY "T4KXAH_dasgw1PWBPc3fdsfsdgsdy-dUc4ND0g" // set Xively API key (double-quoted string)
00006 
00007 #include "app_board_io.h"
00008 
00009 #include "xively.h"
00010 #include "xi_err.h"
00011 
00012 #include "MMA7660.h"
00013 #include "LM75B.h"
00014 #include "C12832_lcd.h"
00015 
00016 MMA7660 axl(p28, p27);
00017 LM75B tmp(p28, p27);
00018 C12832_LCD lcd;
00019 
00020 #include "logo.h"
00021 
00022 int main() {
00023     lcd_print_xively_logo();
00024     EthernetInterface eth;
00025     
00026     int s = eth.init(); //Use DHCP
00027     
00028     if( s != NULL )
00029     {
00030         lcd_printf( "Could not initialise. Will halt!\n" );        
00031         exit( 0 );
00032     }    
00033         
00034     s = eth.connect();
00035     
00036     if( s != NULL )
00037     {
00038         lcd_printf( "Could not connect. Will halt!\n" );
00039         exit( 0 );
00040     }
00041     else 
00042     {
00043         lcd_printf( "IP: %s\n", eth.getIPAddress() );    
00044     }
00045     
00046     xi_feed_t feed;
00047     memset( &feed, NULL, sizeof( xi_feed_t ) );
00048     
00049     feed.feed_id = XI_FEED_ID;
00050     feed.datastream_count = 3;
00051     
00052     feed.datastreams[0].datapoint_count = 1;
00053     xi_datastream_t* orientation_datastream = &feed.datastreams[0];
00054     strcpy( orientation_datastream->datastream_id, "orientation" );
00055     xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
00056 
00057     feed.datastreams[1].datapoint_count = 1;
00058     xi_datastream_t* side_rotation_datastream = &feed.datastreams[1];
00059     strcpy( side_rotation_datastream->datastream_id, "side_rotation" );
00060     xi_datapoint_t* current_side_rotation = &side_rotation_datastream->datapoints[0];
00061     
00062     feed.datastreams[2].datapoint_count = 1;
00063     xi_datastream_t* temperature_datastream = &feed.datastreams[2];
00064     strcpy( temperature_datastream->datastream_id, "temperature" );
00065     xi_datapoint_t* current_temperature = &temperature_datastream->datapoints[0];
00066     
00067     // create the cosm library context
00068     xi_context_t* xi_context
00069         = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id );
00070 
00071     // check if everything works
00072     if( xi_context == NULL )
00073     {
00074         return -1;
00075     }
00076 
00077     while(1) {
00078       
00079       switch( axl.getSide() ) {
00080         case MMA7660::Front:
00081           xi_set_value_str( current_side_rotation, "front" );
00082           break;
00083         case MMA7660::Back:
00084           xi_set_value_str( current_side_rotation, "back" );
00085           break;
00086         default:
00087           xi_set_value_str( current_side_rotation, "unknown" );
00088           break;
00089       }
00090       
00091       switch( axl.getOrientation() ) {
00092         case MMA7660::Down:
00093           xi_set_value_str( current_orientation, "down" );
00094           break;
00095         case MMA7660::Up:
00096            xi_set_value_str( current_orientation, "up" );
00097            break;
00098         case MMA7660::Right:
00099           xi_set_value_str( current_orientation, "right" );
00100           break;
00101         case MMA7660::Left:
00102           xi_set_value_str( current_orientation, "left" );
00103           break;
00104         default: 
00105           xi_set_value_str( current_orientation, "unknown" );
00106           break;
00107       }
00108       
00109       xi_set_value_f32( current_temperature, tmp.read() );
00110         
00111       lcd_printf( "update...\n" );
00112       xi_feed_update( xi_context, &feed );
00113       lcd_printf( "done...\n" );
00114       
00115       wait( 15.0 );
00116     }
00117 }