Axeda AMMMP sample code for the mbed NXP LPC1768 Prototyping Board

Dependencies:   EthernetInterface mbed-rtos mbed

Dependents:   AxedaGo-mbed_WIZnetInterface

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 EthernetInterface eth;
00005  
00006 AnalogIn pot1(p19);
00007 AnalogIn pot2(p20);
00008 TCPSocketConnection sock;
00009  
00010 DigitalOut led1(LED1);
00011 DigitalOut led2(LED2);
00012 DigitalOut led3(LED3);
00013 DigitalOut led4(LED4);
00014  
00015 int main() 
00016 {
00017     
00018     char *MODEL = "mbed";
00019     char *SERIAL_NUM = "SerialNumber"; 
00020     float DEADBAND = 0.015;
00021     
00022     char* ip;
00023     
00024     int http_cmd_sz=800;
00025     char http_cmd[http_cmd_sz];
00026     int buffer_sz=300;  
00027     char buffer[buffer_sz];  
00028     int returnCode = 0;
00029     
00030     led1 = 1;
00031     led2 = 1;
00032     led3 = 1;
00033     led4 = 1;
00034     
00035     printf("initializing Ethernet\r\n");
00036     returnCode = eth.init(); //Use DHCP
00037  
00038     if ( returnCode == 0 )
00039     {
00040         printf(" - Ethernet ready\r\n");
00041         led1 = returnCode;
00042     }
00043     else
00044     {
00045         printf(" - Could not initialize Ethernet - ending\r\n");
00046         return 0;
00047     }
00048     
00049     printf("Ethernet.connecting \r\n");
00050     returnCode = eth.connect();
00051     printf(" - connecting returned %d \r\n", returnCode);
00052     led2 = returnCode != -1 ? 0: 1;
00053     printf("Trying to get IP address..\r\n");
00054     ip = eth.getIPAddress();
00055     led3 = strlen(ip)<4 ? 1: 0;
00056     printf("  -  IP address:%s\r\n", ip);
00057     
00058     float oil_level = 0.0;
00059     float oil_level2= 0.0;
00060     float oldPotVal = -2.0;
00061     float oldPotVal2 = -2.0;
00062     
00063     while(1) {
00064     
00065         oil_level = pot1.read();
00066         oil_level2=pot2.read();
00067         
00068         if ( abs(oil_level - oldPotVal) < DEADBAND && abs(oil_level2 - oldPotVal2) < DEADBAND)
00069         {
00070             continue;   
00071         }
00072         else
00073         {
00074             led4 = 1;
00075             oldPotVal = oil_level;
00076             oldPotVal2 = oil_level2;
00077             printf("Sending Value for well1 %.2f\n\r", oil_level);
00078             printf("Sending Value for well2 %.2f\n\r", oil_level2);
00079             sock.connect("toolbox-connect.axeda.com", 80);
00080  
00081             snprintf(http_cmd, http_cmd_sz,  "POST /ammp/data/1/%s!%s HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: 65\r\n\r\n{\"data\":[{\"di\":{\"oil_level\":%.2f, \"oil_level2\":%.2f}}]}\r\n\r\n", MODEL, SERIAL_NUM, oil_level, oil_level2);
00082             sock.send_all(http_cmd, http_cmd_sz-1);
00083     
00084             while ( (returnCode = sock.receive(buffer, buffer_sz-1)) > 0)
00085             {
00086                 buffer[returnCode] = '\0';
00087                 printf("Received %d chars from server:\n\r%s\n", returnCode, buffer);
00088             }
00089             led4 = returnCode;
00090             sock.close();
00091         }
00092  
00093     }
00094  
00095 }