bbb
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"); }