|
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 |
2 | 2 | This is a preliminary release, work in progress. Misbehaviour is plausible.
|
3 | 3 | AsgardADC.ino - Air Data Computer Firmware
|
4 | 4 | Conform to ADC Common Mesage Set 0.5
|
@@ -1002,14 +1002,61 @@ endread:
|
1002 | 1002 | {
|
1003 | 1003 | strcpy (Answer, "$FMA,PRP");
|
1004 | 1004 | 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); |
1013 | 1060 | }
|
1014 | 1061 | goto endeval;
|
1015 | 1062 | }
|
|
0 commit comments