Dreameforce 2013 giveaway demo
Dependencies: C12832_lcd EthernetInterface LM75B MMA7660 libxively mbed-rtos mbed
Fork of xively-dreamforce by
main.cpp
- Committer:
- xively
- Date:
- 2013-05-13
- Revision:
- 0:efdea27c3b81
- Child:
- 1:0a61d7ab702c
File content as of revision 0:efdea27c3b81:
#include "mbed.h" #include "EthernetInterface.h" #include "xively.h" #include "xi_err.h" #include "xi_printf.h" #include <stdarg.h> #include <stdio.h> #include "MMA7660.h" #define XI_FEED_ID 128488 #define XI_API_KEY "T4KXAH_gw1PW42RjRdhU-lgmCC6SAKw3NnBPc3dydUc4ND0g" #include "C12832_lcd.h" C12832_LCD lcd; MMA7660 axl(p28, p27); extern "C" { void user_printf( const char* buffer ) { lcd.cls(); lcd.locate( 0, 3 ); lcd.printf( buffer ); //wait( 1.0 ); } void mbed_printf( const char* fmt, ... ) { char buffer[ 64 ]; va_list ap; va_start( ap, fmt ); vsnprintf( buffer, 64, fmt, ap ); va_end( ap ); user_printf( buffer ); } } int main() { // set our device specific print function USER_PRINT = user_printf; EthernetInterface eth; int s = eth.init(); //Use DHCP if( s != NULL ) { mbed_printf( "Could not initialise. Will halt!\n" ); exit( 0 ); } s = eth.connect(); if( s != NULL ) { mbed_printf( "Could not connect. Will halt!\n" ); exit( 0 ); } else { mbed_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 = 2; 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]; 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]; // create the cosm library context xi_context_t* xi_context = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id ); // check if everything works if( xi_context == NULL ) { return -1; } mbed_printf("feed:%d datastreams:[%s,%s]\n", feed.feed_id, orientation_datastream->datastream_id, side_rotation_datastream->datastream_id); 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; } switch( axl.getOrientation() ) { case MMA7660::Down: mbed_printf("down %s\n", (axl.getSide() == MMA7660::Front ? "front" : "back")); xi_set_value_str( current_orientation, "down" ); break; case MMA7660::Up: mbed_printf("up %s\n", (axl.getSide() == MMA7660::Front ? "front" : "back")); xi_set_value_str( current_orientation, "up" ); break; case MMA7660::Right: mbed_printf("right %s\n", (axl.getSide() == MMA7660::Front ? "front" : "back")); xi_set_value_str( current_orientation, "right" ); break; case MMA7660::Left: mbed_printf("left %s\n", (axl.getSide() == MMA7660::Front ? "front" : "back")); xi_set_value_str( current_orientation, "left" ); break; default: xi_set_value_str( current_orientation, "unknown" ); break; } mbed_printf( "update...\n" ); xi_feed_update(xi_context, &feed); mbed_printf( "done...\n" ); } }