Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:8cdad1c73e8e, 2012-03-25 (annotated)
- Committer:
- bfictorie
- Date:
- Sun Mar 25 17:26:30 2012 +0000
- Revision:
- 0:8cdad1c73e8e
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bfictorie | 0:8cdad1c73e8e | 1 | #include "mbed.h" |
| bfictorie | 0:8cdad1c73e8e | 2 | #include "Websocket.h" |
| bfictorie | 0:8cdad1c73e8e | 3 | #include "dnsresolve.h" |
| bfictorie | 0:8cdad1c73e8e | 4 | #include "EthernetNetIf.h" |
| bfictorie | 0:8cdad1c73e8e | 5 | #include "EE4040.h" |
| bfictorie | 0:8cdad1c73e8e | 6 | #include "NTPClient.h" |
| bfictorie | 0:8cdad1c73e8e | 7 | #include "Time.h" |
| bfictorie | 0:8cdad1c73e8e | 8 | |
| bfictorie | 0:8cdad1c73e8e | 9 | //------------------Initialization----------------------// |
| bfictorie | 0:8cdad1c73e8e | 10 | |
| bfictorie | 0:8cdad1c73e8e | 11 | Serial pc(USBTX, USBRX); // Initialize serial communication over USB |
| bfictorie | 0:8cdad1c73e8e | 12 | Timer tmr; // Initialize a new Timer called tmr |
| bfictorie | 0:8cdad1c73e8e | 13 | LocalFileSystem local("local"); // This is the directory where Halifax.csv vill be stored |
| bfictorie | 0:8cdad1c73e8e | 14 | |
| bfictorie | 0:8cdad1c73e8e | 15 | // a method to update the time from a timeserver |
| bfictorie | 0:8cdad1c73e8e | 16 | void updateTime() { // a function to update the time |
| bfictorie | 0:8cdad1c73e8e | 17 | time_t ctTime; // ?? |
| bfictorie | 0:8cdad1c73e8e | 18 | time(&ctTime); // ?? |
| bfictorie | 0:8cdad1c73e8e | 19 | // printf("Current time is (UTC): %s\r\n", ctime(&ctTime)); |
| bfictorie | 0:8cdad1c73e8e | 20 | |
| bfictorie | 0:8cdad1c73e8e | 21 | NTPClient ntp; |
| bfictorie | 0:8cdad1c73e8e | 22 | Host server(IpAddr(), 123, "0.de.pool.ntp.org"); // check that this Server is OK? |
| bfictorie | 0:8cdad1c73e8e | 23 | ntp.setTime(server); |
| bfictorie | 0:8cdad1c73e8e | 24 | |
| bfictorie | 0:8cdad1c73e8e | 25 | // printf("set time ok\r\n"); |
| bfictorie | 0:8cdad1c73e8e | 26 | time(&ctTime); |
| bfictorie | 0:8cdad1c73e8e | 27 | // printf("Current time is (UTC): %s\r\n", ctime(&ctTime)); |
| bfictorie | 0:8cdad1c73e8e | 28 | |
| bfictorie | 0:8cdad1c73e8e | 29 | } |
| bfictorie | 0:8cdad1c73e8e | 30 | //------------ Connect to Server -----------------------// |
| bfictorie | 0:8cdad1c73e8e | 31 | Websocket ws("ws://131.202.94.104:4040"); // establish websocket connection to this server |
| bfictorie | 0:8cdad1c73e8e | 32 | |
| bfictorie | 0:8cdad1c73e8e | 33 | int main() { |
| bfictorie | 0:8cdad1c73e8e | 34 | void* p1=malloc(16000); // to ensure we have enough heap after NTP setup |
| bfictorie | 0:8cdad1c73e8e | 35 | while (1) { // Infinite loop |
| bfictorie | 0:8cdad1c73e8e | 36 | |
| bfictorie | 0:8cdad1c73e8e | 37 | if (!ws.connect()) { // loop here while the connection is not established |
| bfictorie | 0:8cdad1c73e8e | 38 | pc.printf("Connection Failed - restart mbed\r\n"); |
| bfictorie | 0:8cdad1c73e8e | 39 | } |
| bfictorie | 0:8cdad1c73e8e | 40 | // pc.printf("Successfully Connected!\r\n"); // Confirm connection |
| bfictorie | 0:8cdad1c73e8e | 41 | tmr.start(); // start the Timer tmr |
| bfictorie | 0:8cdad1c73e8e | 42 | |
| bfictorie | 0:8cdad1c73e8e | 43 | //----------------- DATA COLLECTION --------------------// |
| bfictorie | 0:8cdad1c73e8e | 44 | // Data collected from the arduino/DSP |
| bfictorie | 0:8cdad1c73e8e | 45 | // this is just dummy data, eventualy there will be function calls here that |
| bfictorie | 0:8cdad1c73e8e | 46 | // will fetch the data from the DSP/arduino |
| bfictorie | 0:8cdad1c73e8e | 47 | char b[8] = {'V','1','2','0','.','0','0',';'}; |
| bfictorie | 0:8cdad1c73e8e | 48 | char r[8] = {'I','0','2','0','.','0','0',';'}; |
| bfictorie | 0:8cdad1c73e8e | 49 | char a[8] = {'P','2','4','0','0','.','0',';'}; |
| bfictorie | 0:8cdad1c73e8e | 50 | char n[8] = {'p','0','0','0','0','0','0',';'}; |
| bfictorie | 0:8cdad1c73e8e | 51 | char d[8] = {'v','0','0','0','4','8','6',';'}; |
| bfictorie | 0:8cdad1c73e8e | 52 | char o[8] = {'I','1','2','0','.','0','0',';'}; |
| bfictorie | 0:8cdad1c73e8e | 53 | int w[1] = {'w'}; |
| bfictorie | 0:8cdad1c73e8e | 54 | |
| bfictorie | 0:8cdad1c73e8e | 55 | // getDataV(); // This will be the method call that updates the data from the DSP |
| bfictorie | 0:8cdad1c73e8e | 56 | |
| bfictorie | 0:8cdad1c73e8e | 57 | // Pointers to measurements |
| bfictorie | 0:8cdad1c73e8e | 58 | char V[9] = {*b,*(b+1),*(b+2),*(b+3),*(b+4),*(b+5),*(b+6),*(b+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 59 | char * ptr_V; |
| bfictorie | 0:8cdad1c73e8e | 60 | ptr_V = V; |
| bfictorie | 0:8cdad1c73e8e | 61 | char I[9] = {*r,*(r+1),*(r+2),*(r+3),*(r+4),*(r+5),*(r+6),*(r+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 62 | char * ptr_I; |
| bfictorie | 0:8cdad1c73e8e | 63 | ptr_I = I; |
| bfictorie | 0:8cdad1c73e8e | 64 | char P[9] = {*a,*(a+1),*(a+2),*(a+3),*(a+4),*(a+5),*(a+6),*(a+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 65 | char * ptr_P; |
| bfictorie | 0:8cdad1c73e8e | 66 | ptr_P = P; |
| bfictorie | 0:8cdad1c73e8e | 67 | char p[9] = {*n,*(n+1),*(n+2),*(n+3),*(n+4),*(n+5),*(n+6),*(n+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 68 | char * ptr_p; |
| bfictorie | 0:8cdad1c73e8e | 69 | ptr_p = p; |
| bfictorie | 0:8cdad1c73e8e | 70 | char v[9] = {*d,*(d+1),*(d+2),*(d+3),*(d+4),*(d+5),*(d+6),*(d+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 71 | char * ptr_v; |
| bfictorie | 0:8cdad1c73e8e | 72 | ptr_v = v; |
| bfictorie | 0:8cdad1c73e8e | 73 | char i[9] = {*o,*(o+1),*(o+2),*(o+3),*(o+4),*(o+5),*(o+6),*(o+7),'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 74 | char * ptr_i; |
| bfictorie | 0:8cdad1c73e8e | 75 | ptr_i = i; |
| bfictorie | 0:8cdad1c73e8e | 76 | // char W[2] = {*w,'\0'}; |
| bfictorie | 0:8cdad1c73e8e | 77 | // char * ptr_W; |
| bfictorie | 0:8cdad1c73e8e | 78 | // ptr_W = W; // Test value in the format of scotts data |
| bfictorie | 0:8cdad1c73e8e | 79 | |
| bfictorie | 0:8cdad1c73e8e | 80 | // Pointer to all the measurements |
| bfictorie | 0:8cdad1c73e8e | 81 | char data[49] = {*b,*(b+1),*(b+2),*(b+3),*(b+4),*(b+5),*(b+6),*(b+7), |
| bfictorie | 0:8cdad1c73e8e | 82 | *r,*(r+1),*(r+2),*(r+3),*(r+4),*(r+5),*(r+6),*(r+7), |
| bfictorie | 0:8cdad1c73e8e | 83 | *a,*(a+1),*(a+2),*(a+3),*(a+4),*(a+5),*(a+6),*(a+7), |
| bfictorie | 0:8cdad1c73e8e | 84 | *n,*(n+1),*(n+2),*(n+3),*(n+4),*(n+5),*(n+6),*(n+7), |
| bfictorie | 0:8cdad1c73e8e | 85 | *d,*(d+1),*(d+2),*(d+3),*(d+4),*(d+5),*(d+6),*(d+7), |
| bfictorie | 0:8cdad1c73e8e | 86 | *o,*(o+1),*(o+2),*(o+3),*(o+4),*(o+5),*(o+6),*(o+7),'\0' |
| bfictorie | 0:8cdad1c73e8e | 87 | }; |
| bfictorie | 0:8cdad1c73e8e | 88 | char * ptr_data; // Declare a new Pointer |
| bfictorie | 0:8cdad1c73e8e | 89 | ptr_data = data; // make the new pointer point to the data |
| bfictorie | 0:8cdad1c73e8e | 90 | |
| bfictorie | 0:8cdad1c73e8e | 91 | |
| bfictorie | 0:8cdad1c73e8e | 92 | //------------------ DATA PROCESSING -------------------// |
| bfictorie | 0:8cdad1c73e8e | 93 | // Data appended with a timestamp, formatted, and sent to the server |
| bfictorie | 0:8cdad1c73e8e | 94 | |
| bfictorie | 0:8cdad1c73e8e | 95 | // ws.send("\r\n"); |
| bfictorie | 0:8cdad1c73e8e | 96 | while (1) { |
| bfictorie | 0:8cdad1c73e8e | 97 | |
| bfictorie | 0:8cdad1c73e8e | 98 | if (tmr.read() > 3) { // Wait 3 seconds -> Send Data Every 3 seconds |
| bfictorie | 0:8cdad1c73e8e | 99 | |
| bfictorie | 0:8cdad1c73e8e | 100 | free(p1); // reclaim back memory |
| bfictorie | 0:8cdad1c73e8e | 101 | |
| bfictorie | 0:8cdad1c73e8e | 102 | char *buf=new char[32]; |
| bfictorie | 0:8cdad1c73e8e | 103 | |
| bfictorie | 0:8cdad1c73e8e | 104 | Time *time=new Time(); |
| bfictorie | 0:8cdad1c73e8e | 105 | TimeStamp *timestamp=time->getTime(); |
| bfictorie | 0:8cdad1c73e8e | 106 | |
| bfictorie | 0:8cdad1c73e8e | 107 | snprintf(buf,32,"%.2d;%.2d;%.2d;%.2d;%.2d;%.2d", |
| bfictorie | 0:8cdad1c73e8e | 108 | timestamp->getYear(),timestamp->getMonth()+1, timestamp->getDay(), |
| bfictorie | 0:8cdad1c73e8e | 109 | timestamp->getHour()-3, timestamp->getMinute(), timestamp->getSecond()); |
| bfictorie | 0:8cdad1c73e8e | 110 | // printf("time=%s\r\n",buf); |
| bfictorie | 0:8cdad1c73e8e | 111 | |
| bfictorie | 0:8cdad1c73e8e | 112 | |
| bfictorie | 0:8cdad1c73e8e | 113 | // pc.printf(ptr_data); |
| bfictorie | 0:8cdad1c73e8e | 114 | // pc.printf("\r\n"); |
| bfictorie | 0:8cdad1c73e8e | 115 | ws.send("\r\n"); |
| bfictorie | 0:8cdad1c73e8e | 116 | ws.send(ptr_data); |
| bfictorie | 0:8cdad1c73e8e | 117 | ws.send(buf); |
| bfictorie | 0:8cdad1c73e8e | 118 | // getTime(); |
| bfictorie | 0:8cdad1c73e8e | 119 | tmr.start(); // restart the timer |
| bfictorie | 0:8cdad1c73e8e | 120 | } // end if |
| bfictorie | 0:8cdad1c73e8e | 121 | Net::poll(); |
| bfictorie | 0:8cdad1c73e8e | 122 | } // end while |
| bfictorie | 0:8cdad1c73e8e | 123 | |
| bfictorie | 0:8cdad1c73e8e | 124 | |
| bfictorie | 0:8cdad1c73e8e | 125 | } // end while |
| bfictorie | 0:8cdad1c73e8e | 126 | } // end main |