Acquire Sensor data and email

Dependencies:   C12832_lcd EthernetInterface LM75B NTPClient SimpleSMTPClient TextLCD USBHost mbed

Fork of USBHost-MSD_HelloWorld by avnish aggarwal

Files at this revision

API Documentation at this revision

Comitter:
nagarajbatta
Date:
Fri Sep 20 15:42:44 2013 +0000
Parent:
9:3ca15106a7d1
Commit message:
Acquire Data to USB and Email

Changed in this revision

C12832_lcd.lib Show annotated file Show diff for this revision Revisions of this file
EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
LM75B.lib Show annotated file Show diff for this revision Revisions of this file
NTPClient.lib Show annotated file Show diff for this revision Revisions of this file
SimpleSMTPClient.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 3ca15106a7d1 -r 0902b3dc4d96 C12832_lcd.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832_lcd.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/dreschpe/code/C12832_lcd/#468cdccff7af
diff -r 3ca15106a7d1 -r 0902b3dc4d96 EthernetInterface.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/avnisha/code/EthernetInterface/#f0c3337842b6
diff -r 3ca15106a7d1 -r 0902b3dc4d96 LM75B.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LM75B.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/chris/code/LM75B/#6a70c9303bbe
diff -r 3ca15106a7d1 -r 0902b3dc4d96 NTPClient.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NTPClient.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/NTPClient/#881559865a93
diff -r 3ca15106a7d1 -r 0902b3dc4d96 SimpleSMTPClient.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SimpleSMTPClient.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/sunifu/code/SimpleSMTPClient/#27053679f44b
diff -r 3ca15106a7d1 -r 0902b3dc4d96 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri Sep 20 15:42:44 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#44f34c09bd37
diff -r 3ca15106a7d1 -r 0902b3dc4d96 main.cpp
--- a/main.cpp	Tue Aug 13 06:11:51 2013 +0000
+++ b/main.cpp	Fri Sep 20 15:42:44 2013 +0000
@@ -1,13 +1,50 @@
 #include "mbed.h"
 #include "USBHostMSD.h"
+#include "LM75B.h"
+#include "EthernetInterface.h"
+#include "NTPClient.h"
+#include "SimpleSMTPClient.h"
+#include "TextLCD.h"
+//#include "C12832_lcd.h"
+
+#define DOMAIN "comcast.net"
+#define SERVER "smtp.comcast.net"
+#define PORT "587" //25 or 587,465(OutBound Port25 Blocking )
+#define USER "ramyanagaraj"
+#define PWD "Abhi#123"
+#define FROM_ADDRESS "ramyanagaraj@comcast.net"
 
 DigitalOut led(LED1);
+LM75B tmp(p28,p27);
+//DigitalIn center(p14);
+//C12832_LCD screen;
+Ticker sense;
+int grab = 0;
 
