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: SoftSerial MAX14690 Buffer
Fork of rtos_threading_with_callback by
sdLogger/sdLogger.cpp
- Committer:
- lwehmeier
- Date:
- 2018-02-25
- Revision:
- 2:bf699e054b34
- Child:
- 3:d7ec6dc025b0
File content as of revision 2:bf699e054b34:
#include "mbed.h" #include "rtos.h" #include "global.h" #include <stdio.h> #include <errno.h> #include "SDBlockDevice.h" #include "LittleFileSystem.h" #include "FATFileSystem.h" static void return_error(int ret_val){ if (ret_val) printf("SD: Failure. %d\r\n", ret_val); else printf("SD: done.\r\n"); } static void errno_error(void* ret_val){ if (ret_val == NULL) printf("SD: Failure. %d \r\n", errno); else printf("SD: done.\r\n"); } class SDLogger { public: static void run() { for (;;) { char buffer[200]; sprintf(buffer, "Pressure: %4.1f \t Temperature: %3.2f\t Altitude: %4.1f\r\nACC1:%2.1f;%2.1f;%2.1f\r\nACC2:%2.1f;%2.1f;%2.1f\r\n", pressure, temperature, altitude, (acc1[0]), (acc1[1]), (acc1[2]),(acc2[0]), (acc2[1]), (acc2[2])); SD_appendData(buffer); rtos::Thread::wait(6000);//10 datasets per minute. TODO: log current system time } } SDLogger() { testSD(); registerThread(SDLogger::run); } static void testSD() { printf("SD: Mounting the filesystem on \"/fs\". "); int error = fs.mount(&bd); return_error(error); printf("SD: Opening a new file, numbers.txt."); FILE* fd = fopen("/fs/numbers.txt", "w"); errno_error(fd); for (int i = 0; i < 20; i++){ printf("SD: Writing decimal numbers to a file (%d/20)\r", i); fprintf(fd, "%d\r\n", i); } printf("SD: Writing decimal numbers to a file (20/20) done.\r\n"); printf("SD: Closing file.\r\n"); fclose(fd); printf("SD: done.\r\n"); } static void SD_appendData(char* data) { printf("SD: Opening file data.txt.\r\n"); FILE* fd = fopen("/fs/data.txt", "w+"); errno_error(fd); fprintf(fd, "%s", data); printf("SD: Writing done.\r\n"); printf("SD: Closing file.\r\n"); fclose(fd); printf("SD: done.\r\n"); } static SDBlockDevice bd;//PinName mosi, PinName miso, PinName sclk, PinName cs static FATFileSystem fs; }; SDBlockDevice SDLogger::bd(P0_5, P0_6, P0_4, P0_7); FATFileSystem SDLogger::fs("fs"); // some witchcraft to register run function without touching anything outside our library static SDLogger _dummy;