Local copy

Dependencies:   C12832_lcd ConfigFile EthernetInterface LM75B MMA7660 MQTTPacket mbed-rtos mbed

Fork of IBMIoTClientExampleForLPC1768 by Sam Danbury

src/main.cpp

Committer:
rajathishere
Date:
2014-06-24
Revision:
1:dd948ce80918
Parent:
0:6276e9f72327
Child:
4:e8de333c1cb4

File content as of revision 1:dd948ce80918:

/*******************************************************************************
* Copyright (c) 2014 IBM Corporation and other Contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Sam Danbury
* IBM - Initial Contribution
*******************************************************************************/

#include "stdio.h"
#include "mbed.h"
#include "rtos.h"
#include "EthernetInterface.h"
#include "C12832_lcd.h"
#include "LM75B.h"
#include "MMA7660.h"
#include "C12832_lcd.h"
#include "QuickstartClient.h"
#include "QuickstartMessage.h"

#include <string>

using namespace std;

//LCD
C12832_LCD lcd;

//LED
DigitalOut led1(LED1);

//Accelerometer
MMA7660 MMA(p28, p27);

//Temperature sensor
LM75B tmp(p28, p27);

//Joystick
BusIn Down(p12);
BusIn Left(p13);
BusOut Click(p14);
BusIn Up(p15);
BusIn Right(p16);
string joystickPos;
void joystickThread(void const *args);

//Potentiometer
AnalogIn ain1(p19);
AnalogIn ain2(p20);
float pot1;
float pot2;

int main()
{
    //RAJATH's COMMIT
    //Connect to the network
    EthernetInterface eth;
    eth.init();
    eth.connect();
    
    //Obtain mac address of mbed
    string mac = eth.getMACAddress();
    
    //Remove colons from mac address
    mac.erase(remove(mac.begin(), mac.end(), ':'), mac.end());
    
    //Start thread to read data from joystick
    Thread jThd(joystickThread);
    joystickPos = "CENTRE";
    
    QuickstartClient* c = new QuickstartClient(mac);
    
    while(1) 
    {
        //Initialize lcd
        lcd.cls();
        lcd.locate(0,0);
        
        lcd.printf("Mac address: %s\n", mac);
        
        //Flash led to show message has been sent successfully
        led1 = 1;
        
        //Construct quickstart message with desired datapoints
        QuickstartMessage* m = new QuickstartMessage();
        m->add("accelX", MMA.x());
        m->add("accelY", MMA.y());
        m->add("accelZ", MMA.z());
        m->add("temp", tmp.read());
        m->add("joystick", joystickPos);
        
        pot1 = ain1;
        pot2 = ain2;
        m->add("potentiometer1", pot1);
        m->add("potentiometer2", pot2);
        
        //Message is converted from datapoints into json format and then published
        c->publish(m->convertToJson());
        
        if (m) {
            delete m;
        }
        
        led1 = 0;
        
        //Message published every second
        wait(1);
    }
    
    eth.disconnect();
}

void joystickThread(void const *args) {
    while (1) {
        if (Down)
            joystickPos = "DOWN";
        else if (Left)
            joystickPos = "LEFT";
        else if (Click)
            joystickPos = "CLICK";
        else if (Up)
            joystickPos = "UP";
        else if (Right)
            joystickPos = "RIGHT";
        else
            joystickPos = "CENTRE";
    }
}