avec dfu
Fork of Utils by
Diff: Utils.cpp
- Revision:
- 12:9dd7c462a2c0
- Parent:
- 11:a41267cffa61
- Child:
- 13:ff0f36a6d800
--- 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; }