demo of the murata wifi chip. This demo tries to connect to an open wifi access point and prints out all the relevant information about the connection. It then scans all wifi access points nearby and reports their information.

Dependencies:   SNICInterface mbed-rtos mbed

Fork of SNIC-xively-jumpstart-demo by muRata

main.cpp

Committer:
kishino
Date:
2014-06-25
Revision:
20:f0c7f5ca7e8a
Parent:
19:4e2900daad59
Child:
21:25b85cbbdd82

File content as of revision 20:f0c7f5ca7e8a:

#include "mbed.h"
#include "SNIC_WifiInterface.h"

#define XI_FEED_ID 1056160623 // set Xively Feed ID (numerical, no quoutes)
#define XI_API_KEY "Wg7CfZDrj7VjIIpiYzdDrMow6wdENAOGjkIfQ0fUjJh6DAw2" // set Xively API key (double-quoted string)

#include "app_board_io.h"

#include "xively.h"
#include "xi_err.h"

#include "MMA7660.h"
#include "LM75B.h"
#include "C12832_lcd.h"

#include "PowerControl/EthernetPowerControl.h"

MMA7660 axl(p28, p27);
LM75B tmp(p28, p27);
C12832_LCD lcd;

#include "logo.h"

#define DEMO_AP_SSID                  "E2N1-Lab-Buffalo-D302"
#define DEMO_AP_SECURITY_TYPE         e_SEC_WPA2_AES
#define DEMO_AP_SECUTIRY_KEY          "12345678"
#define DEMO_AP_SECUTIRY_KEY_LEN      8

/** Wi-Fi SNIC UART Interface*/
C_SNIC_WifiInterface     mSNICwifi( p9, p10, NC, NC, p30 );
Serial pc(USBTX, USBRX);

int main() {
    
    PHY_PowerDown();
    
    pc.baud( 115200 );
    printf("main\r\n");
    lcd_print_xively_logo();
    
    // Initialize Wi-Fi interface
    int s = mSNICwifi.init();
    
    lcd_printf("init();\r\n");
    
    if( s != 0 )
    {
        lcd_printf( "Could not initialise. Will halt!\n" );        
        return -1;
    }    
    wait(0.5);
    s = mSNICwifi.disconnect();
    lcd_printf("disconnect();\r\n");
    if( s != 0 )
    {
        printf( "disconnect failed\r\n" );        
        return -1;
    }    
    
    wait(0.3);
    // Connect AP
    mSNICwifi.connect( DEMO_AP_SSID
                        , strlen(DEMO_AP_SSID)
                        , DEMO_AP_SECURITY_TYPE
                        , DEMO_AP_SECUTIRY_KEY
                        , DEMO_AP_SECUTIRY_KEY_LEN );
    lcd_printf("connect();\r\n");
    wait(0.5);
    
    lcd_printf("IP Config();\r\n");
    mSNICwifi.setIPConfig( true );
    
    wait(0.5);

    xi_feed_t feed;
    memset( &feed, NULL, sizeof( xi_feed_t ) );
    
    feed.feed_id = XI_FEED_ID;
    feed.datastream_count = 3;
    
    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];
    
    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];
    
    // 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;
    }

    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:
          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( 1.0 );
    }
}