+InterruptIn center_button(p14);
+
+// TO_ADDRESS (Of some address is possible.)
+// to-user1@domain, to-user2@domain, to-user3@domain ....
+// The TO_ADDRESS are less than 128 characters.
+#define TO_ADDRESS "ramyanagaraj@comcast.net" 
+
+#define SUBJECT "Sensor Data in USB"
+
+TextLCD lcd(p24, p26, p27, p28, p29, p30);
+
+   
+            
+/*void CENTER_ISR(){                  //resets the metronome at beat rate 60
+        grab = 1;
+} */  
 void msd_task(void const *) {
-    
+    //if (grab) {
     USBHostMSD msd("usb");
     int i = 0;
-    
+    static long filesize;
+    static long last_filesize = 0;
+    #define MAX_FILESIZE 1000000L
+   //float temp;
     while(1) {
         
         // try to connect a MSD device
@@ -21,10 +58,28 @@
         while(1) {
             
             // append a file
-            FILE * fp = fopen("/usb/test1.txt", "a");
+            // Check Last file size before appending?
+            if( last_filesize >= MAX_FILESIZE )
+            {
+                FILE * fp = fopen("/usb/text1.txt", "w"); // Create of make sure it is new. 
+            }
+            else
+            {
+                FILE * fp = fopen("/usb/text1.txt", "a");
+            }
+            // Get current file size
+            FILE * fp = fopen("/usb/text1.txt", "a");
+            fseek(fp,0,SEEK_END);
+            filesize=ftell(fp);
+            printf("the file's length is %1dB\n",filesize);
         
             if (fp != NULL) {
                 fprintf(fp, "Hello fun SD Card World: %d!\r\n", i++);
+                fprintf(fp, "C=%.2f  \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32);
+                //temp = tmp.read();
+                //fprintf(fp, %d, i++,);
+                 //fprintf(fp,"\r\n%f,", temp);
+                //fprintf(fp, "Goodbye World!\r\n");
                 printf("Goodbye World!\r\n");
                 fclose(fp);
             } else {
@@ -36,16 +91,92 @@
             // if device disconnected, try to connect again
             if (!msd.connected())
                 break;
-        }
-            
+        }    
     }
 }
 
 
 int main() {
-    Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
-    while(1) {
+    
+    /*screen.cls();
+    screen.locate(0,0);
+    screen.printf("Press Center Button to Acq");*/
+    //sense.attach(&temp, 1);
+    //center_button.rise(&CENTER_ISR); 
+    int t;
+    unsigned char data[120*160];
+    unsigned char c;
+    long length;
+    EthernetInterface eth;
+    char strTimeMsg[16];
+    lcd.cls();
+    printf("\n\n/* SimpleMTPClient library demonstration */\n");
+
+    printf("Setting up ...\n");
+    eth.init();
+    eth.connect();
+    printf("Connected OK\r\n");
+    
+    // IP Address 
+    printf("IP Address is %s\r\n", eth.getIPAddress());
+    lcd.locate(0,1);
+    lcd.printf("%s", eth.getIPAddress());
+    
+    // NTP Client
+    printf("NTP setTime...\r\n");
+    NTPClient ntp;
+    ntp.setTime("pool.ntp.org");
+    
+    time_t ctTime = time(NULL)- 25200; // PST
+    printf("\nTime is now (PST): %d %s\r\n", ctTime, ctime(&ctTime));
+    strftime(strTimeMsg,16,"%y/%m/%d %H:%M",localtime(&ctTime));
+    
+    lcd.locate(0,0);
+    lcd.printf("[%s]",strTimeMsg);
+    
+    SimpleSMTPClient smtp;
+    int ret;
+    char msg[]="USB Sensor Data";
+    //t = tmp.read();
+    smtp.setFromAddress(FROM_ADDRESS);
+    smtp.setToAddress(TO_ADDRESS);
+    smtp.setMessage(SUBJECT,msg);
+    smtp.addMessage("TEST TEST TEST\r\n");
+    FILE * fp = fopen("/usb/text1.txt", "r");
+    if(fp==NULL) {
+      printf("file not found!\n");
+    }
+    else 
+    {
+      fseek(fp,0,SEEK_END);
+      length=ftell(fp);
+      printf("the file's length is %1dB\n",length);
+    }
+    fseek(fp,0,SEEK_SET); // Seek back to beginning of ile in case ftell moved the file pointer to the end?
+    char *emailtextbuffer = (char*) malloc(sizeof(char)*(length+1)); // Adding one to include the NULL character at the end.
+    while (!feof(fp)){                        // while not end of file
+           c=fgetc(fp);
+           *emailtextbuffer++ = c;      // save char into buffer
+           //emailtextbuffer++;
+      }
+    *emailtextbuffer = NULL;
+    fclose(fp);
+    smtp.addMessage(emailtextbuffer);
+    //smtp.addMessage("C=%.2f  \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32);
+  
+    ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN,PORT,SMTP_AUTH_PLAIN);
+ 
+    if (ret) {
+        printf("E-mail Transmission Error\r\n");
+    } else {
+        printf("E-mail Transmission OK\r\n");
+    }
+   
+   Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
+   
+   while(1) {
         led=!led;
         Thread::wait(500);
     }
+    free(emailtextbuffer);
 }
\ No newline at end of file