Skip to content

Commit 01faac4

Browse files
Add file timestamp in the FMA,PRP message
1 parent fbdb2b7 commit 01faac4

File tree

2 files changed

+56
-9
lines changed

2 files changed

+56
-9
lines changed
Binary file not shown.

Software/Microcontroller/Firmware/AsgardADC/AsgardADC.ino

+56-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Work in progress Asgard ADC Firmware Relase 0.5.0 06/02/2018
1+
/* Work in progress Asgard ADC Firmware Relase 0.5.0 08/02/2018
22
This is a preliminary release, work in progress. Misbehaviour is plausible.
33
AsgardADC.ino - Air Data Computer Firmware
44
Conform to ADC Common Mesage Set 0.5
@@ -1002,14 +1002,61 @@ endread:
10021002
{
10031003
strcpy (Answer, "$FMA,PRP");
10041004
if (!isSDCardPresent) goto endeval;
1005-
if (SD.exists(param)) { // if file exists
1006-
dir = SD.open(param);
1007-
strcat (Answer, SEPARATOR);
1008-
strcat (Answer, dir.name()); // Send out filename
1009-
strcat (Answer, SEPARATOR);
1010-
ltoa(dir.size(), workbuff, 10);
1011-
strcat (Answer, workbuff); // Send out file size
1012-
dir.close();
1005+
1006+
SdFile root;
1007+
root.openRoot(volume);
1008+
dir_t p;
1009+
char* pfilename;
1010+
uint8_t result;
1011+
tmElements_t ts;
1012+
1013+
root.rewind();
1014+
result = root.readDir(&p);
1015+
while (result) {
1016+
if (!(p.attributes & (0X08 | 0X10))) { // if the entry is a file, not a subdir
1017+
pfilename = (char*)&p.name[0];
1018+
if (*pfilename != '.') {
1019+
char fname[14];
1020+
int fi = 0;
1021+
for (int i = 0; i < 8; i++) {
1022+
if (pfilename[i] != ' ') {
1023+
fname[fi] = pfilename[i];
1024+
fi++;
1025+
}
1026+
}
1027+
fname[fi] = '.';
1028+
fi++;
1029+
for (int i = 8; i < 11; i++) {
1030+
if (pfilename[i] != ' ') {
1031+
fname[fi] = pfilename[i];
1032+
fi++;
1033+
}
1034+
}
1035+
fname[fi] = '\0';
1036+
1037+
if (!strcmp(param, fname)) {
1038+
// File found!
1039+
strcat (Answer, SEPARATOR);
1040+
strcat (Answer, fname);
1041+
strcat (Answer, SEPARATOR);
1042+
ltoa(p.fileSize, workbuff, 10);
1043+
strcat (Answer, workbuff); // Send out file size
1044+
strcat (Answer, SEPARATOR);
1045+
1046+
ts.Year = 10 + (p.creationDate >> 9); // YEAR
1047+
ts.Month = (p.creationDate >> 5) & 0XF; // MONTH
1048+
ts.Day = p.creationDate & 0X1F; // DAY
1049+
ts.Hour = p.creationTime >> 11; // HOUR
1050+
ts.Minute = (p.creationTime >> 5) & 0X3F; // MINUTE
1051+
ts.Second = 2*(p.creationTime & 0X1F); // SECOND
1052+
1053+
ultoa(makeTime(ts), workbuff, 10);
1054+
strcat (Answer, workbuff); // Send out file size
1055+
break;
1056+
}
1057+
}
1058+
}
1059+
result = root.readDir(&p);
10131060
}
10141061
goto endeval;
10151062
}

0 commit comments

Comments
 (0)