Felícito Manzano
/
DTK_Guaria2_ABInBev
Proyecto ABInBev para la tarjeta Guaria 1/2.
Embed:
(wiki syntax)
Show/hide line numbers
avl_fmu130.cpp
Go to the documentation of this file.
00001 /** 00002 * @file avl_fmu130.cpp 00003 * @author Felícito Manzano (felicito.manzano@detektor.com.sv) 00004 * @brief 00005 * @version 0.1 00006 * @date 2020-09-28 00007 * 00008 * @copyright Copyright (c) 2020 00009 * 00010 */ 00011 00012 #include "mbed.h" 00013 #include "avl_fmu130.hpp " 00014 00015 // Teltonika AVL ID Events 00016 const char FM1U30_SEPARATOR[] = ","; 00017 const char FM1U30_AVLID_IDLING[] = "251"; 00018 const char FM1U30_AVLID_WARNING_SPEED[] = "24"; 00019 const char FM1U30_AVLID_OVERSPEED[] = "255"; 00020 const char FM1U30_AVLID_CRASH[] = "317"; 00021 const char FM1U30_AVLID_JAMMING[] = "249"; 00022 const char FM1U30_AVLID_TOWING[] = "246"; 00023 const char FM1U30_AVLID_GREEN_DRIVING[] = "253"; 00024 const char FM1U30_AVLID_ACCELERATION[] = "1"; 00025 const char FM1U30_AVLID_BREAKING[] = "2"; 00026 const char FM1U30_AVLID_CORNERING[] = "3"; 00027 const char FM1U30_AVLID_EVENT_START[] = "1"; 00028 const char FM1U30_AVLID_EVENT_STOP[] = "0"; 00029 const char FMU130_START[] = "A"; 00030 const int IMEI_LENGHT = 15; 00031 00032 /** 00033 * @brief 00034 * 00035 * @param payload 00036 * @return true 00037 * @return false 00038 */ 00039 bool verify_fmu130_payload (char payload[1024]) { 00040 bool a_encontrada = false; // Tipo Bool 00041 bool coma_encontrada = false; // Tipo Bool 00042 char *ret; 00043 00044 // Verificar si se encuentra el inicio del comando A 00045 ret = strchr(payload, FMU130_START[0]); 00046 if (ret!=NULL) { 00047 a_encontrada = true; 00048 } 00049 00050 // Verificar si se encuentra el separador "," 00051 ret = strchr(payload, FM1U30_SEPARATOR[0]); 00052 if (ret!=NULL) { 00053 coma_encontrada = true; 00054 } 00055 00056 // a_encontrada el tamaño de la trama 00057 if (a_encontrada && coma_encontrada) { // Trama para procesar 00058 return(true); 00059 } else { // Trama para ignorar 00060 return(false); 00061 } 00062 } 00063 00064 /** 00065 * @brief 00066 * 00067 * @param payload 00068 * @param header 00069 * @param imei 00070 * @param cmd_fmu 00071 * @param param_fmu 00072 * @return true 00073 * @return false 00074 */ 00075 bool parse_fmu130_payload (char payload[1024], char header[2], char imei[16], int *cmd_fmu, int *param_fmu) { 00076 int i = 0; 00077 char avl_id[4]; 00078 char status[2]; 00079 char *p; 00080 00081 00082 p = strtok(payload, FM1U30_SEPARATOR); 00083 strcpy(header,p); 00084 00085 while (p != NULL) { 00086 i++; 00087 p = strtok(NULL, FM1U30_SEPARATOR); 00088 switch(i) { 00089 case 1: 00090 strcpy(imei,p); 00091 break; 00092 00093 case 2: 00094 strcpy(avl_id,p); // ["01","3D",'\0'] 00095 *cmd_fmu = atoi(avl_id); // "3" "1" "7" ==> 317 00096 if (*cmd_fmu == 0) { 00097 if (strlen(avl_id) >= 2) { 00098 *cmd_fmu = 256 + (int) avl_id[1]; 00099 } else { 00100 *cmd_fmu = (int) avl_id[0]; 00101 } 00102 } 00103 break; 00104 00105 case 3: 00106 strcpy(status,p); 00107 *param_fmu = atoi(status); 00108 if (*param_fmu == 0) { 00109 *param_fmu = (int) status[0]; 00110 } 00111 break; 00112 } 00113 } 00114 return(true); 00115 }
Generated on Thu Jul 28 2022 19:27:02 by 1.7.2