Leon Wehmeier / Mbed OS fiasco_max32630

Dependencies:   SoftSerial MAX14690 Buffer

Fork of rtos_threading_with_callback by mbed_example

Committer:
lwehmeier
Date:
Fri Mar 30 10:32:10 2018 +0000
Revision:
3:d7ec6dc025b0
Parent:
2:bf699e054b34
implemented basic GPS read support, freed serial connection for uart jpg camera module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lwehmeier 2:bf699e054b34 1 #include "mbed.h"
lwehmeier 2:bf699e054b34 2 #include "rtos.h"
lwehmeier 2:bf699e054b34 3 #include "global.h"
lwehmeier 2:bf699e054b34 4 #include <stdio.h>
lwehmeier 2:bf699e054b34 5 #include <errno.h>
lwehmeier 2:bf699e054b34 6 #include "SDBlockDevice.h"
lwehmeier 2:bf699e054b34 7 #include "LittleFileSystem.h"
lwehmeier 2:bf699e054b34 8 #include "FATFileSystem.h"
lwehmeier 3:d7ec6dc025b0 9 #include "logger.h"
lwehmeier 2:bf699e054b34 10
lwehmeier 2:bf699e054b34 11 static void return_error(int ret_val){
lwehmeier 2:bf699e054b34 12 if (ret_val)
lwehmeier 2:bf699e054b34 13 printf("SD: Failure. %d\r\n", ret_val);
lwehmeier 3:d7ec6dc025b0 14 //else
lwehmeier 3:d7ec6dc025b0 15 //printf("SD: done.\r\n");
lwehmeier 2:bf699e054b34 16 }
lwehmeier 2:bf699e054b34 17
lwehmeier 2:bf699e054b34 18 static void errno_error(void* ret_val){
lwehmeier 2:bf699e054b34 19 if (ret_val == NULL)
lwehmeier 2:bf699e054b34 20 printf("SD: Failure. %d \r\n", errno);
lwehmeier 3:d7ec6dc025b0 21 //else
lwehmeier 3:d7ec6dc025b0 22 //printf("SD: done.\r\n");
lwehmeier 2:bf699e054b34 23 }
lwehmeier 2:bf699e054b34 24 class SDLogger
lwehmeier 2:bf699e054b34 25 {
lwehmeier 2:bf699e054b34 26 public:
lwehmeier 2:bf699e054b34 27 static void run()
lwehmeier 2:bf699e054b34 28 {
lwehmeier 2:bf699e054b34 29 for (;;) {
lwehmeier 3:d7ec6dc025b0 30 //char buffer[200];
lwehmeier 3:d7ec6dc025b0 31 //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]));
lwehmeier 3:d7ec6dc025b0 32 char* msg = (char*) Logger::q.get(osWaitForever).value.p;
lwehmeier 3:d7ec6dc025b0 33 SD_appendData(msg);
lwehmeier 3:d7ec6dc025b0 34 delete[] msg;
lwehmeier 2:bf699e054b34 35 rtos::Thread::wait(6000);//10 datasets per minute. TODO: log current system time
lwehmeier 2:bf699e054b34 36 }
lwehmeier 2:bf699e054b34 37 }
lwehmeier 2:bf699e054b34 38 SDLogger()
lwehmeier 2:bf699e054b34 39 {
lwehmeier 2:bf699e054b34 40 testSD();
lwehmeier 2:bf699e054b34 41 registerThread(SDLogger::run);
lwehmeier 2:bf699e054b34 42 }
lwehmeier 2:bf699e054b34 43 static void testSD()
lwehmeier 2:bf699e054b34 44 {
lwehmeier 2:bf699e054b34 45 printf("SD: Mounting the filesystem on \"/fs\". ");
lwehmeier 2:bf699e054b34 46 int error = fs.mount(&bd);
lwehmeier 2:bf699e054b34 47 return_error(error);
lwehmeier 2:bf699e054b34 48
lwehmeier 2:bf699e054b34 49 printf("SD: Opening a new file, numbers.txt.");
lwehmeier 2:bf699e054b34 50 FILE* fd = fopen("/fs/numbers.txt", "w");
lwehmeier 2:bf699e054b34 51 errno_error(fd);
lwehmeier 2:bf699e054b34 52
lwehmeier 2:bf699e054b34 53 for (int i = 0; i < 20; i++){
lwehmeier 2:bf699e054b34 54 printf("SD: Writing decimal numbers to a file (%d/20)\r", i);
lwehmeier 2:bf699e054b34 55 fprintf(fd, "%d\r\n", i);
lwehmeier 2:bf699e054b34 56 }
lwehmeier 2:bf699e054b34 57 printf("SD: Writing decimal numbers to a file (20/20) done.\r\n");
lwehmeier 2:bf699e054b34 58
lwehmeier 2:bf699e054b34 59 printf("SD: Closing file.\r\n");
lwehmeier 2:bf699e054b34 60 fclose(fd);
lwehmeier 2:bf699e054b34 61 printf("SD: done.\r\n");
lwehmeier 2:bf699e054b34 62 }
lwehmeier 3:d7ec6dc025b0 63 static void SD_appendData(const char* data)
lwehmeier 2:bf699e054b34 64 {
lwehmeier 2:bf699e054b34 65
lwehmeier 3:d7ec6dc025b0 66 //printf("SD: Opening file data.txt.\r\n");
lwehmeier 2:bf699e054b34 67 FILE* fd = fopen("/fs/data.txt", "w+");
lwehmeier 2:bf699e054b34 68 errno_error(fd);
lwehmeier 2:bf699e054b34 69
lwehmeier 2:bf699e054b34 70 fprintf(fd, "%s", data);
lwehmeier 3:d7ec6dc025b0 71 //printf("SD: Writing done.\r\n");
lwehmeier 2:bf699e054b34 72
lwehmeier 3:d7ec6dc025b0 73 //printf("SD: Closing file.\r\n");
lwehmeier 2:bf699e054b34 74 fclose(fd);
lwehmeier 3:d7ec6dc025b0 75 //printf("SD: done.\r\n");
lwehmeier 2:bf699e054b34 76 }
lwehmeier 2:bf699e054b34 77 static SDBlockDevice bd;//PinName mosi, PinName miso, PinName sclk, PinName cs
lwehmeier 2:bf699e054b34 78 static FATFileSystem fs;
lwehmeier 2:bf699e054b34 79 };
lwehmeier 2:bf699e054b34 80 SDBlockDevice SDLogger::bd(P0_5, P0_6, P0_4, P0_7);
lwehmeier 2:bf699e054b34 81 FATFileSystem SDLogger::fs("fs");
lwehmeier 2:bf699e054b34 82
lwehmeier 2:bf699e054b34 83 // some witchcraft to register run function without touching anything outside our library
lwehmeier 2:bf699e054b34 84 static SDLogger _dummy;