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: MODSERIAL SDBlockDevice GPS
mbed-os-example-fat-filesystem-master/main.cpp@1:2f617b92078b, 2019-04-12 (annotated)
- Committer:
- QuangAnhLe
- Date:
- Fri Apr 12 17:48:39 2019 +0000
- Revision:
- 1:2f617b92078b
- Parent:
- 0:ee1ae011cba6
- Child:
- 2:3d3d272d2df2
save data
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| QuangAnhLe | 0:ee1ae011cba6 | 1 | #include "mbed.h" |
| QuangAnhLe | 1:2f617b92078b | 2 | #include "GPS.h" |
| QuangAnhLe | 1:2f617b92078b | 3 | #include <iostream> |
| QuangAnhLe | 1:2f617b92078b | 4 | #include <sstream> |
| QuangAnhLe | 1:2f617b92078b | 5 | #include <bitset> |
| QuangAnhLe | 1:2f617b92078b | 6 | #include <string> |
| QuangAnhLe | 0:ee1ae011cba6 | 7 | #include "FATFileSystem.h" |
| QuangAnhLe | 0:ee1ae011cba6 | 8 | //#include "HeapBlockDevice.h" |
| QuangAnhLe | 0:ee1ae011cba6 | 9 | #include "SDBlockDevice.h" |
| QuangAnhLe | 0:ee1ae011cba6 | 10 | #include <stdio.h> |
| QuangAnhLe | 0:ee1ae011cba6 | 11 | #include <errno.h> |
| QuangAnhLe | 0:ee1ae011cba6 | 12 | |
| QuangAnhLe | 0:ee1ae011cba6 | 13 | //HeapBlockDevice bd(128 * 512, 512); |
| QuangAnhLe | 0:ee1ae011cba6 | 14 | //SDBlockDevice bd(PinName mosi, PinName miso, PinName sclk, PinName cs); |
| QuangAnhLe | 0:ee1ae011cba6 | 15 | SDBlockDevice bd(D11, D12, D13, D10); |
| QuangAnhLe | 1:2f617b92078b | 16 | Serial pc(PA_2,PA_3); |
| QuangAnhLe | 1:2f617b92078b | 17 | GPS gps (PA_11,PA_12); |
| QuangAnhLe | 0:ee1ae011cba6 | 18 | |
| QuangAnhLe | 0:ee1ae011cba6 | 19 | FATFileSystem fs("fs"); |
| QuangAnhLe | 0:ee1ae011cba6 | 20 | |
| QuangAnhLe | 0:ee1ae011cba6 | 21 | void return_error(int ret_val){ |
| QuangAnhLe | 0:ee1ae011cba6 | 22 | if (ret_val) |
| QuangAnhLe | 0:ee1ae011cba6 | 23 | printf("Failure. %d\r\n", ret_val); |
| QuangAnhLe | 0:ee1ae011cba6 | 24 | else |
| QuangAnhLe | 0:ee1ae011cba6 | 25 | printf("done.\r\n"); |
| QuangAnhLe | 0:ee1ae011cba6 | 26 | } |
| QuangAnhLe | 1:2f617b92078b | 27 | |
| QuangAnhLe | 0:ee1ae011cba6 | 28 | void errno_error(void* ret_val){ |
| QuangAnhLe | 0:ee1ae011cba6 | 29 | if (ret_val == NULL) |
| QuangAnhLe | 0:ee1ae011cba6 | 30 | printf(" Failure. %d \r\n", errno); |
| QuangAnhLe | 0:ee1ae011cba6 | 31 | else |
| QuangAnhLe | 0:ee1ae011cba6 | 32 | printf(" done.\r\n"); |
| QuangAnhLe | 0:ee1ae011cba6 | 33 | } |
| QuangAnhLe | 1:2f617b92078b | 34 | |
| QuangAnhLe | 0:ee1ae011cba6 | 35 | int main() { |
| QuangAnhLe | 0:ee1ae011cba6 | 36 | int error = 0; |
| QuangAnhLe | 0:ee1ae011cba6 | 37 | printf("Welcome to the filesystem example.\r\n" |
| QuangAnhLe | 0:ee1ae011cba6 | 38 | "Formatting a FAT, RAM-backed filesystem. "); |
| QuangAnhLe | 0:ee1ae011cba6 | 39 | error = FATFileSystem::format(&bd); |
| QuangAnhLe | 0:ee1ae011cba6 | 40 | return_error(error); |
| QuangAnhLe | 1:2f617b92078b | 41 | |
| QuangAnhLe | 0:ee1ae011cba6 | 42 | printf("Mounting the filesystem on \"/fs\". "); |
| QuangAnhLe | 0:ee1ae011cba6 | 43 | error = fs.mount(&bd); |
| QuangAnhLe | 0:ee1ae011cba6 | 44 | return_error(error); |
| QuangAnhLe | 1:2f617b92078b | 45 | |
| QuangAnhLe | 0:ee1ae011cba6 | 46 | printf("Opening a new file, numbers.txt."); |
| QuangAnhLe | 0:ee1ae011cba6 | 47 | FILE* fd = fopen("/fs/numbers.txt", "w"); |
| QuangAnhLe | 0:ee1ae011cba6 | 48 | errno_error(fd); |
| QuangAnhLe | 1:2f617b92078b | 49 | |
| QuangAnhLe | 1:2f617b92078b | 50 | /*for (int i = 0; i < 20; i++){ |
| QuangAnhLe | 0:ee1ae011cba6 | 51 | printf("Writing decimal numbers to a file (%d/20)\r", i); |
| QuangAnhLe | 0:ee1ae011cba6 | 52 | fprintf(fd, "%d\r\n", i); |
| QuangAnhLe | 1:2f617b92078b | 53 | }*/ |
| QuangAnhLe | 1:2f617b92078b | 54 | fprintf(fd,"Latitude, Longitude,Altitude,Speed in knots, Date, Time,Number of satellites being tracked, IDs of satellites ins use, Fix, Fix mode,\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 55 | //printf("Writing decimal numbers to a file (20/20) done.\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 56 | |
| QuangAnhLe | 0:ee1ae011cba6 | 57 | printf("Closing file."); |
| QuangAnhLe | 0:ee1ae011cba6 | 58 | fclose(fd); |
| QuangAnhLe | 0:ee1ae011cba6 | 59 | printf(" done.\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 60 | |
| QuangAnhLe | 0:ee1ae011cba6 | 61 | printf("Re-opening file read-only."); |
| QuangAnhLe | 0:ee1ae011cba6 | 62 | fd = fopen("/fs/numbers.txt", "r"); |
| QuangAnhLe | 0:ee1ae011cba6 | 63 | errno_error(fd); |
| QuangAnhLe | 1:2f617b92078b | 64 | |
| QuangAnhLe | 0:ee1ae011cba6 | 65 | printf("Dumping file to screen.\r\n"); |
| QuangAnhLe | 0:ee1ae011cba6 | 66 | char buff[16] = {0}; |
| QuangAnhLe | 0:ee1ae011cba6 | 67 | while (!feof(fd)){ |
| QuangAnhLe | 0:ee1ae011cba6 | 68 | int size = fread(&buff[0], 1, 15, fd); |
| QuangAnhLe | 0:ee1ae011cba6 | 69 | fwrite(&buff[0], 1, size, stdout); |
| QuangAnhLe | 0:ee1ae011cba6 | 70 | } |
| QuangAnhLe | 0:ee1ae011cba6 | 71 | printf("EOF.\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 72 | |
| QuangAnhLe | 0:ee1ae011cba6 | 73 | printf("Closing file."); |
| QuangAnhLe | 0:ee1ae011cba6 | 74 | fclose(fd); |
| QuangAnhLe | 0:ee1ae011cba6 | 75 | printf(" done.\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 76 | |
| QuangAnhLe | 0:ee1ae011cba6 | 77 | printf("Opening root directory."); |
| QuangAnhLe | 0:ee1ae011cba6 | 78 | DIR* dir = opendir("/fs/"); |
| QuangAnhLe | 0:ee1ae011cba6 | 79 | errno_error(fd); |
| QuangAnhLe | 1:2f617b92078b | 80 | |
| QuangAnhLe | 0:ee1ae011cba6 | 81 | struct dirent* de; |
| QuangAnhLe | 0:ee1ae011cba6 | 82 | printf("Printing all filenames:\r\n"); |
| QuangAnhLe | 0:ee1ae011cba6 | 83 | while((de = readdir(dir)) != NULL){ |
| QuangAnhLe | 0:ee1ae011cba6 | 84 | printf(" %s\r\n", &(de->d_name)[0]); |
| QuangAnhLe | 0:ee1ae011cba6 | 85 | } |
| QuangAnhLe | 1:2f617b92078b | 86 | |
| QuangAnhLe | 0:ee1ae011cba6 | 87 | printf("Closing root directory. "); |
| QuangAnhLe | 0:ee1ae011cba6 | 88 | error = closedir(dir); |
| QuangAnhLe | 0:ee1ae011cba6 | 89 | return_error(error); |
| QuangAnhLe | 0:ee1ae011cba6 | 90 | printf("Filesystem Demo complete.\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 91 | |
| QuangAnhLe | 1:2f617b92078b | 92 | while (true) { |
| QuangAnhLe | 1:2f617b92078b | 93 | pc.printf("\n"); |
| QuangAnhLe | 1:2f617b92078b | 94 | wait(1); |
| QuangAnhLe | 1:2f617b92078b | 95 | if(gps.sample()){ |
| QuangAnhLe | 1:2f617b92078b | 96 | float latitude = gps.latitude; |
| QuangAnhLe | 1:2f617b92078b | 97 | float longitude = gps.longitude; |
| QuangAnhLe | 1:2f617b92078b | 98 | float altitude = gps.altitude; |
| QuangAnhLe | 1:2f617b92078b | 99 | float direction =0.0; |
| QuangAnhLe | 1:2f617b92078b | 100 | float utc = gps.utc+20000; |
| QuangAnhLe | 1:2f617b92078b | 101 | //int sek=gps.sek; |
| QuangAnhLe | 1:2f617b92078b | 102 | //int min=gps.min; |
| QuangAnhLe | 1:2f617b92078b | 103 | //int hour=gps.hour; |
| QuangAnhLe | 1:2f617b92078b | 104 | int sat_tracked=gps. sat_tracked; |
| QuangAnhLe | 1:2f617b92078b | 105 | int fix=gps.fix; |
| QuangAnhLe | 1:2f617b92078b | 106 | int fix_3d=gps.fix_3d; |
| QuangAnhLe | 1:2f617b92078b | 107 | int id1=gps.id1; |
| QuangAnhLe | 1:2f617b92078b | 108 | int id2=gps.id2; |
| QuangAnhLe | 1:2f617b92078b | 109 | int id3=gps.id3; |
| QuangAnhLe | 1:2f617b92078b | 110 | int id4=gps.id4; |
| QuangAnhLe | 1:2f617b92078b | 111 | int id5=gps.id5; |
| QuangAnhLe | 1:2f617b92078b | 112 | int id6=gps.id6; |
| QuangAnhLe | 1:2f617b92078b | 113 | int id7=gps.id7; |
| QuangAnhLe | 1:2f617b92078b | 114 | int id8=gps.id8; |
| QuangAnhLe | 1:2f617b92078b | 115 | int id9=gps.id9; |
| QuangAnhLe | 1:2f617b92078b | 116 | int id10=gps.id10; |
| QuangAnhLe | 1:2f617b92078b | 117 | int id11=gps.id11; |
| QuangAnhLe | 1:2f617b92078b | 118 | int id12=gps.id12; |
| QuangAnhLe | 1:2f617b92078b | 119 | double hdop=gps.hdop; |
| QuangAnhLe | 1:2f617b92078b | 120 | double pdop=gps.pdop; |
| QuangAnhLe | 1:2f617b92078b | 121 | float speed=gps.speed; |
| QuangAnhLe | 1:2f617b92078b | 122 | int date=gps.date; |
| QuangAnhLe | 1:2f617b92078b | 123 | //char aut=gps.aut; |
| QuangAnhLe | 1:2f617b92078b | 124 | //float vdop=gps.vdop; |
| QuangAnhLe | 1:2f617b92078b | 125 | //int chek_data=gps.check_data; |
| QuangAnhLe | 1:2f617b92078b | 126 | /*pc.printf("Latitude, Longitude,Altitude, Direction, Speed in knots, Date, Time, Satellites in use, Satellites in view, IDs of satellites ins use, Fix, Fix mode, PDOP, HDOP\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 127 | pc.printf("%0.6f,%0.6f,%0.3f,%0.2f,%0.2f,%d,%0.0f,%d,",latitude,longitude,altitude,direction,speed,date,utc, sat_tracked); |
| QuangAnhLe | 1:2f617b92078b | 128 | pc.printf("%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d,",id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12); |
| QuangAnhLe | 1:2f617b92078b | 129 | pc.printf("%d,%d,%.2f,%.2f\r\n",fix,fix_3d,pdop,hdop);*/ |
| QuangAnhLe | 1:2f617b92078b | 130 | //pc.printf("%d",date); |
| QuangAnhLe | 1:2f617b92078b | 131 | pc.printf("Latitude: %0.6f\r\n",latitude); |
| QuangAnhLe | 1:2f617b92078b | 132 | pc.printf("Longitude:%0.6f\r\n",longitude); |
| QuangAnhLe | 1:2f617b92078b | 133 | pc.printf("Altitude: %0.3f\r\n",altitude); |
| QuangAnhLe | 1:2f617b92078b | 134 | pc.printf("Speed in knots: %0.2f\r\n",speed); |
| QuangAnhLe | 1:2f617b92078b | 135 | pc.printf("Date: %d\r\n",date); |
| QuangAnhLe | 1:2f617b92078b | 136 | pc.printf("Time UTC: %0.0f\r\n",utc); |
| QuangAnhLe | 1:2f617b92078b | 137 | pc.printf("Number of satellites being tracked: %d\r\n", sat_tracked); |
| QuangAnhLe | 1:2f617b92078b | 138 | pc.printf("PRNs of satellites used for fix:\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 139 | pc.printf("ID1:%d,ID2:%d,ID3:%d,ID4:%d,ID5:%d,ID6:%d\r\n",id1,id2,id3,id4,id5,id6); |
| QuangAnhLe | 1:2f617b92078b | 140 | pc.printf("ID7:%d,ID8:%d,ID9:%d,ID10:%d,ID11:%d,ID12:%d\r\n",id7,id8,id9,id10,id11,id12); |
| QuangAnhLe | 1:2f617b92078b | 141 | pc.printf("Fix quality: %d - value include 0=invalid; 1=GPS fix\r\n",fix); |
| QuangAnhLe | 1:2f617b92078b | 142 | pc.printf("3D fix: %d - value include: 1 = no fix, 2 = 2D fix, 3 = 3D fix\r\n\n", fix_3d); |
| QuangAnhLe | 1:2f617b92078b | 143 | pc.printf("****************************************************************\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 144 | |
| QuangAnhLe | 1:2f617b92078b | 145 | FILE* fd = fopen("/fs/numbers.txt", "a+"); |
| QuangAnhLe | 1:2f617b92078b | 146 | errno_error(fd); |
| QuangAnhLe | 1:2f617b92078b | 147 | |
| QuangAnhLe | 1:2f617b92078b | 148 | /*for (int i = 0; i < 20; i++){ |
| QuangAnhLe | 1:2f617b92078b | 149 | printf("Writing decimal numbers to a file (%d/20)\r", i); |
| QuangAnhLe | 1:2f617b92078b | 150 | fprintf(fd, "%d\r\n", i); |
| QuangAnhLe | 1:2f617b92078b | 151 | }*/ |
| QuangAnhLe | 1:2f617b92078b | 152 | //fprintf(fd,"Latitude, Longitude,Altitude,Speed in knots, Date, Time,Number of satellites being tracked, IDs of satellites ins use, Fix, Fix mode,\r\n"); |
| QuangAnhLe | 1:2f617b92078b | 153 | fprintf(fd,"%0.6f,%0.6f,%0.3f,%0.2f,%d,%0.0f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",latitude, longitude, altitude, speed, date, utc, sat_tracked, id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12, fix,fix_3d); |
| QuangAnhLe | 1:2f617b92078b | 154 | } |
| QuangAnhLe | 0:ee1ae011cba6 | 155 | } |
| QuangAnhLe | 1:2f617b92078b | 156 | } |