assignment

Dependencies:   BSP_B-L475E-IOT01

Committer:
alessioburatti
Date:
Thu Dec 06 17:58:45 2018 +0000
Revision:
2:9f79d287d898
Parent:
1:14aa85a5009a
done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alessioburatti 0:746ae63195a5 1
alessioburatti 0:746ae63195a5 2 #include "mbed.h"
alessioburatti 0:746ae63195a5 3 #include <stdio.h>
alessioburatti 0:746ae63195a5 4 #include <errno.h>
alessioburatti 2:9f79d287d898 5 #include "stm32l475e_iot01_tsensor.h"
alessioburatti 2:9f79d287d898 6 #include "nvstore.h"
alessioburatti 0:746ae63195a5 7
alessioburatti 0:746ae63195a5 8 // Block devices
alessioburatti 0:746ae63195a5 9 #if COMPONENT_SPIF
alessioburatti 0:746ae63195a5 10 #include "SPIFBlockDevice.h"
alessioburatti 0:746ae63195a5 11 #endif
alessioburatti 0:746ae63195a5 12
alessioburatti 0:746ae63195a5 13 #if COMPONENT_DATAFLASH
alessioburatti 0:746ae63195a5 14 #include "DataFlashBlockDevice.h"
alessioburatti 0:746ae63195a5 15 #endif
alessioburatti 0:746ae63195a5 16
alessioburatti 0:746ae63195a5 17 #if COMPONENT_SD
alessioburatti 0:746ae63195a5 18 #include "SDBlockDevice.h"
alessioburatti 0:746ae63195a5 19 #endif
alessioburatti 0:746ae63195a5 20
alessioburatti 0:746ae63195a5 21 #include "HeapBlockDevice.h"
alessioburatti 0:746ae63195a5 22 // File systems
alessioburatti 0:746ae63195a5 23 #include "LittleFileSystem.h"
alessioburatti 0:746ae63195a5 24 #include "FATFileSystem.h"
alessioburatti 0:746ae63195a5 25
alessioburatti 2:9f79d287d898 26 EventQueue queue(32 * EVENTS_EVENT_SIZE);
alessioburatti 2:9f79d287d898 27 Thread t;
alessioburatti 2:9f79d287d898 28 Ticker tTicker;
alessioburatti 2:9f79d287d898 29
alessioburatti 2:9f79d287d898 30
alessioburatti 0:746ae63195a5 31 // Physical block device, can be any device that supports the BlockDevice API
alessioburatti 0:746ae63195a5 32 /*SPIFBlockDevice bd(
alessioburatti 0:746ae63195a5 33 MBED_CONF_SPIF_DRIVER_SPI_MOSI,
alessioburatti 0:746ae63195a5 34 MBED_CONF_SPIF_DRIVER_SPI_MISO,
alessioburatti 0:746ae63195a5 35 MBED_CONF_SPIF_DRIVER_SPI_CLK,
alessioburatti 0:746ae63195a5 36 MBED_CONF_SPIF_DRIVER_SPI_CS);*/
alessioburatti 0:746ae63195a5 37
alessioburatti 0:746ae63195a5 38 #define BLOCK_SIZE 512
alessioburatti 0:746ae63195a5 39 HeapBlockDevice bd(16384, BLOCK_SIZE);
alessioburatti 0:746ae63195a5 40
alessioburatti 0:746ae63195a5 41 // File system declaration
alessioburatti 0:746ae63195a5 42 LittleFileSystem fs("fs");
alessioburatti 0:746ae63195a5 43
alessioburatti 2:9f79d287d898 44 InterruptIn button(USER_BUTTON);
alessioburatti 2:9f79d287d898 45
alessioburatti 0:746ae63195a5 46
alessioburatti 0:746ae63195a5 47 static FILE *f;
alessioburatti 0:746ae63195a5 48 volatile int counter = 0;
alessioburatti 0:746ae63195a5 49
alessioburatti 2:9f79d287d898 50 void saveTemperature() {
alessioburatti 2:9f79d287d898 51 float temperature = 0;
alessioburatti 2:9f79d287d898 52 temperature = BSP_TSENSOR_ReadTemp();
alessioburatti 2:9f79d287d898 53 fprintf(f, "%f\n", temperature);
alessioburatti 2:9f79d287d898 54 fflush(f);
alessioburatti 2:9f79d287d898 55 fflush(stdout);
alessioburatti 2:9f79d287d898 56 }
alessioburatti 0:746ae63195a5 57
alessioburatti 0:746ae63195a5 58 void printTemperatures() {
alessioburatti 0:746ae63195a5 59 fflush(stdout);
alessioburatti 0:746ae63195a5 60 fflush(f);
alessioburatti 0:746ae63195a5 61 fseek(f, 0, SEEK_SET);
alessioburatti 0:746ae63195a5 62 float temperature;
alessioburatti 2:9f79d287d898 63 while(!feof(f)) {
alessioburatti 0:746ae63195a5 64 fscanf(f, "%f", &temperature);
alessioburatti 0:746ae63195a5 65 printf("Temperature: %f\n", temperature);
alessioburatti 0:746ae63195a5 66 }
alessioburatti 0:746ae63195a5 67 fflush(stdout);
alessioburatti 0:746ae63195a5 68 }
alessioburatti 0:746ae63195a5 69
alessioburatti 2:9f79d287d898 70
alessioburatti 2:9f79d287d898 71 void getTempQueueCall() {
alessioburatti 2:9f79d287d898 72 queue.call(printTemperatures);
alessioburatti 2:9f79d287d898 73 }
alessioburatti 2:9f79d287d898 74 void tickerBlock() {
alessioburatti 2:9f79d287d898 75 queue.call(saveTemperature);
alessioburatti 1:14aa85a5009a 76 }
alessioburatti 1:14aa85a5009a 77
alessioburatti 2:9f79d287d898 78 // Entry point for the example
alessioburatti 2:9f79d287d898 79 int main() {
alessioburatti 0:746ae63195a5 80 t.start(callback(&queue, &EventQueue::dispatch_forever));
alessioburatti 0:746ae63195a5 81 BSP_TSENSOR_Init();
alessioburatti 2:9f79d287d898 82
alessioburatti 2:9f79d287d898 83 button.rise(&getTempQueueCall);
alessioburatti 2:9f79d287d898 84
alessioburatti 2:9f79d287d898 85 printf("--- Mbed OS filesystem example ---\n");
alessioburatti 2:9f79d287d898 86
alessioburatti 0:746ae63195a5 87 // Try to mount the filesystem
alessioburatti 0:746ae63195a5 88 printf("Mounting the filesystem... ");
alessioburatti 0:746ae63195a5 89 fflush(stdout);
alessioburatti 0:746ae63195a5 90 int err = fs.mount(&bd);
alessioburatti 0:746ae63195a5 91 printf("%s\n", (err ? "Fail :(" : "OK"));
alessioburatti 0:746ae63195a5 92 if (err) {
alessioburatti 0:746ae63195a5 93 // Reformat if we can't mount the filesystem
alessioburatti 0:746ae63195a5 94 // this should only happen on the first boot
alessioburatti 0:746ae63195a5 95 printf("No filesystem found, formatting... ");
alessioburatti 0:746ae63195a5 96 fflush(stdout);
alessioburatti 0:746ae63195a5 97 err = fs.reformat(&bd);
alessioburatti 0:746ae63195a5 98 printf("%s\n", (err ? "Fail :(" : "OK"));
alessioburatti 0:746ae63195a5 99 if (err) {
alessioburatti 0:746ae63195a5 100 error("error: %s (%d)\n", strerror(-err), err);
alessioburatti 0:746ae63195a5 101 }
alessioburatti 0:746ae63195a5 102 }
alessioburatti 0:746ae63195a5 103
alessioburatti 0:746ae63195a5 104 // Open the numbers file
alessioburatti 0:746ae63195a5 105 printf("Opening \"/fs/numbers.txt\"... ");
alessioburatti 0:746ae63195a5 106 fflush(stdout);
alessioburatti 0:746ae63195a5 107 f = fopen("/fs/numbers.txt", "r+");
alessioburatti 0:746ae63195a5 108 printf("%s\n", (!f ? "Fail :(" : "OK"));
alessioburatti 0:746ae63195a5 109 if (!f) {
alessioburatti 0:746ae63195a5 110 // Create the numbers file if it doesn't exist
alessioburatti 0:746ae63195a5 111 printf("No file found, creating a new file... ");
alessioburatti 0:746ae63195a5 112 fflush(stdout);
alessioburatti 0:746ae63195a5 113 f = fopen("/fs/numbers.txt", "w+");
alessioburatti 0:746ae63195a5 114 printf("%s\n", (!f ? "Fail :(" : "OK"));
alessioburatti 0:746ae63195a5 115 if (!f) {
alessioburatti 0:746ae63195a5 116 error("error: %s (%d)\n", strerror(errno), -errno);
alessioburatti 0:746ae63195a5 117 }
alessioburatti 2:9f79d287d898 118
alessioburatti 2:9f79d287d898 119 printf("Seeking file... ");
alessioburatti 2:9f79d287d898 120 fflush(stdout);
alessioburatti 2:9f79d287d898 121 err = fseek(f, 0, SEEK_SET);
alessioburatti 2:9f79d287d898 122 printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
alessioburatti 2:9f79d287d898 123 if (err < 0) {
alessioburatti 2:9f79d287d898 124 error("error: %s (%d)\n", strerror(errno), -errno);
alessioburatti 2:9f79d287d898 125 }
alessioburatti 0:746ae63195a5 126 }
alessioburatti 0:746ae63195a5 127
alessioburatti 0:746ae63195a5 128 tTicker.attach(&tickerBlock, 60);
alessioburatti 2:9f79d287d898 129
alessioburatti 0:746ae63195a5 130 }