Felícito Manzano
/
DTK_Guaria2_ABInBev
Proyecto ABInBev para la tarjeta Guaria 1/2.
Embed:
(wiki syntax)
Show/hide line numbers
flash_ee_exe.cpp
Go to the documentation of this file.
00001 /** 00002 * @file flash_ee_exe.cpp 00003 * @author Felícito Manzano (felicito.manzano@detektor.com.sv) 00004 * @brief 00005 * @version 0.1 00006 * @date 2022-07-04 00007 * 00008 * @copyright Copyright (c) 2022 00009 * 00010 */ 00011 00012 00013 #include "mbed.h" 00014 #include "flash_ee_exe.hpp " 00015 #include "flash_eeprom.h" 00016 #include "USBSerial.h" 00017 #include <ctype.h> 00018 00019 /** * INTERFACES * **/ 00020 extern USBSerial myPC_debug; 00021 extern DigitalOut flashLED; 00022 00023 /** * VARIABLES * **/ 00024 // Manejo de EEPROM FLASH 00025 extern uint16_t VirtAddVarTab[]; 00026 extern uint16_t VarDataTab[]; 00027 00028 // Lector de Huellas 00029 extern bool fingerprint_enable; 00030 extern bool fingerprint_remotly_disable; 00031 extern bool fingerprint_override; 00032 extern int fp_override_limit; // 4 intentos 00033 00034 // Ralentí 00035 extern bool enable_idle_shutdown; 00036 extern bool enable_idle_reminder; 00037 extern float wait_idle_shutdown; //600.0 segundos 00038 extern float wait_idle_reminder; // 180.0 segundos 00039 00040 // Cinturones 00041 extern bool enable_seatbelt_reading; 00042 extern bool enable_force_seatbelt_buclke; 00043 extern bool pilot_buckle_type; 00044 extern int pilot_buckleUp; 00045 extern int pilot_unfasten; 00046 extern bool copilot_buckle_type; 00047 extern int copilot_buckleUp; 00048 extern int copilot_unfasten; 00049 extern bool crew_buckle_type; 00050 extern int crew_buckleUp; 00051 extern int crew_unfasten; 00052 00053 // Sensor de Lluvia 00054 extern bool enable_rain_sensor; 00055 extern bool enable_rain_silent_mode; 00056 extern float time_sample_rain; // 6.0 segundos 00057 00058 // Limites de Velocidad en Mojado y seco 00059 extern int wet_Speed_Warning; // 50 Km/h 00060 extern int wet_Speed_Limit; // 55 Km/h 00061 extern int dry_Speed_Warning; // 70 Km/h 00062 extern int dry_Speed_Limit; // 80 Km/h 00063 00064 // Tip de Seguridad y Geocercas 00065 extern bool enable_geo_warning; 00066 extern bool enable_safety_tip; 00067 extern float time_safety_tip; // 900.0 segundos 00068 00069 // Volumen de Parlante 00070 extern int temp_JQ8400_Volume; // 4 HIGH 00071 00072 // Autoreset de BLE 00073 extern bool enable_ble_autoreset; 00074 extern float time_ble_autoreset; 00075 00076 #define DEBUG_FLASH_EE_CPP 1 00077 00078 /** 00079 * @brief 00080 * Esta función inicializa la EEPROM. Después ejecuta un lazo a lo largo 00081 * de las direcciones predefinidas como EEPROM y carga en un arreglo su 00082 * valor. 00083 * 00084 */ 00085 void readFlash_Booting() { 00086 #ifdef DEBUG_FLASH_EE_CPP 00087 myPC_debug.printf("\r\n FLASH - Leyendo datos de memoria..."); 00088 #endif 00089 // Variable local 00090 int i; 00091 00092 // Leer todas las variables de Flash 00093 for(i = 0; i < NB_OF_VAR; i++) { 00094 EE_ReadVariable(VirtAddVarTab[i], &VarDataTab[i]); 00095 } 00096 } 00097 00098 /** 00099 * @brief 00100 * 00101 */ 00102 void load_2_Var() { 00103 #ifdef DEBUG_FLASH_EE_CPP 00104 myPC_debug.printf("\r\n FLASH - Cargando datos en Variables..."); 00105 #endif 00106 // Lector de Huellas 00107 fingerprint_enable = (bool) VarDataTab[AP_FINGERPRINT]; 00108 fingerprint_remotly_disable = (bool) VarDataTab[AP_FINGERPRINT_RE]; 00109 fingerprint_override = (bool) VarDataTab[AP_OVERRIDE_FP]; 00110 fp_override_limit = (int) VarDataTab[AP_OVERRIDE_QT]; 00111 00112 00113 // Ralentí 00114 enable_idle_shutdown = (bool) VarDataTab[AP_IDLE_SHUTDOWN]; 00115 enable_idle_reminder = (bool) VarDataTab[AP_IDLE_REMINDER]; 00116 wait_idle_shutdown = ((int) VarDataTab[AP_IDLE_S_TIME]) * 1.0; 00117 wait_idle_reminder = ((int) VarDataTab[AP_IDLE_R_TIME]) * 1.0; 00118 00119 // Cinturones 00120 enable_seatbelt_reading = (bool) VarDataTab[AP_SEATBELT_READ]; 00121 enable_force_seatbelt_buclke = (bool) VarDataTab[AP_ENFORCE_SB]; 00122 pilot_buckle_type = (bool) VarDataTab[AP_PILOT_BTYPE]; 00123 copilot_buckle_type = (bool) VarDataTab[AP_COPILOT_BTYPE]; 00124 crew_buckle_type = (bool) VarDataTab[AP_CREW_BTYPE]; 00125 00126 // Pilot Seatbelt Buckle Type Definition 00127 if (pilot_buckle_type) { // N.O. - Honduras 00128 pilot_buckleUp = 1; 00129 pilot_unfasten = -1; 00130 } else { // N.C. - Panamá 00131 pilot_buckleUp = -1; 00132 pilot_unfasten = 1; 00133 } 00134 00135 // Copilot Seatbelt Buckle Type Definition 00136 if (copilot_buckle_type) { // N.O. - Honduras 00137 copilot_buckleUp = 1; 00138 copilot_unfasten = -1; 00139 } else { // N.C. - Panamá 00140 copilot_buckleUp = -1; 00141 copilot_unfasten = 1; 00142 } 00143 00144 // Crew Seatbelt Buckle Type Definition 00145 if (crew_buckle_type) { // N.O. - Honduras 00146 crew_buckleUp = 1; 00147 crew_unfasten = -1; 00148 } else { // N.C. - Panamá 00149 crew_buckleUp = -1; 00150 crew_unfasten = 1; 00151 } 00152 00153 // Sensor de Lluvia 00154 enable_rain_sensor = (bool) VarDataTab[AP_RAINSENSOR]; 00155 enable_rain_silent_mode = (bool) VarDataTab[AP_RS_SILENTMODE]; 00156 time_sample_rain = ((int) VarDataTab[AP_RS_SAMPLE_T]) * 1.0;; 00157 00158 // Limites de Velocidad en Mojado y seco 00159 wet_Speed_Warning = (int) VarDataTab[AP_WET_WARNING]; 00160 wet_Speed_Limit = (int) VarDataTab[AP_WET_LIMIT]; 00161 dry_Speed_Warning = (int) VarDataTab[AP_DRY_WARNING]; 00162 dry_Speed_Limit = (int) VarDataTab[AP_DRY_LIMIT]; 00163 00164 // Tip de Seguridad y Geocercas 00165 enable_safety_tip = (bool) VarDataTab[AP_SAFETY_TIP]; 00166 time_safety_tip = ((int) VarDataTab[AP_SAFETY_TIP_T]) * 1.0; // 900.0 segundos 00167 enable_geo_warning = (bool) VarDataTab[AP_GEOZONE]; 00168 00169 // Volumen de Parlante 00170 temp_JQ8400_Volume = (int) VarDataTab[AP_VOLUME]; 00171 00172 // Autoreset BLE 00173 enable_ble_autoreset = (bool) VarDataTab[AP_BLE_RESET]; 00174 time_ble_autoreset = ((int) VarDataTab[AB_BLE_RESET_T]) * 1.0; 00175 00176 00177 #ifdef DEBUG_FLASH_EE_CPP 00178 myPC_debug.printf("\r\n FLASH - Completado!"); 00179 myPC_debug.printf("\r\n FLASH - Valores cargados:"); 00180 myPC_debug.printf("\r\n Lector de Huellas: %s", fingerprint_enable?"TRUE":"FALSE"); 00181 myPC_debug.printf("\r\n Lector de Huellas Deshabilitado Remoto: %s", fingerprint_enable?"TRUE":"FALSE"); 00182 myPC_debug.printf("\r\n Anulacion de Lector: %s", fingerprint_override?"TRUE":"FALSE"); 00183 myPC_debug.printf("\r\n Cantidad para Anulacion: %d\r\n", fp_override_limit); 00184 myPC_debug.printf("\r\n Apagado por Ralenti: %s", enable_idle_shutdown?"TRUE":"FALSE"); 00185 myPC_debug.printf("\r\n Recordatorio de Ralenti: %s", enable_idle_reminder?"TRUE":"FALSE"); 00186 myPC_debug.printf("\r\n Tiempo Apagado por Ralenti: %.1f", wait_idle_shutdown); 00187 myPC_debug.printf("\r\n Tiempo Recordatorio de Ralenti: %.1f\r\n", wait_idle_reminder); 00188 myPC_debug.printf("\r\n Lectura de Cinturones: %s", enable_seatbelt_reading?"TRUE":"FALSE"); 00189 myPC_debug.printf("\r\n Forzar Conductor Abrochado: %s\r\n", enable_force_seatbelt_buclke?"TRUE":"FALSE"); 00190 myPC_debug.printf("\r\n Tipo de Hebilla Piloto: %s", pilot_buckle_type?"N. OPEN":"N. CLOSE"); 00191 myPC_debug.printf("\r\n Tipo de Hebilla Copiloto: %s", copilot_buckle_type?"N. OPEN":"N. CLOSE"); 00192 myPC_debug.printf("\r\n Tipo de Hebilla Tripulante: %s", crew_buckle_type?"N. OPEN":"N. CLOSE"); 00193 myPC_debug.printf("\r\n Sensor de Lluvia: %s", enable_rain_sensor?"TRUE":"FALSE"); 00194 myPC_debug.printf("\r\n Modo Silencioso de Lluvia: %s", enable_rain_silent_mode?"TRUE":"FALSE"); 00195 myPC_debug.printf("\r\n Temporizador para Lluvia: %.1f\r\n", time_sample_rain); 00196 myPC_debug.printf("\r\n Advertencia Mojado: %d", wet_Speed_Warning); 00197 myPC_debug.printf("\r\n Limite Mojado: %d", wet_Speed_Limit); 00198 myPC_debug.printf("\r\n Advertencia Seco: %d", dry_Speed_Warning); 00199 myPC_debug.printf("\r\n Limite Seco: %d\r\n", dry_Speed_Limit); 00200 myPC_debug.printf("\r\n Notificacion Geocerca: %s", enable_geo_warning?"TRUE":"FALSE"); 00201 myPC_debug.printf("\r\n Tip de Seguridad: %s", enable_safety_tip?"TRUE":"FALSE"); 00202 myPC_debug.printf("\r\n Tiempo entre Tip de Seguridad: %.1f\r\n", time_safety_tip); 00203 myPC_debug.printf("\r\n Volumen Parlante: %d\r\n", temp_JQ8400_Volume); 00204 myPC_debug.printf("\r\n BLE Autoreset: %s", enable_ble_autoreset?"TRUE":"FALSE"); 00205 myPC_debug.printf("\r\n BLE Temporizador: %.1f\r\n\r\n", time_ble_autoreset); 00206 #endif 00207 } 00208 00209 void flash_Booting() { 00210 HAL_FLASH_Unlock(); 00211 EE_Init(); 00212 readFlash_Booting(); 00213 load_2_Var(); 00214 } 00215 00216 void flash_Default() { 00217 // Desbloquear Flash para Escritura 00218 #ifdef DEBUG_FLASH_EE_CPP 00219 myPC_debug.printf("\r\n FLASH - Cargando valores por defecto"); 00220 #endif 00221 #define SEATBELT_CONFIG 7 00222 EE_WriteVariable(VirtAddVarTab[AP_FINGERPRINT], ((uint16_t) true)); // Fingerprint Enable 00223 EE_WriteVariable(VirtAddVarTab[AP_OVERRIDE_FP], ((uint16_t) true)); // Override Fingerprint Authentication 00224 EE_WriteVariable(VirtAddVarTab[AP_OVERRIDE_QT], ((uint16_t) 4)); // Override Fingerprint Quantity 00225 EE_WriteVariable(VirtAddVarTab[AP_IDLE_SHUTDOWN], ((uint16_t) false)); // Idle Shutdown Enable 00226 EE_WriteVariable(VirtAddVarTab[AP_IDLE_REMINDER], ((uint16_t) true)); // Idle Shutdown Reminder 00227 EE_WriteVariable(VirtAddVarTab[AP_IDLE_S_TIME], ((uint16_t) 600)); // Idle Shutdown Cutoff Time 00228 EE_WriteVariable(VirtAddVarTab[AP_IDLE_R_TIME], ((uint16_t) 180)); // Idle Shutdown Reminder Time 00229 EE_WriteVariable(VirtAddVarTab[AP_SEATBELT_READ], ((uint16_t) true)); // Seatbelt reading Enable 00230 EE_WriteVariable(VirtAddVarTab[AP_ENFORCE_SB], ((uint16_t) true)); // Force Driver Buckleup 00231 #if (SEATBELT_CONFIG == 0) 00232 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00233 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00234 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00235 #elif (SEATBELT_CONFIG == 1) 00236 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00237 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00238 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00239 #elif (SEATBELT_CONFIG == 2) 00240 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00241 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00242 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00243 #elif (SEATBELT_CONFIG == 3) 00244 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00245 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00246 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00247 #elif (SEATBELT_CONFIG == 4) 00248 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00249 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00250 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00251 #elif (SEATBELT_CONFIG == 5) 00252 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00253 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00254 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00255 #elif (SEATBELT_CONFIG == 6) 00256 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00257 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00258 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) false)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00259 #elif (SEATBELT_CONFIG == 7) 00260 EE_WriteVariable(VirtAddVarTab[AP_PILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00261 EE_WriteVariable(VirtAddVarTab[AP_COPILOT_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00262 EE_WriteVariable(VirtAddVarTab[AP_CREW_BTYPE], ((uint16_t) true)); // Seatbelt reading Type (FALSE = PA | TRUE = HN) 00263 #endif 00264 EE_WriteVariable(VirtAddVarTab[AP_RAINSENSOR], ((uint16_t) true)); // Rain Sensor Enable 00265 EE_WriteVariable(VirtAddVarTab[AP_RS_SILENTMODE], ((uint16_t) false)); // Silent mode Rain Sensor 00266 EE_WriteVariable(VirtAddVarTab[AP_RS_SAMPLE_T], ((uint16_t) 6)); // Sample Time Rain Sensor 00267 EE_WriteVariable(VirtAddVarTab[AP_WET_LIMIT], ((uint16_t) 55)); // Wet Speed Limit 00268 EE_WriteVariable(VirtAddVarTab[AP_WET_WARNING], ((uint16_t) 50)); // Wet Speed Warning 00269 EE_WriteVariable(VirtAddVarTab[AP_DRY_LIMIT], ((uint16_t) 80)); // Dry Speed Limit 00270 EE_WriteVariable(VirtAddVarTab[AP_DRY_WARNING], ((uint16_t) 70)); // Dry Speed Warning 00271 EE_WriteVariable(VirtAddVarTab[AP_SAFETY_TIP], ((uint16_t) true)); // Enable Safety Tip 00272 EE_WriteVariable(VirtAddVarTab[AP_SAFETY_TIP_T], ((uint16_t) 1800)); // Time for Safety Tip 00273 EE_WriteVariable(VirtAddVarTab[AP_GEOZONE], ((uint16_t) false)); // Geozone alert 00274 EE_WriteVariable(VirtAddVarTab[AP_VOLUME], ((uint16_t) 5)); // Volume Level 6=Maximum 00275 EE_WriteVariable(VirtAddVarTab[AP_BLE_RESET], ((uint16_t) true)); // BLE Autoreset 00276 EE_WriteVariable(VirtAddVarTab[AB_BLE_RESET_T], ((uint16_t) 3600)); // BLE Autoreset Time 00277 EE_WriteVariable(VirtAddVarTab[AP_FINGERPRINT_RE], ((uint16_t) false)); // Fingerprint Enable 00278 00279 00280 // LED 00281 flashLED = 1; 00282 wait_ms(3750); 00283 flashLED = 0; 00284 #ifdef DEBUG_FLASH_EE_CPP 00285 myPC_debug.printf("\r\n FLASH - Completado!"); 00286 #endif 00287 00288 } 00289 00290 void writeFlash(int myAddress, int myValue) { 00291 // Desbloquear Flash para Escritura 00292 EE_WriteVariable(VirtAddVarTab[myAddress], ((uint16_t) myValue)); 00293 }
Generated on Thu Jul 28 2022 19:27:02 by 1.7.2