avec dfu

Fork of Utils by POTLESS

Files at this revision

API Documentation at this revision

Comitter:
POTLESS_2
Date:
Tue Mar 06 10:31:52 2018 +0000
Parent:
11:a41267cffa61
Child:
13:ff0f36a6d800
Commit message:
update

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
--- a/Utils.cpp	Mon Mar 05 11:14:45 2018 +0000
+++ b/Utils.cpp	Tue Mar 06 10:31:52 2018 +0000
@@ -15,10 +15,10 @@
 {
     Exist_Val = 0;
     if (ret_val) {
-        DEBUG("  Problème Flash = %d\r\n", ret_val);
+        DEEP_DEBUG("  Problème Flash = %d\r\n", ret_val);
         Exist_Val = 0;
     } else {
-        DEBUG("  Flash -> OK.\r\n");
+        DEEP_DEBUG("  Flash -> OK.\r\n");
         Exist_Val = 1;
     }
     wait_ms(100);
@@ -28,10 +28,10 @@
 {
     Exist_Val = 0;
     if (ret_val == NULL) {
-        DEBUG("  Problème Flash = %d \r\n", errno);
+        DEEP_DEBUG("  Problème Flash = %d \r\n", errno);
         Exist_Val = 0;
     } else {
-        DEBUG("  Flash -> OK.\r\n");
+        DEEP_DEBUG("  Flash -> OK.\r\n");
         Exist_Val = 1;
     }
     wait_ms(100);
@@ -65,77 +65,6 @@
     printf("  Taille du fichier %s = %d Kb\r\n", filename, size / 1024);
 }
 
-/*
-void UTILS::Get_File_Infos(char* File_Name) {
-
-    char filename[20];
-    sprintf(filename, "/Root/%s", File_Name);
-
-    struct stat fileStat;
-    stat(filename, &fileStat);
-
-    printf("Informations sur %s\r\n\r\n",filename);
-    printf("  Taille du fichier           :  %d bytes\r\n",&fileStat.st_size);
-    printf("  Heure dernier accès         :  %s\r\n",ctime(&fileStat.st_atime));
-    printf("  Heure dernière modification :  %s\r\n",ctime(&fileStat.st_mtime));
-    printf("  Heure dernier changement    :  %s\r\n",ctime(&fileStat.st_ctime));
-
-    struct stat stat_buf;
-
-    stat(filename, &stat_buf);
-
-    stat_buf.st_size;
-    stat_buf.st_dev;
-    stat_buf.st_ino;
-    stat_buf.st_mode;
-    stat_buf.st_nlink;
-    stat_buf.st_uid;
-    stat_buf.st_gid;
-    stat_buf.st_rdev;
-    stat_buf.st_size;
-    stat_buf.st_blksize;
-    stat_buf.st_blocks;
-    stat_buf.st_atime;
-    stat_buf.st_mtime;
-    stat_buf.st_ctime;
-
-    printf("  Taille du fichier           :  %d bytes\r\n",&stat_buf.st_size);
-    printf("  Heure dernier accès         :  %s\r\n",ctime(&stat_buf.st_atime));
-    printf("  Heure dernière modification :  %s\r\n",ctime(&stat_buf.st_mtime));
-    printf("  Heure dernier changement    :  %s\r\n",ctime(&stat_buf.st_ctime));
-
-}
-
-void UTILS::Get_File_Infos_bis(char* File_Name) {
-
-    char filename[20];
-    sprintf(filename, "/Root/%s", File_Name);
-
-    struct stat fileStat;
-
-    stat(filename, &fileStat);
-
-    printf("Information for %s\n",filename);
-    printf("---------------------------\n");
-    printf("File Size: \t\t%d bytes\n",fileStat.st_size);
-    printf("Number of Links: \t%d\n",fileStat.st_nlink);
-    printf("File inode: \t\t%d\n",fileStat.st_ino);
-
-    printf("File Permissions: \t");
-    printf( (fileStat.st_mode & S_IRUSR) ? "r" : "-");
-    printf( (fileStat.st_mode & S_IWUSR) ? "w" : "-");
-    printf( (fileStat.st_mode & S_IXUSR) ? "x" : "-");
-    printf( (fileStat.st_mode & S_IRGRP) ? "r" : "-");
-    printf( (fileStat.st_mode & S_IWGRP) ? "w" : "-");
-    printf( (fileStat.st_mode & S_IXGRP) ? "x" : "-");
-    printf( (fileStat.st_mode & S_IROTH) ? "r" : "-");
-    printf( (fileStat.st_mode & S_IWOTH) ? "w" : "-");
-    printf( (fileStat.st_mode & S_IXOTH) ? "x" : "-");
-    printf("\n\n");
-
-}
-*/
-
 void UTILS::Store_A_Val(float Val_To_Store, char* File_Name)
 {
 
@@ -147,7 +76,7 @@
     fprintf(fd, "%f\r\n", Val_To_Store);
     fclose(fd);
 
-    DEBUG("  \r\n  %s sauvegardée = %f\r\n", filename, Val_To_Store);
+    DEEP_DEBUG("  \r\n  %s sauvegardée = %f\r\n", filename, Val_To_Store);
 
 }
 
@@ -161,7 +90,7 @@
     char filename[20];
     sprintf(filename, "/Root/%s.txt", File_Name);
 
-    DEBUG("  \n  Récupération de %s...\r\n", filename);
+    DEEP_DEBUG("  \n  Récupération de %s...\r\n", filename);
 
     FILE* fd = fopen(filename, "r");
     errno_error(fd);
@@ -176,7 +105,7 @@
 
     float val = atof(token);
 
-    DEBUG("  Valeur Récupérée = %f\r\n", val);
+    DEEP_DEBUG("  Valeur Récupérée = %f\r\n", val);
 
     fclose(fd);
 
@@ -195,7 +124,7 @@
     fprintf(fd, "%s\r\n", To_Store);
     fclose(fd);
 
-    DEBUG("  Enregistrement de %s OK\r\n\r\n", filename);
+    DEEP_DEBUG("  Enregistrement de %s OK\r\n\r\n", filename);
 }
 
 /*
@@ -268,23 +197,23 @@
     error = Root.remove(filename);
     return_error(error);
 
-    DEBUG("Fichier %s effacé.\r\n", filename);
+    DEBUG("  Fichier %s effacé.\r\n", filename);
 }
 
 void UTILS::Clean_Flash()
 {
-    DEBUG("Nettoyage de la Flash.\r\n");
-    float Saved_O2 = UTILS::Read_A_Val("Calibration_O2");
+    DEBUG("  Nettoyage de la Flash.\r\n");
+    //float Saved_O2 = UTILS::Read_A_Val("Calibration_O2");
     int Saved_Motor = (int)UTILS::Read_A_Val("Servo_Poumon");
     int ARNSRS_ID = (int)UTILS::Read_A_Val("ARNSRS_ID");
     UTILS::UnMount_Flash();
     UTILS::Format_Flash();
     UTILS::Mount_Flash();
-    UTILS::Store_A_Val(Saved_O2, "Calibration_O2");
+    //UTILS::Store_A_Val(Saved_O2, "Calibration_O2");
     UTILS::Store_A_Val(Saved_Motor, "Servo_Poumon");
     UTILS::Store_A_Val(ARNSRS_ID, "ARNSRS_ID");
-    DEBUG("Flash nettoyée.\r\n");
-    DEBUG("Redémmarage code.\r\n");
+    DEBUG("  Flash nettoyée.\r\n");
+    DEBUG("  Redémmarage code.\r\n");
     NVIC_SystemReset();
 }
 
@@ -299,7 +228,7 @@
     error = Root.rename(Oldfilename, Newfilename);
     return_error(error);
 
-    DEBUG("Fichier %s renommé en %s.\r\n", Oldfilename, Newfilename);
+    DEBUG("  Fichier %s renommé en %s.\r\n", Oldfilename, Newfilename);
 }
 
 void UTILS::Mount_Flash()
@@ -338,21 +267,21 @@
 {
     int error = 0;
     int nb = 0;
-    DEBUG("\r\n  Ouverture du répertoire %s\r\n", Dir_Name);
+    DEEP_DEBUG("\r\n  Ouverture du répertoire %s\r\n", Dir_Name);
     char Dirname[20];
     sprintf(Dirname, "/Root/%s", Dir_Name);
 
     DIR* dir = opendir(Dirname);
 
     struct dirent* de;
-    DEBUG("  Fichier du répertoire :\r\n\r\n");
+    DEBUG("  Fichiers du répertoire :\r\n\r\n");
     while((de = readdir(dir)) != NULL) {
         printf("  %s\r\n", &(de->d_name)[0]);
         fflush(stdout);
         nb++;
     }
     DEBUG("\r\n  Nombre de fichiers = %d\r\n", nb);
-    DEBUG("  Fermeture du répertoire.\r\n");
+    DEEP_DEBUG("  Fermeture du répertoire.\r\n");
     error = closedir(dir);
     return_error(error);
 }
@@ -398,6 +327,7 @@
     printf("  start            =    démmarage des sorties moniteur.\r\n");
     printf("  stop             =    arrêt des sorties moniteur.\r\n");
     printf("  time X           =    met la RTC à l'heure, X en UNIX TIME.\n\r");
+    printf("  ARNSRS_ID X      =    entrée de l'identifiant de l'appareil X.\r\n");
     printf("  sleep            =    mise en veille.\n\r");
     printf("  reset            =    reset de la carte.\n\r\n\r");
     printf("  COMMANDES MEMOIRE\r\n\r\n");
@@ -414,14 +344,16 @@
     printf("  c_fui X          =    changement consigne volet fuite à X.\n\r");
     printf("  calib_p          =    calibration à 0 du volet poumon.\n\r");
     printf("  calib_f          =    calibration à 0 du volet fuite.\n\r");
-    printf("  secu             =    mise des volets en mode sécu.\n\r\n\r");
+    printf("  secu             =    mise des volets en mode sécu.\n\r");
+    printf("  check_F          =    sortie des valeurs 0 moteurs et ARNSRS_ID enregistrées.\n\r\n\r");
     printf("  COMMANDES CAPTEURS\r\n\r\n");
     printf("  Head_ID X        =    Numérote le numéro X d'identification de la sensor Head dans l'eeprom.\n\r");
     printf("  O2_1_ID X        =    Numérote le numéro X d'identification de la cellule O2 1 dans l'eeprom.\n\r");
     printf("  O2_2_ID X        =    Numérote le numéro X d'identification de la cellule O2 2 dans l'eeprom.\n\r");
     printf("  CO2_ID X         =    Numérote le numéro X d'identification du capteur CO2 dans l'eeprom.\n\r");
-    printf("  calib_O2 X       =    calibration des cellules O2 dans l'air avec X itérations.\n\r");
-    printf("  check            =    sortie des valeurs de calibrations enregistrées.\n\r\n\r");
+    printf("  check_E          =    sortie des valeurs de calibration enregistrées dans l'eeprom.\n\r\n\r");
+    printf("  calib_O2 X       =    calibration des cellules O2 dans l'air avec X itérations.\n\r\n\r");
+    
     printf("  Les commandes pour le Mini-r sont à entrer conformément à la doc. Les plus utilisée :\n\r");
     printf("  G                =    calibration du capteur CO2 dans l'air.\n\r");
     printf("  K 0              =    arrêt du capteur CO2.\n\r");
@@ -434,7 +366,7 @@
 
 void UTILS::clean_line_EEPROM(unsigned int eeaddress, int address)
 {
-    DEBUG("  Effacage de la ligne à l'adresse %d de l'eeprom.\r\n", eeaddress);
+    DEEP_DEBUG("  Effacage de la ligne à l'adresse %d de l'eeprom.\r\n", eeaddress);
      
     int size = 64;
     char deleteData[] = {"                                                                "};
@@ -450,7 +382,7 @@
     int result = I2C_EEPROM.write(address, i2cBuffer, size + 2, false);
     wait_ms(6);
     
-    DEBUG("  Ligne à l'adresse %d de l'eeprom effacée.\r\n", eeaddress);
+    DEEP_DEBUG("  Ligne à l'adresse %d de l'eeprom effacée.\r\n", eeaddress);
 }
 
 //Max 63 bit en écriture
@@ -477,9 +409,51 @@
 
     wait_ms(6);
 
-    DEBUG("  Chaine écrite à l'adresse %d de l'eeprom : %s\r\n", eeaddress , data);
+    DEEP_DEBUG("  Chaine écrite à l'adresse %d de l'eeprom : %s\r\n", eeaddress , data);
 }
 
+char* UTILS::read_EEPROM(unsigned int eeaddress , int address)
+{
+    //On lit toute la ligne
+    int size = 17;
+    static char data[17];
+    
+    char i2cBuffer[2];
+    i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
+    i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF); // LSB
+ 
+    // Reset eeprom pointer address
+    int result = I2C_EEPROM.write(address, i2cBuffer, 2, false);
+    wait_ms(6);
+ 
+    // Read eeprom
+    I2C_EEPROM.read(address, data, size);
+    wait_ms(6);
+    
+    DEEP_DEBUG("  Char lu à l'adresse %d de l'eeprom : %s\r\n", eeaddress, &data);
+    
+    return data;
+    }
+
+void UTILS::read_C_EEPROM(char *data, unsigned int eeaddress ,int address)
+{
+    //On lit toute la ligne
+    int size = 64;
+    
+    char i2cBuffer[2];
+    i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
+    i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF); // LSB
+ 
+    // Reset eeprom pointer address
+    int result = I2C_EEPROM.write(address, i2cBuffer, 2, false);
+    wait_ms(6);
+ 
+    // Read eeprom
+    I2C_EEPROM.read(address, data, size);
+    wait_ms(6);
+    
+    DEEP_DEBUG("  Char lu à l'adresse %d de l'eeprom : %s\r\n", eeaddress, data);
+}
 
 float UTILS::read_F_EEPROM(unsigned int eeaddress ,int address)
 {
@@ -498,7 +472,7 @@
     wait_ms(6);
 
     float result_F = atof(data);
-    DEBUG("  Float lu à l'adresse %d de l'eeprom : %f\r\n", eeaddress, result_F);
+    DEEP_DEBUG("  Float lu à l'adresse %d de l'eeprom : %f\r\n", eeaddress, result_F);
     return result_F;
 }
 
@@ -520,7 +494,7 @@
     wait_ms(6);
 
     int result_I = atoi(data);
-    DEBUG("  Int lu à l'adresse %d l'eeprom : %d\r\n", eeaddress, result_I);
+    DEEP_DEBUG("  Int lu à l'adresse %d l'eeprom : %d\r\n", eeaddress, result_I);
     return result_I;
 }
 
--- a/Utils.h	Mon Mar 05 11:14:45 2018 +0000
+++ b/Utils.h	Tue Mar 06 10:31:52 2018 +0000
@@ -32,6 +32,14 @@
 #define DEBUG(...)
 #endif
 
+#define DEEP_DEBUG_MODE 0
+
+#if DEEP_DEBUG_MODE
+#define DEEP_DEBUG(...) { printf(__VA_ARGS__); fflush(stdout);}
+#else
+#define DEEP_DEBUG(...)
+#endif
+
 /** Utils class.
  *  Rassemblant des fonctions annexes pour le fonctionnement de l'ARNSRS.
  *
@@ -152,16 +160,6 @@
     */
     static void Get_File_Size(char* File_Name);
 
