assignment

Dependencies:   BSP_B-L475E-IOT01

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