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: IOTAtelier1819-FileSystem BSP_B-L475E-IOT01
Revision 27:6961ff206736, committed 2018-12-06
- Comitter:
- frunzl
- Date:
- Thu Dec 06 12:15:42 2018 +0000
- Parent:
- 26:130bb1173866
- Commit message:
- bbbb
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_B-L475E-IOT01.lib Thu Dec 06 12:15:42 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/ST/code/BSP_B-L475E-IOT01/#9dfa42666f03
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOTAtelier1819-FileSystem.lib Thu Dec 06 12:15:42 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/lmottola/code/IOTAtelier1819-FileSystem/#130bb1173866
--- a/main.cpp Fri Nov 23 09:15:36 2018 +0000
+++ b/main.cpp Thu Dec 06 12:15:42 2018 +0000
@@ -21,6 +21,7 @@
// File systems
#include "LittleFileSystem.h"
#include "FATFileSystem.h"
+#include "stm32l475e_iot01_accelero.h"
// Physical block device, can be any device that supports the BlockDevice API
/*SPIFBlockDevice bd(
@@ -29,8 +30,16 @@
MBED_CONF_SPIF_DRIVER_SPI_CLK,
MBED_CONF_SPIF_DRIVER_SPI_CS);*/
+DigitalOut led_1(LED1);
+DigitalOut led_2(LED2);
+DigitalOut led_3(LED3);
+Ticker toggle_led_ticker;
+
+EventQueue queue(32 * EVENTS_EVENT_SIZE);
+Thread t;
+
#define BLOCK_SIZE 512
-HeapBlockDevice bd(2048, BLOCK_SIZE);
+HeapBlockDevice bd(16384, BLOCK_SIZE);
// File system declaration
LittleFileSystem fs("fs");
@@ -63,9 +72,92 @@
}
}
+static FILE *f;
+volatile int counter = 0;
+
+void get_data_from_sensors() {
+ int16_t pDataXYZ[3] = {0};
+ BSP_ACCELERO_AccGetXYZ(pDataXYZ);
+ if (abs(pDataXYZ[0]) > 900) {
+ fprintf(f, "%d\n", 1);
+ } else if (abs(pDataXYZ[1]) > 900) {
+ fprintf(f, "%d\n", 2);
+ } else if (abs(pDataXYZ[2]) > 900) {
+ fprintf(f, "%d\n", 3);
+ } else {
+ fprintf(f, "%d\n", -1);
+ }
+ fflush(f);
+ fflush(stdout);
+}
+
+void read_data_from_file() {
+ int led1 = 0;
+ int led2 = 0;
+ int led3 = 0;
+ fflush(stdout);
+ fflush(f);
+
+ fseek(f, 0, SEEK_SET);
+ int number;
+ while (!feof(f)) {
+ fscanf(f, "%d", &number);
+ if (number == 1) {
+ led3 +=1;
+ } else if(number == 2) {
+ led2 +=1;
+ } else if(number == 3) {
+ led1 +=1;
+ }
+ }
+
+ // Z Horizontal LED1, X short LED3, Y long LED2
+ if (led1 >= led2 && led1 >= led3) {
+ led_1 = 1;
+ led_2 = 0;
+ led_3 = 0;
+ } else if (led2 >= led1 && led2 >= led3 ) {
+ led_1 = 0;
+ led_2 = 1;
+ led_3 = 0;
+ } else if (led3 >= led1 && led3 >= led2) {
+ led_1 = 0;
+ led_2 = 0;
+ led_3 = 1;
+ }
+
+ fflush(stdout);
+ int err = fclose(f);
+ printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+ if (err < 0) {
+ error("error: %s (%d)\n", strerror(err), -err);
+ }
+ err = fs.unmount();
+ printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+ if (err < 0) {
+ error("error: %s (%d)\n", strerror(-err), err);
+ }
+
+ printf("Mbed OS filesystem example done!\n");
+
+}
+
+void toggle_led() {
+ queue.call(get_data_from_sensors);
+ counter++;
+ if (counter == 100*10) {
+ toggle_led_ticker.detach();
+ queue.call(read_data_from_file);
+ }
+
+}
// Entry point for the example
int main() {
+ t.start(callback(&queue, &EventQueue::dispatch_forever));
+ BSP_ACCELERO_Init();
+
+
printf("--- Mbed OS filesystem example ---\n");
// Setup the erase event on button press, use the event queue
@@ -92,7 +184,7 @@
// Open the numbers file
printf("Opening \"/fs/numbers.txt\"... ");
fflush(stdout);
- FILE *f = fopen("/fs/numbers.txt", "r+");
+ f = fopen("/fs/numbers.txt", "r +");
printf("%s\n", (!f ? "Fail :(" : "OK"));
if (!f) {
// Create the numbers file if it doesn't exist
@@ -104,16 +196,16 @@
error("error: %s (%d)\n", strerror(errno), -errno);
}
- for (int i = 0; i < 10; i++) {
- printf("\rWriting numbers (%d/%d)... ", i, 10);
- fflush(stdout);
- err = fprintf(f, " %d\n", i);
- if (err < 0) {
- printf("Fail :(\n");
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
- }
- printf("\rWriting numbers (%d/%d)... OK\n", 10, 10);
+ // for (int i = 0; i < 10; i++) {
+// printf("\rWriting numbers (%d/%d)... ", i, 10);
+// fflush(stdout);
+// err = fprintf(f, " %d\n", i);
+// if (err < 0) {
+// printf("Fail :(\n");
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+// }
+// printf("\rWriting numbers (%d/%d)... OK\n", 10, 10);
printf("Seeking file... ");
fflush(stdout);
@@ -123,99 +215,102 @@
error("error: %s (%d)\n", strerror(errno), -errno);
}
}
-
- // Go through and increment the numbers
- for (int i = 0; i < 10; i++) {
- printf("\rIncrementing numbers (%d/%d)... ", i, 10);
- fflush(stdout);
-
- // Get current stream position
- long pos = ftell(f);
+
+ // Go through and record the acc
+ toggle_led_ticker.attach(&toggle_led, 0.01);
- // Parse out the number and increment
- int32_t number;
- fscanf(f, "%d", &number);
- number += 1;
-
- // Seek to beginning of number
- fseek(f, pos, SEEK_SET);
- // Store number
- fprintf(f, " %d\n", number);
-
- // Flush between write and read on same file
- fflush(f);
- }
- printf("\rIncrementing numbers (%d/%d)... OK\n", 10, 10);
+// for (int i = 0; i < 10; i++) {
+// printf("\rIncrementing numbers (%d/%d)... ", i, 10);
+// fflush(stdout);
+//
+// // Get current stream position
+// long pos = ftell(f);
+//
+// // Parse out the number and increment
+// int32_t number;
+// fscanf(f, "%d", &number);
+// number += 1;
+//
+// // Seek to beginning of number
+// fseek(f, pos, SEEK_SET);
+//
+// // Store number
+// fprintf(f, " %d\n", number);
+//
+// // Flush between write and read on same file
+// fflush(f);
+// }
+// printf("\rIncrementing numbers (%d/%d)... OK\n", 10, 10);
// Close the file which also flushes any cached writes
- printf("Closing \"/fs/numbers.txt\"... ");
- fflush(stdout);
- err = fclose(f);
- printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
- if (err < 0) {
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
-
- // Display the root directory
- printf("Opening the root directory... ");
- fflush(stdout);
- DIR *d = opendir("/fs/");
- printf("%s\n", (!d ? "Fail :(" : "OK"));
- if (!d) {
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
-
- printf("root directory:\n");
- while (true) {
- struct dirent *e = readdir(d);
- if (!e) {
- break;
- }
-
- printf(" %s\n", e->d_name);
- }
-
- printf("Closing the root directory... ");
- fflush(stdout);
- err = closedir(d);
- printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
- if (err < 0) {
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
-
- // Display the numbers file
- printf("Opening \"/fs/numbers.txt\"... ");
- fflush(stdout);
- f = fopen("/fs/numbers.txt", "r");
- printf("%s\n", (!f ? "Fail :(" : "OK"));
- if (!f) {
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
-
- printf("numbers:\n");
- while (!feof(f)) {
- int c = fgetc(f);
- printf("%c", c);
- }
-
- printf("\rClosing \"/fs/numbers.txt\"... ");
- fflush(stdout);
- err = fclose(f);
- printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
- if (err < 0) {
- error("error: %s (%d)\n", strerror(errno), -errno);
- }
-
- // Tidy up
- printf("Unmounting... ");
- fflush(stdout);
- err = fs.unmount();
- printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
- if (err < 0) {
- error("error: %s (%d)\n", strerror(-err), err);
- }
-
- printf("Mbed OS filesystem example done!\n");
+ //printf("Closing \"/fs/numbers.txt\"... ");
+// fflush(stdout);
+// err = fclose(f);
+// printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+// if (err < 0) {
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+//
+// // Display the root directory
+// printf("Opening the root directory... ");
+// fflush(stdout);
+// DIR *d = opendir("/fs/");
+// printf("%s\n", (!d ? "Fail :(" : "OK"));
+// if (!d) {
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+//
+// printf("root directory:\n");
+// while (true) {
+// struct dirent *e = readdir(d);
+// if (!e) {
+// break;
+// }
+//
+// printf(" %s\n", e->d_name);
+// }
+//
+// printf("Closing the root directory... ");
+// fflush(stdout);
+// err = closedir(d);
+// printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+// if (err < 0) {
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+//
+// // Display the numbers file
+// printf("Opening \"/fs/numbers.txt\"... ");
+// fflush(stdout);
+// f = fopen("/fs/numbers.txt", "r");
+// printf("%s\n", (!f ? "Fail :(" : "OK"));
+// if (!f) {
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+//
+// printf("numbers:\n");
+// while (!feof(f)) {
+// int c = fgetc(f);
+// printf("%c", c);
+// }
+//
+// printf("\rClosing \"/fs/numbers.txt\"... ");
+// fflush(stdout);
+// err = fclose(f);
+// printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+// if (err < 0) {
+// error("error: %s (%d)\n", strerror(errno), -errno);
+// }
+//
+// // Tidy up
+// printf("Unmounting... ");
+// fflush(stdout);
+// err = fs.unmount();
+// printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
+// if (err < 0) {
+// error("error: %s (%d)\n", strerror(-err), err);
+// }
+//
+// printf("Mbed OS filesystem example done!\n");
}