works through pushing box to log data to google spreadsheet
Dependencies: MBed_Adafruit-GPS-Library SDFileSystem mbed
Fork of GPR_Interface by
Diff: GPRS/modem/modem.cpp
- Revision:
- 10:8c55dfcc9a7c
- Parent:
- 0:8ccbd963e74d
- Child:
- 11:045cb766d9a5
--- a/GPRS/modem/modem.cpp Fri Jul 25 10:42:42 2014 +0000 +++ b/GPRS/modem/modem.cpp Fri Sep 25 04:10:56 2015 +0000 @@ -21,7 +21,102 @@ */ #include "modem.h" +//Serial pc(USBTX,USBRX); +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); //MOSI, MISO, SCLK, SSEL. Tested on K64F, correct pins. +AnalogIn LM35(PTB2); +// added by Noah Milam +void Modem::gprs_response() +{ + printf("\nlistening for client\n"); + char buffer[100]; + int count = 0; + + mkdir("/sd/mydir", 0777); // makes directory if needed + FILE *fp = fopen("/sd/mydir/chemData.csv", "w"); // creats new file to write + fprintf(fp,"phone Number,chem data, latitude,longitude\n"); // writes in a header for the table + fclose(fp); // closes file + + while(1) + { if(serialModem.readable()) { + + while(serialModem.readable()) { + char c = serialModem.getc(); + buffer[count++] = c; + //pc.puts(&c); + if(count == 64) break; + } + + if(buffer[0] != '\0'){ + buffer[count] = '\0'; + FILE *fp = fopen("/sd/mydir/chemicalData.csv", "a"); // opens file to append it + fprintf(fp,"%s\n",buffer);//writes to file + fclose(fp); // closes file + + printf("%s \n",buffer); + for(int i = 0; i < count+2; i++) { + buffer[i] = NULL; + } + } + count = 0; + } + } +} +void Modem::wait_for_sms(){ + printf("waiting for message\n"); + while(1){ + if(serialModem.readable()){ + return; + } + } +} +void Modem::get_message(){ + char tempStr[30]; + int count= 0; + int line_count = 0; + for(int i= 0;i < strlen(IPAdd);i++){ + if(line_count == 3){ + tempStr[count++] = IPAdd[i]; + } + if(IPAdd[i] == '\n'){ + line_count++; + } + } + tempStr[count - 2] = '\0'; + count++; + strncpy(IPAdd, tempStr, count); + printf("IP Addr > %s \n", IPAdd); + printf("text size > %d\n",strlen(IPAdd)); + } +void Modem::storeResp(){ + + int line_count = 0; + int read = -1; + char buffer[100]; + int count = 0; + timeCnt.start(); + while(timeCnt.read() < 5) + { + while(serialModem.readable()) { + char c = serialModem.getc(); + buffer[count++] = c; + } + } + timeCnt.stop(); + timeCnt.reset(); + buffer[count] = '\0'; + + strncpy(IPAdd, buffer, count); + printf("original>> %s",IPAdd); + printf("size of text > %d",strlen(IPAdd)); + count = 0; + get_message(); +} + +char* Modem::get_server_IP(){ + return IPAdd; +} +//end added by Noah Milam char Modem::readByte(void) { return serialModem.getc(); @@ -63,6 +158,32 @@ { serialModem.puts(cmd); } +void Modem::sendCmdResp(const char* cmd) +{ + serialModem.puts(cmd); + getResp(); +} +void Modem::getResp() +{ + char buffer[1000]; + int count = 0; + timeCnt.start(); + while(timeCnt.read() < 5) + { while(serialModem.readable()) { + char c = serialModem.getc(); + buffer[count++] = c; + } + } + timeCnt.stop(); + timeCnt.reset(); + buffer[count] = '\0'; + printf("%s \n",buffer); + for(int i = 0; i < count+2; i++) { + buffer[i] = NULL; + } + count = 0; +} + void Modem::sendATTest(void) {