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.
Dependencies: ADS1115 BME280 CronoDot SDFileSystem mbed
Fork of Outdoor_UPAS_v1_2_Tboard by
Diff: main.cpp
- Revision:
- 52:95949e34b1f6
- Parent:
- 51:feba3e2aa1a0
- Child:
- 53:5b4991d93cb1
--- a/main.cpp Sat May 14 00:18:34 2016 +0000
+++ b/main.cpp Sun May 15 03:45:12 2016 +0000
@@ -13,6 +13,8 @@
#include "MAX_M8.h"
//#include "DRV8830.h"
#include "Tb_SD_Reader.h"
+#include <vector>
+#include <string>
/////////////////////////////////////////////
@@ -91,11 +93,11 @@
/////////////////////////////////////////////
//SD Card
/////////////////////////////////////////////
-char filename[] = "/sd/XXXX0000LOG000000000000---------------.txt";
+char filename[] = "/sd/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt";
SDFileSystem sd(PB_5, PB_4, PB_3, PB_6, "sd");//(D4, D5, D3, D10, "sd"); // (MOSI, MISO, SCK, SEL)
Tb_SD_Reader sdReader;
DigitalIn sdCD(PA_11, PullUp);
-char fileTest[] = "test.txt";
+
/////////////////////////////////////////////
//Callbacks
@@ -204,7 +206,9 @@
//*************************************************//
void sendData();
-void Read_File(char[]);
+void Read_File();
+int file_copy(const char *src, const char *dst);
+//void Read_File(char[]);
void pc_recv(){
while(pc.readable()){
@@ -263,7 +267,8 @@
if(transmissionValue == 15){
if(fileTransferLock==0){
fileTransferLock=1;
- Read_File(fileTest);
+ //Read_File(fileTest);
+ Read_File();
fileTransferLock=0;
RGB_LED.set_led(1,1,1);
}
@@ -357,6 +362,7 @@
uint8_t latLongHome2[9] = {0x0B,0x00,0x00,0x80,0x3F,0x00,0x00,0x80,0x3F};
uint8_t cartridgeIDOriginal[4] = {0x0C,0x48,0x48,0x48};
uint8_t dutyCycleOriginal[4] = {0x0D,0x31,0x30,0x30};
+ //uint8_t transfer_fileName[62] = {0x0E, 0x4d, 0x53, 0x30, 0x30, 0x30, 0x30, 0x4c, 0x4f, 0x47, 0x5f, 0x30, 0x30, 0x2d, 0x30, 0x30, 0x2d, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x3d, 0x30, 0x30, 0x3d, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5f, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x74, 0x78, 0x74};
// Latitude School EEPROM = 0x50-0x53
// Longitude School EEPROM = 0x54-0x57
// Latitude Home EEPROM = 0x58-0x5B
@@ -434,32 +440,94 @@
}
-void Read_File(char filename[]){
- char new_str[] = "/sd/XXXX0000LOG000000000000---------------.txt";
+void Read_File(){
+//void Read_File(char filename[]){
+
+ char transfer_fileName[] = "MS000LOG_000000_000000_000000_000000_---------------_xxx.txt";
+ char transfer_fileNamedir[] = "/sd/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt";
+ char transfer_fileNamedirCopy[] = "/sd/c/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt";
+
- sprintf(new_str, "/sd/%s", filename);
- FILE *fp = fopen(new_str, "r");
- if(fp == NULL) {
- pc.printf("Could not open file, check disk.\r\n");
- while(1) {};
- } else {
- pc.printf("file opened\r\n");
+ vector<string> filenames; //filenames are stored in a vector string
+ DIR *dp;
+ struct dirent *dirp;
+ dp = opendir("/sd");
+ //read all directory and file names in current directory into filename vector
+ while((dirp = readdir(dp)) != NULL) {
+ filenames.push_back(string(dirp->d_name));
}
- unsigned char c;
- uint8_t sendMe[1] = {254};
- RGB_LED.set_led(0,1,0);
- //pc.printf("%s\r\n",fp.c_str());
- microChannel.putc(sendMe[0]);
- while (c != 255){ // while not end of file or forever
- c=fgetc(fp); // get a character/byte from the file
- //printf("%c",c); // and show it in hex format
- microChannel.putc(c);
- //wait(0.005);
+ closedir(dp);
+ vector<string>::iterator it;
+
+ for(it=filenames.begin(); it < filenames.end(); it++) {
+ // string str ((*it).c_str());
+ if((*it).substr((*it).length()-3) == "txt"){
+ //if(((it - filenames.begin())+1) == 1){
+ pc.printf("%d: %s\r\n", ((it - filenames.begin())+1), (*it).c_str());
+ sprintf(transfer_fileName, "%s", (*it).c_str());
+ sprintf(transfer_fileNamedir, "/sd/%s", (*it).c_str());
+ sprintf(transfer_fileNamedirCopy, "/sd/c/%s", (*it).c_str());
+ pc.printf("%s", transfer_fileNamedirCopy);
+ FILE *fp = fopen(transfer_fileNamedir, "r");
+ if(fp == NULL) {
+ pc.printf("Could not open file, check disk.\r\n");
+ while(1) {};
+ } else {
+ pc.printf("file opened\r\n");
+ }
+ unsigned char c;
+ uint8_t sendMe[1] = {254};
+ RGB_LED.set_led(0,1,0);
+ //pc.printf("%s\r\n",fp.c_str());
+ microChannel.putc(sendMe[0]);
+ for(int i=0;i<65;i++){
+ microChannel.putc(transfer_fileName[i]);
+ }
+ while (c != 255){ // while not end of file or forever
+ c=fgetc(fp); // get a character/byte from the file
+ //printf("%c",c); // and show it in hex format
+ microChannel.putc(c);
+ //wait(0.005);
+ }
+ //RGB_LED.set_led(1,0,0);
+ printf("\r\n");
+ fclose(fp);
+
+ int status = file_copy(transfer_fileNamedir, transfer_fileNamedirCopy);
+ remove(transfer_fileNamedir);
+ break; // close the file
+ }
+
}
- //RGB_LED.set_led(1,0,0);
- printf("\r\n");
- fclose(fp); // close the file
+
+
+
+};
+
+int file_copy(const char *src, const char *dst)
+{
+ int retval = 0;
+ int ch;
+
+ FILE *fpsrc = fopen(src, "r"); // src file
+ FILE *fpdst = fopen(dst, "w"); // dest file
+ while (1) { // Copy src to dest
+ ch = fgetc(fpsrc); // until src EOF read.
+ if (ch == EOF) break;
+ fputc(ch, fpdst);
+ }
+ fclose(fpsrc);
+ fclose(fpdst);
+
+ fpdst = fopen(dst, "r"); // Reopen dest to insure
+ if (fpdst == NULL) { // that it was created.
+ retval = -1; // Return error.
+ } else {
+ fclose(fpdst);
+ retval = 0; // Return success.
+ }
+ return retval;
};
//////////////////////////////////////////////////////////////
@@ -1016,21 +1084,44 @@
wait(0.5);
}
+ RTC_UPAS.get_time();
gps.read(1);
gpsTime = (long)gps.utc;
gpsDate = (long)gps.date;
-
-
+
time_t seconds = time(NULL);
strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds));
- RTC_UPAS.get_time();
+
+ strftime(yrstr, 4, "%y", localtime(&seconds));
+ stYr = atoi(yrstr);
+
+ strftime(mostr, 4, "%m", localtime(&seconds));
+ stMo = atoi(mostr);
+
+ strftime(daystr, 4, "%d", localtime(&seconds));
+ stDay = atoi(daystr);
+
+ strftime(hrstr, 4, "%H", localtime(&seconds));
+ stHr = atoi(hrstr);
+
+ strftime(minstr, 4, "%M", localtime(&seconds));
+ stMin = atoi(minstr);
+
+ strftime(secstr, 4, "%S", localtime(&seconds));
+ stSec = atoi(secstr);
+
+
+
+
+
if(tempSerialNum < 18){
- sprintf(filename, "/sd/MS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]);
+ sprintf(filename, "/sd/MS%03dLOG_%02d%02d%02d_%02d%02d%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,stYr,stMo,stDay,stHr,stMin,stSec,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]);
}
else{
- sprintf(filename, "/sd/PS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]);
+ sprintf(filename, "/sd/PS%03dLOG_%02d%02d%02d_%02d%02d%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,stYr,stMo,stDay,stHr,stMin,stSec,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]);
+
}
//sprintf(filename, "/sd/UPAS_TboardtestLog_%s_%c%c%c%c%c%c%c%c.txt", timestr,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]);
//sprintf(filename, "/sd/UPAS_TboardtestLog_%s.txt", timestr);
