Acquire Sensor data and email

Dependencies:   C12832_lcd EthernetInterface LM75B NTPClient SimpleSMTPClient TextLCD USBHost mbed

Fork of USBHost-MSD_HelloWorld by avnish aggarwal

Committer:
nagarajbatta
Date:
Fri Sep 20 15:42:44 2013 +0000
Revision:
10:0902b3dc4d96
Parent:
9:3ca15106a7d1
Acquire Data to USB and Email

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 0:0d68fe822228 1 #include "mbed.h"
samux 0:0d68fe822228 2 #include "USBHostMSD.h"
nagarajbatta 10:0902b3dc4d96 3 #include "LM75B.h"
nagarajbatta 10:0902b3dc4d96 4 #include "EthernetInterface.h"
nagarajbatta 10:0902b3dc4d96 5 #include "NTPClient.h"
nagarajbatta 10:0902b3dc4d96 6 #include "SimpleSMTPClient.h"
nagarajbatta 10:0902b3dc4d96 7 #include "TextLCD.h"
nagarajbatta 10:0902b3dc4d96 8 //#include "C12832_lcd.h"
nagarajbatta 10:0902b3dc4d96 9
nagarajbatta 10:0902b3dc4d96 10 #define DOMAIN "comcast.net"
nagarajbatta 10:0902b3dc4d96 11 #define SERVER "smtp.comcast.net"
nagarajbatta 10:0902b3dc4d96 12 #define PORT "587" //25 or 587,465(OutBound Port25 Blocking )
nagarajbatta 10:0902b3dc4d96 13 #define USER "ramyanagaraj"
nagarajbatta 10:0902b3dc4d96 14 #define PWD "Abhi#123"
nagarajbatta 10:0902b3dc4d96 15 #define FROM_ADDRESS "ramyanagaraj@comcast.net"
samux 0:0d68fe822228 16
samux 0:0d68fe822228 17 DigitalOut led(LED1);
nagarajbatta 10:0902b3dc4d96 18 LM75B tmp(p28,p27);
nagarajbatta 10:0902b3dc4d96 19 //DigitalIn center(p14);
nagarajbatta 10:0902b3dc4d96 20 //C12832_LCD screen;
nagarajbatta 10:0902b3dc4d96 21 Ticker sense;
nagarajbatta 10:0902b3dc4d96 22 int grab = 0;
samux 0:0d68fe822228 23
nagarajbatta 10:0902b3dc4d96 24 InterruptIn center_button(p14);
nagarajbatta 10:0902b3dc4d96 25
nagarajbatta 10:0902b3dc4d96 26 // TO_ADDRESS (Of some address is possible.)
nagarajbatta 10:0902b3dc4d96 27 // to-user1@domain, to-user2@domain, to-user3@domain ....
nagarajbatta 10:0902b3dc4d96 28 // The TO_ADDRESS are less than 128 characters.
nagarajbatta 10:0902b3dc4d96 29 #define TO_ADDRESS "ramyanagaraj@comcast.net"
nagarajbatta 10:0902b3dc4d96 30
nagarajbatta 10:0902b3dc4d96 31 #define SUBJECT "Sensor Data in USB"
nagarajbatta 10:0902b3dc4d96 32
nagarajbatta 10:0902b3dc4d96 33 TextLCD lcd(p24, p26, p27, p28, p29, p30);
nagarajbatta 10:0902b3dc4d96 34
nagarajbatta 10:0902b3dc4d96 35
nagarajbatta 10:0902b3dc4d96 36
nagarajbatta 10:0902b3dc4d96 37 /*void CENTER_ISR(){ //resets the metronome at beat rate 60
nagarajbatta 10:0902b3dc4d96 38 grab = 1;
nagarajbatta 10:0902b3dc4d96 39 } */
samux 0:0d68fe822228 40 void msd_task(void const *) {
nagarajbatta 10:0902b3dc4d96 41 //if (grab) {
samux 0:0d68fe822228 42 USBHostMSD msd("usb");
samux 0:0d68fe822228 43 int i = 0;
nagarajbatta 10:0902b3dc4d96 44 static long filesize;
nagarajbatta 10:0902b3dc4d96 45 static long last_filesize = 0;
nagarajbatta 10:0902b3dc4d96 46 #define MAX_FILESIZE 1000000L
nagarajbatta 10:0902b3dc4d96 47 //float temp;
samux 0:0d68fe822228 48 while(1) {
samux 0:0d68fe822228 49
samux 1:473f339c54c1 50 // try to connect a MSD device
samux 1:473f339c54c1 51 while(!msd.connect()) {
samux 1:473f339c54c1 52 Thread::wait(500);
avnisha 9:3ca15106a7d1 53 printf("waiting\n");
samux 1:473f339c54c1 54 }
samux 1:473f339c54c1 55
samux 4:f8a5c8aa895a 56 // in a loop, append a file
samux 4:f8a5c8aa895a 57 // if the device is disconnected, we try to connect it again
samux 1:473f339c54c1 58 while(1) {
samux 1:473f339c54c1 59
samux 4:f8a5c8aa895a 60 // append a file
nagarajbatta 10:0902b3dc4d96 61 // Check Last file size before appending?
nagarajbatta 10:0902b3dc4d96 62 if( last_filesize >= MAX_FILESIZE )
nagarajbatta 10:0902b3dc4d96 63 {
nagarajbatta 10:0902b3dc4d96 64 FILE * fp = fopen("/usb/text1.txt", "w"); // Create of make sure it is new.
nagarajbatta 10:0902b3dc4d96 65 }
nagarajbatta 10:0902b3dc4d96 66 else
nagarajbatta 10:0902b3dc4d96 67 {
nagarajbatta 10:0902b3dc4d96 68 FILE * fp = fopen("/usb/text1.txt", "a");
nagarajbatta 10:0902b3dc4d96 69 }
nagarajbatta 10:0902b3dc4d96 70 // Get current file size
nagarajbatta 10:0902b3dc4d96 71 FILE * fp = fopen("/usb/text1.txt", "a");
nagarajbatta 10:0902b3dc4d96 72 fseek(fp,0,SEEK_END);
nagarajbatta 10:0902b3dc4d96 73 filesize=ftell(fp);
nagarajbatta 10:0902b3dc4d96 74 printf("the file's length is %1dB\n",filesize);
samux 1:473f339c54c1 75
samux 1:473f339c54c1 76 if (fp != NULL) {
samux 1:473f339c54c1 77 fprintf(fp, "Hello fun SD Card World: %d!\r\n", i++);
nagarajbatta 10:0902b3dc4d96 78 fprintf(fp, "C=%.2f \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32);
nagarajbatta 10:0902b3dc4d96 79 //temp = tmp.read();
nagarajbatta 10:0902b3dc4d96 80 //fprintf(fp, %d, i++,);
nagarajbatta 10:0902b3dc4d96 81 //fprintf(fp,"\r\n%f,", temp);
nagarajbatta 10:0902b3dc4d96 82 //fprintf(fp, "Goodbye World!\r\n");
samux 1:473f339c54c1 83 printf("Goodbye World!\r\n");
samux 1:473f339c54c1 84 fclose(fp);
samux 1:473f339c54c1 85 } else {
samux 1:473f339c54c1 86 printf("FILE == NULL\r\n");
samux 1:473f339c54c1 87 }
samux 1:473f339c54c1 88
samux 0:0d68fe822228 89 Thread::wait(500);
samux 0:0d68fe822228 90
samux 1:473f339c54c1 91 // if device disconnected, try to connect again
samux 1:473f339c54c1 92 if (!msd.connected())
samux 1:473f339c54c1 93 break;
nagarajbatta 10:0902b3dc4d96 94 }
samux 0:0d68fe822228 95 }
samux 0:0d68fe822228 96 }
samux 0:0d68fe822228 97
samux 0:0d68fe822228 98
samux 0:0d68fe822228 99 int main() {
nagarajbatta 10:0902b3dc4d96 100
nagarajbatta 10:0902b3dc4d96 101 /*screen.cls();
nagarajbatta 10:0902b3dc4d96 102 screen.locate(0,0);
nagarajbatta 10:0902b3dc4d96 103 screen.printf("Press Center Button to Acq");*/
nagarajbatta 10:0902b3dc4d96 104 //sense.attach(&temp, 1);
nagarajbatta 10:0902b3dc4d96 105 //center_button.rise(&CENTER_ISR);
nagarajbatta 10:0902b3dc4d96 106 int t;
nagarajbatta 10:0902b3dc4d96 107 unsigned char data[120*160];
nagarajbatta 10:0902b3dc4d96 108 unsigned char c;
nagarajbatta 10:0902b3dc4d96 109 long length;
nagarajbatta 10:0902b3dc4d96 110 EthernetInterface eth;
nagarajbatta 10:0902b3dc4d96 111 char strTimeMsg[16];
nagarajbatta 10:0902b3dc4d96 112 lcd.cls();
nagarajbatta 10:0902b3dc4d96 113 printf("\n\n/* SimpleMTPClient library demonstration */\n");
nagarajbatta 10:0902b3dc4d96 114
nagarajbatta 10:0902b3dc4d96 115 printf("Setting up ...\n");
nagarajbatta 10:0902b3dc4d96 116 eth.init();
nagarajbatta 10:0902b3dc4d96 117 eth.connect();
nagarajbatta 10:0902b3dc4d96 118 printf("Connected OK\r\n");
nagarajbatta 10:0902b3dc4d96 119
nagarajbatta 10:0902b3dc4d96 120 // IP Address
nagarajbatta 10:0902b3dc4d96 121 printf("IP Address is %s\r\n", eth.getIPAddress());
nagarajbatta 10:0902b3dc4d96 122 lcd.locate(0,1);
nagarajbatta 10:0902b3dc4d96 123 lcd.printf("%s", eth.getIPAddress());
nagarajbatta 10:0902b3dc4d96 124
nagarajbatta 10:0902b3dc4d96 125 // NTP Client
nagarajbatta 10:0902b3dc4d96 126 printf("NTP setTime...\r\n");
nagarajbatta 10:0902b3dc4d96 127 NTPClient ntp;
nagarajbatta 10:0902b3dc4d96 128 ntp.setTime("pool.ntp.org");
nagarajbatta 10:0902b3dc4d96 129
nagarajbatta 10:0902b3dc4d96 130 time_t ctTime = time(NULL)- 25200; // PST
nagarajbatta 10:0902b3dc4d96 131 printf("\nTime is now (PST): %d %s\r\n", ctTime, ctime(&ctTime));
nagarajbatta 10:0902b3dc4d96 132 strftime(strTimeMsg,16,"%y/%m/%d %H:%M",localtime(&ctTime));
nagarajbatta 10:0902b3dc4d96 133
nagarajbatta 10:0902b3dc4d96 134 lcd.locate(0,0);
nagarajbatta 10:0902b3dc4d96 135 lcd.printf("[%s]",strTimeMsg);
nagarajbatta 10:0902b3dc4d96 136
nagarajbatta 10:0902b3dc4d96 137 SimpleSMTPClient smtp;
nagarajbatta 10:0902b3dc4d96 138 int ret;
nagarajbatta 10:0902b3dc4d96 139 char msg[]="USB Sensor Data";
nagarajbatta 10:0902b3dc4d96 140 //t = tmp.read();
nagarajbatta 10:0902b3dc4d96 141 smtp.setFromAddress(FROM_ADDRESS);
nagarajbatta 10:0902b3dc4d96 142 smtp.setToAddress(TO_ADDRESS);
nagarajbatta 10:0902b3dc4d96 143 smtp.setMessage(SUBJECT,msg);
nagarajbatta 10:0902b3dc4d96 144 smtp.addMessage("TEST TEST TEST\r\n");
nagarajbatta 10:0902b3dc4d96 145 FILE * fp = fopen("/usb/text1.txt", "r");
nagarajbatta 10:0902b3dc4d96 146 if(fp==NULL) {
nagarajbatta 10:0902b3dc4d96 147 printf("file not found!\n");
nagarajbatta 10:0902b3dc4d96 148 }
nagarajbatta 10:0902b3dc4d96 149 else
nagarajbatta 10:0902b3dc4d96 150 {
nagarajbatta 10:0902b3dc4d96 151 fseek(fp,0,SEEK_END);
nagarajbatta 10:0902b3dc4d96 152 length=ftell(fp);
nagarajbatta 10:0902b3dc4d96 153 printf("the file's length is %1dB\n",length);
nagarajbatta 10:0902b3dc4d96 154 }
nagarajbatta 10:0902b3dc4d96 155 fseek(fp,0,SEEK_SET); // Seek back to beginning of ile in case ftell moved the file pointer to the end?
nagarajbatta 10:0902b3dc4d96 156 char *emailtextbuffer = (char*) malloc(sizeof(char)*(length+1)); // Adding one to include the NULL character at the end.
nagarajbatta 10:0902b3dc4d96 157 while (!feof(fp)){ // while not end of file
nagarajbatta 10:0902b3dc4d96 158 c=fgetc(fp);
nagarajbatta 10:0902b3dc4d96 159 *emailtextbuffer++ = c; // save char into buffer
nagarajbatta 10:0902b3dc4d96 160 //emailtextbuffer++;
nagarajbatta 10:0902b3dc4d96 161 }
nagarajbatta 10:0902b3dc4d96 162 *emailtextbuffer = NULL;
nagarajbatta 10:0902b3dc4d96 163 fclose(fp);
nagarajbatta 10:0902b3dc4d96 164 smtp.addMessage(emailtextbuffer);
nagarajbatta 10:0902b3dc4d96 165 //smtp.addMessage("C=%.2f \tF=%.2f\n",tmp.read(),(1.8)*tmp.read()+32);
nagarajbatta 10:0902b3dc4d96 166
nagarajbatta 10:0902b3dc4d96 167 ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN,PORT,SMTP_AUTH_PLAIN);
nagarajbatta 10:0902b3dc4d96 168
nagarajbatta 10:0902b3dc4d96 169 if (ret) {
nagarajbatta 10:0902b3dc4d96 170 printf("E-mail Transmission Error\r\n");
nagarajbatta 10:0902b3dc4d96 171 } else {
nagarajbatta 10:0902b3dc4d96 172 printf("E-mail Transmission OK\r\n");
nagarajbatta 10:0902b3dc4d96 173 }
nagarajbatta 10:0902b3dc4d96 174
nagarajbatta 10:0902b3dc4d96 175 Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
nagarajbatta 10:0902b3dc4d96 176
nagarajbatta 10:0902b3dc4d96 177 while(1) {
samux 0:0d68fe822228 178 led=!led;
samux 0:0d68fe822228 179 Thread::wait(500);
samux 0:0d68fe822228 180 }
nagarajbatta 10:0902b3dc4d96 181 free(emailtextbuffer);
samux 0:0d68fe822228 182 }