-    /**Fonction de renvoie des infos d'un fichier.
-    * @param char* Nom du fichier
-    */
-    static void Get_File_Infos(char* File_Name);
-
-    /**Fonction de renvoie des infos d'un fichier.
-    * @param char* Nom du fichier
-    */
-    static void Get_File_Infos_bis(char* File_Name);
-
     /**Fonction d'éffaçage d'un fichier sur la Flash.
     * @param char* Nom du fichier à effacer
     */
@@ -234,6 +232,23 @@
     */
     static float read_F_EEPROM(unsigned int eeaddress, int address = EEPROM_ADDRESS);
     
+    /**Fonction de lecture d'un char dans l'eeprom.
+    * @param char data ou vaêtre stocké le résultat
+    * @param int eeadress de stockage de la data dans l'eeprom
+    * @param int adress adresse I2C de l'eeprom
+    * @returns
+    *   char stockée à cette adresse
+    */
+    static void read_C_EEPROM(char *data, unsigned int eeaddress , int address = EEPROM_ADDRESS);
+    
+    /**Fonction de lecture d'un char dans l'eeprom.
+    * @param int eeadress de stockage de la data dans l'eeprom
+    * @param int adress adresse I2C de l'eeprom
+    * @returns
+    *   char stockée à cette adresse
+    */
+    static char* read_EEPROM(unsigned int eeaddress , int address = EEPROM_ADDRESS);
+    
     /**Fonction de nettoyage d'une ligne de l'eeprom.
     * @param int eeadress de la ligne a effacer
     * @param int adress adresse I2C de l'eeprom