mode3

Dependencies:   C12832_lcd EthernetInterface LM75B MMA7660 libxively mbed-rtos mbed

Fork of xively-jumpstart-demo_new by Bhakti Kulkarni

Committer:
zaincbs
Date:
Tue Jun 10 00:05:34 2014 +0000
Revision:
15:53f65089126b
Parent:
14:e32799a15720
mode3;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xively 0:efdea27c3b81 1 #include "mbed.h"
xively 0:efdea27c3b81 2 #include "EthernetInterface.h"
xively 7:0eff5db44b8b 3
zaincbs 15:53f65089126b 4 #define XI_FEED_ID 1344466483 // set Xively Feed ID (numerical, no quoutes)
zaincbs 15:53f65089126b 5 #define XI_API_KEY "mgjx3VwlsvsMBhekqcASRLnzMPHi9Aw2gZCZCzyH0vQkefn3" // set Xively API key (double-quoted string)
errordeveloper 10:86ffba646df1 6
errordeveloper 10:86ffba646df1 7 #include "app_board_io.h"
xively 7:0eff5db44b8b 8
xively 0:efdea27c3b81 9 #include "xively.h"
xively 0:efdea27c3b81 10 #include "xi_err.h"
xively 0:efdea27c3b81 11
errordeveloper 10:86ffba646df1 12 #include "MMA7660.h"
errordeveloper 10:86ffba646df1 13 #include "LM75B.h"
errordeveloper 11:bdf601a405fc 14 #include "C12832_lcd.h"
zaincbs 15:53f65089126b 15 #define ECHO_SERVER_PORT 7
xively 0:efdea27c3b81 16 MMA7660 axl(p28, p27);
bhakti08 14:e32799a15720 17 //LM75B tmp(p28, p27);
bhakti08 14:e32799a15720 18 AnalogIn tmp(p19);
errordeveloper 11:bdf601a405fc 19 C12832_LCD lcd;
zaincbs 15:53f65089126b 20 DigitalOut cL(LED1);
zaincbs 15:53f65089126b 21 Serial pc(USBTX,USBRX);
errordeveloper 11:bdf601a405fc 22 #include "logo.h"
xively 0:efdea27c3b81 23
xively 0:efdea27c3b81 24 int main() {
zaincbs 15:53f65089126b 25 cL = 1;
zaincbs 15:53f65089126b 26 /*lcd_print_xively_logo();*/
xively 0:efdea27c3b81 27 EthernetInterface eth;
zaincbs 15:53f65089126b 28 eth.init(); //Use DHCP
zaincbs 15:53f65089126b 29 eth.connect();
zaincbs 15:53f65089126b 30 pc.printf("IP Address is %s\n", eth.getIPAddress());
zaincbs 15:53f65089126b 31 TCPSocketServer server;
zaincbs 15:53f65089126b 32 server.bind(ECHO_SERVER_PORT);
zaincbs 15:53f65089126b 33 server.listen();
zaincbs 15:53f65089126b 34 while (true) {
zaincbs 15:53f65089126b 35 pc.printf("\nWait for new connection...\n");
zaincbs 15:53f65089126b 36 TCPSocketConnection client;
zaincbs 15:53f65089126b 37 server.accept(client);
zaincbs 15:53f65089126b 38 client.set_blocking(false, 150000); // Timeout after (1.5)s
xively 0:efdea27c3b81 39
zaincbs 15:53f65089126b 40 pc.printf("Connection from: %s\n", client.get_address());
zaincbs 15:53f65089126b 41 char buffer[256];
zaincbs 15:53f65089126b 42 while (true) {
zaincbs 15:53f65089126b 43 //int n = client.receive(buffer, sizeof(buffer));
zaincbs 15:53f65089126b 44 //if (n <= 0) break;
zaincbs 15:53f65089126b 45
zaincbs 15:53f65089126b 46 //client.send_all(buffer, n);
zaincbs 15:53f65089126b 47 //if (n <= 0) break;
zaincbs 15:53f65089126b 48
zaincbs 15:53f65089126b 49 pc.printf("Received:%s", buffer);
xively 0:efdea27c3b81 50
xively 0:efdea27c3b81 51 xi_feed_t feed;
xively 0:efdea27c3b81 52 memset( &feed, NULL, sizeof( xi_feed_t ) );
xively 0:efdea27c3b81 53
xively 0:efdea27c3b81 54 feed.feed_id = XI_FEED_ID;
zaincbs 15:53f65089126b 55 feed.datastream_count = 4;
xively 0:efdea27c3b81 56
xively 0:efdea27c3b81 57 feed.datastreams[0].datapoint_count = 1;
xively 0:efdea27c3b81 58 xi_datastream_t* orientation_datastream = &feed.datastreams[0];
xively 0:efdea27c3b81 59 strcpy( orientation_datastream->datastream_id, "orientation" );
xively 0:efdea27c3b81 60 xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
xively 0:efdea27c3b81 61
xively 0:efdea27c3b81 62 feed.datastreams[1].datapoint_count = 1;
xively 0:efdea27c3b81 63 xi_datastream_t* side_rotation_datastream = &feed.datastreams[1];
xively 0:efdea27c3b81 64 strcpy( side_rotation_datastream->datastream_id, "side_rotation" );
xively 0:efdea27c3b81 65 xi_datapoint_t* current_side_rotation = &side_rotation_datastream->datapoints[0];
xively 0:efdea27c3b81 66
xively 3:7ad3f6543b6e 67 feed.datastreams[2].datapoint_count = 1;
xively 3:7ad3f6543b6e 68 xi_datastream_t* temperature_datastream = &feed.datastreams[2];
xively 3:7ad3f6543b6e 69 strcpy( temperature_datastream->datastream_id, "temperature" );
xively 3:7ad3f6543b6e 70 xi_datapoint_t* current_temperature = &temperature_datastream->datapoints[0];
xively 3:7ad3f6543b6e 71
zaincbs 15:53f65089126b 72 feed.datastreams[3].datapoint_count = 1;
zaincbs 15:53f65089126b 73 xi_datastream_t* control_datastream = &feed.datastreams[3];
zaincbs 15:53f65089126b 74 strcpy( control_datastream->datastream_id, "System" );
zaincbs 15:53f65089126b 75 xi_datapoint_t* current_state = &control_datastream->datapoints[0];
zaincbs 15:53f65089126b 76
xively 0:efdea27c3b81 77 // create the cosm library context
zaincbs 15:53f65089126b 78 xi_context_t* xi_context = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id );
xively 0:efdea27c3b81 79
xively 0:efdea27c3b81 80 // check if everything works
xively 0:efdea27c3b81 81 if( xi_context == NULL )
xively 0:efdea27c3b81 82 {
xively 0:efdea27c3b81 83 return -1;
xively 0:efdea27c3b81 84 }
xively 0:efdea27c3b81 85
zaincbs 15:53f65089126b 86
xively 0:efdea27c3b81 87
xively 0:efdea27c3b81 88 switch( axl.getSide() ) {
xively 0:efdea27c3b81 89 case MMA7660::Front:
xively 0:efdea27c3b81 90 xi_set_value_str( current_side_rotation, "front" );
xively 0:efdea27c3b81 91 break;
xively 0:efdea27c3b81 92 case MMA7660::Back:
xively 0:efdea27c3b81 93 xi_set_value_str( current_side_rotation, "back" );
xively 0:efdea27c3b81 94 break;
xively 0:efdea27c3b81 95 default:
xively 0:efdea27c3b81 96 xi_set_value_str( current_side_rotation, "unknown" );
xively 0:efdea27c3b81 97 break;
xively 0:efdea27c3b81 98 }
xively 0:efdea27c3b81 99
xively 0:efdea27c3b81 100 switch( axl.getOrientation() ) {
xively 0:efdea27c3b81 101 case MMA7660::Down:
xively 0:efdea27c3b81 102 xi_set_value_str( current_orientation, "down" );
xively 0:efdea27c3b81 103 break;
xively 0:efdea27c3b81 104 case MMA7660::Up:
xively 0:efdea27c3b81 105 xi_set_value_str( current_orientation, "up" );
xively 0:efdea27c3b81 106 break;
xively 0:efdea27c3b81 107 case MMA7660::Right:
xively 0:efdea27c3b81 108 xi_set_value_str( current_orientation, "right" );
xively 0:efdea27c3b81 109 break;
xively 0:efdea27c3b81 110 case MMA7660::Left:
xively 0:efdea27c3b81 111 xi_set_value_str( current_orientation, "left" );
xively 0:efdea27c3b81 112 break;
xively 0:efdea27c3b81 113 default:
xively 0:efdea27c3b81 114 xi_set_value_str( current_orientation, "unknown" );
xively 0:efdea27c3b81 115 break;
xively 0:efdea27c3b81 116 }
xively 3:7ad3f6543b6e 117
zaincbs 15:53f65089126b 118 xi_set_value_f32( current_temperature, tmp.read() );
zaincbs 15:53f65089126b 119 xi_datastream_get( xi_context, feed.feed_id
zaincbs 15:53f65089126b 120 , control_datastream->datastream_id
zaincbs 15:53f65089126b 121 , control_datastream->datapoints);
zaincbs 15:53f65089126b 122 current_state = &control_datastream->datapoints[0];
zaincbs 15:53f65089126b 123 int system_status = current_state->value.i32_value;
zaincbs 15:53f65089126b 124
zaincbs 15:53f65089126b 125 if (system_status == 0)
zaincbs 15:53f65089126b 126 {
zaincbs 15:53f65089126b 127 cL = 0;
zaincbs 15:53f65089126b 128 }
zaincbs 15:53f65089126b 129 if (system_status == 1)
zaincbs 15:53f65089126b 130 {
zaincbs 15:53f65089126b 131 cL = 1;
zaincbs 15:53f65089126b 132 }
xively 4:e7ca62a11595 133
xively 7:0eff5db44b8b 134 lcd_printf( "update...\n" );
errordeveloper 11:bdf601a405fc 135 xi_feed_update( xi_context, &feed );
xively 7:0eff5db44b8b 136 lcd_printf( "done...\n" );
xively 3:7ad3f6543b6e 137
zaincbs 15:53f65089126b 138
zaincbs 15:53f65089126b 139 }
zaincbs 15:53f65089126b 140 client.close();
zaincbs 15:53f65089126b 141
zaincbs 15:53f65089126b 142 }
zaincbs 15:53f65089126b 143
Ilya Dmitrichenko 6:9e4f4a8c1829 144 }