avec dfu
Fork of Utils by
Revision 0:794c15bd30b0, committed 2018-02-06
- Comitter:
- POTLESS_2
- Date:
- Tue Feb 06 13:15:53 2018 +0000
- Child:
- 1:a937433a95c8
- Commit message:
- S?paration des fonctions sd card
Changed in this revision
Utils.cpp | Show annotated file Show diff for this revision Revisions of this file |
Utils.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Utils.cpp Tue Feb 06 13:15:53 2018 +0000 @@ -0,0 +1,173 @@ +#include "mbed.h" +#include "Utils.h" + +SDBlockDevice bd(SD_MOSI, SD_MISO, SD_SCK, SD_CS); +FATFileSystem fs("fs"); + +void return_error(int ret_val) +{ + if (ret_val) + printf(" Problème carte SD = %d\r\n", ret_val); + else + printf(" SD -> OK.\r\n"); +} + +void errno_error(void* ret_val) +{ + if (ret_val == NULL) + printf(" Problème carte SD = %d \r\n", errno); + else + printf(" SD -> OK.\r\n"); +} + +void UTILS::Store_A_Val(float Val_To_Store, char* File_Name) +{ + + char filename[20]; + sprintf(filename, "/fs/%s.txt", File_Name); + + FILE* fd = fopen(filename, "w"); + errno_error(fd); + fprintf(fd, "%f\r\n", Val_To_Store); + fclose(fd); + + printf(" \r\n %s sauvegardée = %f\r\n", filename, Val_To_Store); + +} + +float UTILS::Read_A_Val(char* File_Name) +{ + char buffer[10] = {0}; + char c = {0}; + char *token; + int i = 0; + + char filename[20]; + sprintf(filename, "/fs/%s.txt", File_Name); + + printf(" \n Récupération de %s...\r\n", filename); + + FILE* fd = fopen(filename, "r"); + errno_error(fd); + + while ((c != '\n') && (i < 10)) { + c = fgetc(fd); + buffer[i] = c; + i++; + } + + token = strtok(buffer, "\n"); + + float val = atof(token); + + printf(" Valeur Récupérée = %f\r\n", val); + + fclose(fd); + + return val; +} + + +void UTILS::Write_SD_File(string To_Store, char* File_Name) +{ + char filename[20]; + sprintf(filename, "/fs/%s", File_Name); + + FILE* fd = fopen(filename, "a"); + errno_error(fd); + fprintf(fd, "%s\r\n", To_Store); + fclose(fd); + + //printf(" Sauvegarde OK\r\n\r\n"); +} + +void UTILS::Read_SD_File(string File_Name) +{ + char filename[20]; + sprintf(filename, "/fs/%s", File_Name); + FILE* fd = fopen(filename, "r"); + errno_error(fd); + + printf("Contenu du fichier :\r\n\r\n"); + char buff[16] = {0}; + while (!feof(fd)) { + int size = fread(&buff[0], 1, 15, fd); + fwrite(&buff[0], 1, size, stdout); + } + printf("Fin du fichier.\n"); + fclose(fd); +} + +void UTILS::Delete_SD_File(string File_Name) +{ + char filename[20]; + sprintf(filename, "/fs/%s", File_Name); + int error = 0; + error = fs.remove(filename); + return_error(error); + + printf("Fichier effacé.\n"); +} + +void UTILS::Rename_SD_File(string Old_File_Name, string New_File_Name) +{ + char Oldfilename[20]; + sprintf(Oldfilename, "/fs/%s", Old_File_Name); + char Newfilename[20]; + sprintf(Newfilename, "/fs/%s", New_File_Name); + + int error = 0; + error = fs.rename(Oldfilename, Newfilename); + return_error(error); + + printf("Fichier renommé.\n"); +} + +void UTILS::Mount_SD() +{ + //Montage carte SD + printf(" Montage carte SD \"/fs\". \r\n\r\n"); + int error = 0; + error = fs.mount(&bd); + return_error(error); + if (error) { + //On re format s'il n'y a as de file system...normalement une seul fois... + printf("Pas de File system, on format... "); + Format_SD(); + } +} + +void UTILS::UnMount_SD() +{ + //Montage carte SD + printf(" Demontage carte SD \"/fs\". \r\n\r\n"); + int error = 0; + error = fs.unmount(); + return_error(error); +} + +void UTILS::Format_SD() +{ + //Formatage carte SD + printf(" Formatage carte SD\r\n\r\n"); + int error = 0; + error = fs.format(&bd); + return_error(error); +} + +//Remapping d'une valeur dans une autre échelle +float UTILS::Remap(float x, float in_min, float in_max, float out_min, float out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +//Contraint une valeur entre deux limites +float UTILS::constrain(float x, float a, float b) +{ + if(x < a) { + return a; + } else if(b < x) { + return b; + } else + return x; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Utils.h Tue Feb 06 13:15:53 2018 +0000 @@ -0,0 +1,113 @@ +#ifndef CHANGEME_H_ +#define CHANGEME_H_ + +#include "mbed.h" +#include <string> + +#include "FATFileSystem.h" +#include "SDBlockDevice.h" +#include <stdio.h> +#include <errno.h> + +//PIN OUT carte SD +#define SD_MOSI PA_7 +#define SD_MISO PA_6 +#define SD_SCK PA_5 +#define SD_CS PB_6 + +/** Utils class. + * Rassemblant des fonctions annexes pour le fonctionnement de l'ARNSRS. + * + * A besoin des libs suivantes : + * + * - FATFileSystem + * + * - SDBlockDevice + * + * + * Constantes de l'application : + * + * Pin out carte SD : + * + * - SD_MOSI PA_7 + * + * - SD_MISO PA_6 + * + * - SD_SCK PA_5 + * + * - SD_CS PB_6 + * +*/ + +class UTILS +{ + +public: + + /**Remapper une valeur dans une autre échelle. + * @param float Valeur à remapper + * @param float Minimum de l'échelle de la valeur + * @param float Maximum de l'échelle de la valeur + * @param float Minimum de la nouvelle échelle + * @param float Maximum de de la nouvelle échelle + */ + static float Remap(float x, float in_min, float in_max, float out_min, float out_max); + + /**Contraint une valeur entre deux limites. + * @param float Valeur à contraindre + * @param float Minimum de la valeur + * @param float Maximum de la valeur + */ + static float constrain(float x, float a, float b); + + /**Fonction de stockage valeur sur la carte SD. + * @param float Val_To_Store, la valeur à stocker + * @param char* Nom du fichier ou stocker cette valeur + */ + static void Store_A_Val(float Val_To_Store, char* File_Name); + + /**Fonction de récupération d'une valeur stockée sur la carte SD. + * @param char* Nom du fichier ou stocker cette valeur + * @returns + * valeur de calibration des capteurs O2 + */ + static float Read_A_Val(char* File_Name); + + /**Fonction d'enregistrement d'une chaine de charatères sur la carte SD. + * @param char* To_Store, chaine de charactères + * @param char* Nom du fichier, s'il existe il est ouvert, sinon il est créé + */ + static void Write_SD_File(string To_Store, char* File_Name = "Data_LOG.txt"); + + /**Fonction de lecture d'un fichier sur la carte SD. + * @param char* Nom du fichier + */ + static void Read_SD_File(string File_Name = "Data_LOG.txt"); + + /**Fonction d'éffaçage d'un fichier sur la carte SD. + * @param char* Nom du fichier + */ + static void Delete_SD_File(string File_Name); + + /**Fonction d'éffaçage d'un fichier sur la carte SD. + * @param char* Nom du fichier à effacer + * @param char* Nouveau Nom du fichier + */ + static void Rename_SD_File(string Old_File_Name, string New_File_Name); + + /**Fonction montage de la carte SD. + */ + static void Mount_SD(); + + /**Fonction demontage de la carte SD. + */ + static void UnMount_SD(); + + /**Fonction formatage de la carte SD. + */ + static void Format_SD(); + +private: +//Rien... +}; +#endif \ No newline at end of file