Prueba con puertos seriales Nucleo F303K8

Dependencies:   BufferedSerial DebounceIn mbed

Committer:
mvargas_dtk
Date:
Tue Aug 23 21:20:02 2016 +0000
Revision:
0:132b26ef40ed
Prueba Serial Nucleo F303K8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mvargas_dtk 0:132b26ef40ed 1 /*
mvargas_dtk 0:132b26ef40ed 2 * - Proyecto: Detektor Fuel Truck Monitoring System
mvargas_dtk 0:132b26ef40ed 3 Interconexión de Múltiples UFS270.
mvargas_dtk 0:132b26ef40ed 4 * - Lenguaje: ANSI C/C++ (mbed)
mvargas_dtk 0:132b26ef40ed 5 * - Tarjeta: Nucleo F091RC
mvargas_dtk 0:132b26ef40ed 6 * - Referencias:
mvargas_dtk 0:132b26ef40ed 7 * - Fecha: 2016/Mar
mvargas_dtk 0:132b26ef40ed 8 * - Autor(es): Felícito Manzano /
mvargas_dtk 0:132b26ef40ed 9 Mario Vargas
mvargas_dtk 0:132b26ef40ed 10 * - Compañia: V.S.R. de Centroamérica
mvargas_dtk 0:132b26ef40ed 11 * - País: SV / CR
mvargas_dtk 0:132b26ef40ed 12 */
mvargas_dtk 0:132b26ef40ed 13
mvargas_dtk 0:132b26ef40ed 14 #include "DebounceIn.h"
mvargas_dtk 0:132b26ef40ed 15 #include "BufferedSerial.h"
mvargas_dtk 0:132b26ef40ed 16
mvargas_dtk 0:132b26ef40ed 17 /* DEFINICIÓN DE FUNCIONES */
mvargas_dtk 0:132b26ef40ed 18 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 19 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 20 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 21 int ufs270_tfms(BufferedSerial *puerto_data, char nivel[6], char hw[2], char sw[2])
mvargas_dtk 0:132b26ef40ed 22 {
mvargas_dtk 0:132b26ef40ed 23 /* Descripción de la función.
mvargas_dtk 0:132b26ef40ed 24
mvargas_dtk 0:132b26ef40ed 25 REAL TIME FUEL LEVEL!!
mvargas_dtk 0:132b26ef40ed 26
mvargas_dtk 0:132b26ef40ed 27 Esta función recibe un puerto serial Buffered en el que se recibe la trama
mvargas_dtk 0:132b26ef40ed 28 *QL,411D,01,01580,02D0,2205,01551,null#
mvargas_dtk 0:132b26ef40ed 29
mvargas_dtk 0:132b26ef40ed 30 +-------------------------------------------------------+
mvargas_dtk 0:132b26ef40ed 31 | PARAMETER | LENGHT | EXAMPLE | DESCRIPTION |
mvargas_dtk 0:132b26ef40ed 32 +----------------------+--------+---------+-------------+
mvargas_dtk 0:132b26ef40ed 33 | HEADER | 3 | *QL, | |
mvargas_dtk 0:132b26ef40ed 34 | PROTOCOL | 1 | 4 | |
mvargas_dtk 0:132b26ef40ed 35 | FIRMWARE | 2 | 11 | |
mvargas_dtk 0:132b26ef40ed 36 | HARDWARE | 1 | D, | |
mvargas_dtk 0:132b26ef40ed 37 | RESERVED | 2 | 01, | |
mvargas_dtk 0:132b26ef40ed 38 | CALCULATE FUEL LEVEL | 5 | 01580, | Unit 0.1 mm |
mvargas_dtk 0:132b26ef40ed 39 | SIGNAL STRENG | 2 | 02 | |
mvargas_dtk 0:132b26ef40ed 40 | SOFTWARE STATUS CODE | 1 | D | |
mvargas_dtk 0:132b26ef40ed 41 | HARDWARE FAULT CODE | 1 | 0, | |
mvargas_dtk 0:132b26ef40ed 42 | RESERVED | 4 | 2205, | |
mvargas_dtk 0:132b26ef40ed 43 | REAL TIME FUEL LEVEL | 5 | 01551, | Unit 0.1 mm |
mvargas_dtk 0:132b26ef40ed 44 | RESERVED | 4 | null | |
mvargas_dtk 0:132b26ef40ed 45 | TAIL | 1 | # | |
mvargas_dtk 0:132b26ef40ed 46 +----------------------+--------+---------+-------------+
mvargas_dtk 0:132b26ef40ed 47
mvargas_dtk 0:132b26ef40ed 48 Se lee caracter por caracter, al encontrar un asterisco se inicia el conteo
mvargas_dtk 0:132b26ef40ed 49 de caracteres, aprovechando que la longitud de la trama es fija se extrae la
mvargas_dtk 0:132b26ef40ed 50 información de nivel de combustible (REAL TIME FUEL LEVEL) en base al contador
mvargas_dtk 0:132b26ef40ed 51 de caracteres, también se extrae el estatus de software y hardware.
mvargas_dtk 0:132b26ef40ed 52
mvargas_dtk 0:132b26ef40ed 53 Si existe información en puerto Serial y es legible se retorna 1.
mvargas_dtk 0:132b26ef40ed 54 Si no existe información para leer en el puerto Serial se retorna 0.
mvargas_dtk 0:132b26ef40ed 55 */
mvargas_dtk 0:132b26ef40ed 56
mvargas_dtk 0:132b26ef40ed 57 char ufs270_begin = '*';
mvargas_dtk 0:132b26ef40ed 58 int char_fuel = 29;
mvargas_dtk 0:132b26ef40ed 59 int char_fuel_limit = 33;
mvargas_dtk 0:132b26ef40ed 60 int char_swstatus = 21;
mvargas_dtk 0:132b26ef40ed 61 int char_hwstatus = 22;
mvargas_dtk 0:132b26ef40ed 62 int char_counter = 0;
mvargas_dtk 0:132b26ef40ed 63 int z = 0;
mvargas_dtk 0:132b26ef40ed 64 int begin = 0;
mvargas_dtk 0:132b26ef40ed 65
mvargas_dtk 0:132b26ef40ed 66 while (puerto_data -> readable()) {
mvargas_dtk 0:132b26ef40ed 67 // If the character on the
mvargas_dtk 0:132b26ef40ed 68 char incoming_char = puerto_data -> getc();
mvargas_dtk 0:132b26ef40ed 69 if (incoming_char == ufs270_begin) {
mvargas_dtk 0:132b26ef40ed 70 char_counter = 1;
mvargas_dtk 0:132b26ef40ed 71 z=0;
mvargas_dtk 0:132b26ef40ed 72 begin = 1;
mvargas_dtk 0:132b26ef40ed 73 } else {
mvargas_dtk 0:132b26ef40ed 74 char_counter++;
mvargas_dtk 0:132b26ef40ed 75 }
mvargas_dtk 0:132b26ef40ed 76 if ((char_counter == char_swstatus) && begin) {
mvargas_dtk 0:132b26ef40ed 77 sw[0] = incoming_char;
mvargas_dtk 0:132b26ef40ed 78 } else if ((char_counter == char_hwstatus) && begin) {
mvargas_dtk 0:132b26ef40ed 79 hw[0] = incoming_char;
mvargas_dtk 0:132b26ef40ed 80 } else if ((char_counter >= char_fuel) && (char_counter <= char_fuel_limit) && begin) {
mvargas_dtk 0:132b26ef40ed 81 nivel[z] = incoming_char;
mvargas_dtk 0:132b26ef40ed 82 z++;
mvargas_dtk 0:132b26ef40ed 83 }
mvargas_dtk 0:132b26ef40ed 84 }
mvargas_dtk 0:132b26ef40ed 85
mvargas_dtk 0:132b26ef40ed 86 if (begin) {
mvargas_dtk 0:132b26ef40ed 87 return (1);
mvargas_dtk 0:132b26ef40ed 88 } else {
mvargas_dtk 0:132b26ef40ed 89 return (0);
mvargas_dtk 0:132b26ef40ed 90 }
mvargas_dtk 0:132b26ef40ed 91 }
mvargas_dtk 0:132b26ef40ed 92
mvargas_dtk 0:132b26ef40ed 93 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 94 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 95 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 96
mvargas_dtk 0:132b26ef40ed 97 int ufs270_calculateFL(BufferedSerial *puerto_data, char nivel[6], char hw[2], char sw[2])
mvargas_dtk 0:132b26ef40ed 98 {
mvargas_dtk 0:132b26ef40ed 99 /* Descripción de la función.
mvargas_dtk 0:132b26ef40ed 100
mvargas_dtk 0:132b26ef40ed 101 CALCULATE FUEL LEVEL
mvargas_dtk 0:132b26ef40ed 102
mvargas_dtk 0:132b26ef40ed 103 Esta función recibe un puerto serial Buffered en el que se recibe la trama
mvargas_dtk 0:132b26ef40ed 104 *QL,411D,01,01580,02D0,2205,01551,null#
mvargas_dtk 0:132b26ef40ed 105
mvargas_dtk 0:132b26ef40ed 106 +-------------------------------------------------------+
mvargas_dtk 0:132b26ef40ed 107 | PARAMETER | LENGHT | EXAMPLE | DESCRIPTION |
mvargas_dtk 0:132b26ef40ed 108 +----------------------+--------+---------+-------------+
mvargas_dtk 0:132b26ef40ed 109 | HEADER | 3 | *QL, | |
mvargas_dtk 0:132b26ef40ed 110 | PROTOCOL | 1 | 4 | |
mvargas_dtk 0:132b26ef40ed 111 | FIRMWARE | 2 | 11 | |
mvargas_dtk 0:132b26ef40ed 112 | HARDWARE | 1 | D, | |
mvargas_dtk 0:132b26ef40ed 113 | RESERVED | 2 | 01, | |
mvargas_dtk 0:132b26ef40ed 114 | CALCULATE FUEL LEVEL | 5 | 01580, | Unit 0.1 mm |
mvargas_dtk 0:132b26ef40ed 115 | SIGNAL STRENG | 2 | 02 | |
mvargas_dtk 0:132b26ef40ed 116 | SOFTWARE STATUS CODE | 1 | D | |
mvargas_dtk 0:132b26ef40ed 117 | HARDWARE FAULT CODE | 1 | 0, | |
mvargas_dtk 0:132b26ef40ed 118 | RESERVED | 4 | 2205, | |
mvargas_dtk 0:132b26ef40ed 119 | REAL TIME FUEL LEVEL | 5 | 01551, | Unit 0.1 mm |
mvargas_dtk 0:132b26ef40ed 120 | RESERVED | 4 | null | |
mvargas_dtk 0:132b26ef40ed 121 | TAIL | 1 | # | |
mvargas_dtk 0:132b26ef40ed 122 +----------------------+--------+---------+-------------+
mvargas_dtk 0:132b26ef40ed 123
mvargas_dtk 0:132b26ef40ed 124 Se lee caracter por caracter, al encontrar un asterisco se inicia el conteo
mvargas_dtk 0:132b26ef40ed 125 de caracteres, aprovechando que la longitud de la trama es fija se extrae la
mvargas_dtk 0:132b26ef40ed 126 información de nivel de combustible en base al contador de caracteres, también
mvargas_dtk 0:132b26ef40ed 127 se extrae el estatus de software y hardware.
mvargas_dtk 0:132b26ef40ed 128
mvargas_dtk 0:132b26ef40ed 129 Si existe información en puerto Serial y es legible se retorna 1.
mvargas_dtk 0:132b26ef40ed 130 Si no existe información para leer en el puerto Serial se retorna 0.
mvargas_dtk 0:132b26ef40ed 131 */
mvargas_dtk 0:132b26ef40ed 132 char ufs270_begin = '*';
mvargas_dtk 0:132b26ef40ed 133 int char_fuel = 13;
mvargas_dtk 0:132b26ef40ed 134 int char_fuel_limit = 17;
mvargas_dtk 0:132b26ef40ed 135 int char_swstatus = 21;
mvargas_dtk 0:132b26ef40ed 136 int char_hwstatus = 22;
mvargas_dtk 0:132b26ef40ed 137 int char_counter = 0;
mvargas_dtk 0:132b26ef40ed 138 int z = 0;
mvargas_dtk 0:132b26ef40ed 139 int begin = 0;
mvargas_dtk 0:132b26ef40ed 140
mvargas_dtk 0:132b26ef40ed 141 if (puerto_data -> readable()) {
mvargas_dtk 0:132b26ef40ed 142 while (puerto_data -> readable()) {
mvargas_dtk 0:132b26ef40ed 143 // If the character on the
mvargas_dtk 0:132b26ef40ed 144 char incoming_char = puerto_data -> getc();
mvargas_dtk 0:132b26ef40ed 145 if (incoming_char == ufs270_begin) {
mvargas_dtk 0:132b26ef40ed 146 char_counter = 1;
mvargas_dtk 0:132b26ef40ed 147 z=0;
mvargas_dtk 0:132b26ef40ed 148 begin = 1;
mvargas_dtk 0:132b26ef40ed 149 } else {
mvargas_dtk 0:132b26ef40ed 150 char_counter++;
mvargas_dtk 0:132b26ef40ed 151 }
mvargas_dtk 0:132b26ef40ed 152 if ((char_counter >= char_fuel) && (char_counter <= char_fuel_limit) && begin) {
mvargas_dtk 0:132b26ef40ed 153 nivel[z] = incoming_char;
mvargas_dtk 0:132b26ef40ed 154 z++;
mvargas_dtk 0:132b26ef40ed 155 } else if ((char_counter == char_swstatus) && begin) {
mvargas_dtk 0:132b26ef40ed 156 sw[0] = incoming_char;
mvargas_dtk 0:132b26ef40ed 157 } else if ((char_counter == char_hwstatus) && begin) {
mvargas_dtk 0:132b26ef40ed 158 hw[0] = incoming_char;
mvargas_dtk 0:132b26ef40ed 159 }
mvargas_dtk 0:132b26ef40ed 160 }
mvargas_dtk 0:132b26ef40ed 161 return (1);
mvargas_dtk 0:132b26ef40ed 162 } else {
mvargas_dtk 0:132b26ef40ed 163 return (0);
mvargas_dtk 0:132b26ef40ed 164 }
mvargas_dtk 0:132b26ef40ed 165 }
mvargas_dtk 0:132b26ef40ed 166
mvargas_dtk 0:132b26ef40ed 167 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 168 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 169 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 170
mvargas_dtk 0:132b26ef40ed 171 int configurar_entradas(DebounceIn *i_0, DebounceIn *i_1, DebounceIn *i_2,
mvargas_dtk 0:132b26ef40ed 172 DebounceIn *i_3, DebounceIn *i_4, DebounceIn *i_5,
mvargas_dtk 0:132b26ef40ed 173 DebounceIn *i_6)
mvargas_dtk 0:132b26ef40ed 174 {
mvargas_dtk 0:132b26ef40ed 175 /* Descripción de la función.
mvargas_dtk 0:132b26ef40ed 176 Utilizando la librería DebounceIn para filtrar entradas digitales
mvargas_dtk 0:132b26ef40ed 177 se configuran las 9 entradas digitales en modo PullUp, se define
mvargas_dtk 0:132b26ef40ed 178 el tiempo de muestreo a 40ms (40000us) y la cantidad de muestras
mvargas_dtk 0:132b26ef40ed 179 para validar en 20.
mvargas_dtk 0:132b26ef40ed 180 Esta función siempre retorna 1
mvargas_dtk 0:132b26ef40ed 181 */
mvargas_dtk 0:132b26ef40ed 182
mvargas_dtk 0:132b26ef40ed 183 // Tiempo para filtrar:
mvargas_dtk 0:132b26ef40ed 184 // 50 milisegundos
mvargas_dtk 0:132b26ef40ed 185 int rebote_us = 50000;
mvargas_dtk 0:132b26ef40ed 186
mvargas_dtk 0:132b26ef40ed 187 // Cantidad de muestras para filtrar
mvargas_dtk 0:132b26ef40ed 188 int muestras = 10;
mvargas_dtk 0:132b26ef40ed 189
mvargas_dtk 0:132b26ef40ed 190 // Configurar en modo PullUp
mvargas_dtk 0:132b26ef40ed 191 i_0 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 192 i_1 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 193 i_2 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 194 i_3 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 195 i_4 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 196 i_5 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 197 i_6 -> mode(PullUp);
mvargas_dtk 0:132b26ef40ed 198
mvargas_dtk 0:132b26ef40ed 199 // Tiempo de Espera para que se tome el cambio
mvargas_dtk 0:132b26ef40ed 200 // en la configuración de entradas a PullUp
mvargas_dtk 0:132b26ef40ed 201 wait_ms(10);
mvargas_dtk 0:132b26ef40ed 202
mvargas_dtk 0:132b26ef40ed 203 // Modificar el tiempo de rebote
mvargas_dtk 0:132b26ef40ed 204 i_0 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 205 i_1 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 206 i_2 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 207 i_3 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 208 i_4 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 209 i_5 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 210 i_6 -> set_debounce_us(rebote_us);
mvargas_dtk 0:132b26ef40ed 211
mvargas_dtk 0:132b26ef40ed 212 // Modificar la cantidad de muestras
mvargas_dtk 0:132b26ef40ed 213 i_0 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 214 i_1 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 215 i_2 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 216 i_3 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 217 i_4 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 218 i_5 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 219 i_6 -> set_samples(muestras);
mvargas_dtk 0:132b26ef40ed 220
mvargas_dtk 0:132b26ef40ed 221 return(1);
mvargas_dtk 0:132b26ef40ed 222 }
mvargas_dtk 0:132b26ef40ed 223
mvargas_dtk 0:132b26ef40ed 224 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 225 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 226 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 227
mvargas_dtk 0:132b26ef40ed 228 int leer_entradas(DebounceIn *i_0, DebounceIn *i_1, DebounceIn *i_2,
mvargas_dtk 0:132b26ef40ed 229 DebounceIn *i_3, DebounceIn *i_4, DebounceIn *i_5,
mvargas_dtk 0:132b26ef40ed 230 DebounceIn *i_6, int entradas[7])
mvargas_dtk 0:132b26ef40ed 231 {
mvargas_dtk 0:132b26ef40ed 232 /* Descripción de Función:
mvargas_dtk 0:132b26ef40ed 233 Esta función realiza la lectura de las 19 entradas digitales.
mvargas_dtk 0:132b26ef40ed 234 El resultado de las lecturas se almacena en un vector entero
mvargas_dtk 0:132b26ef40ed 235 de 19 posiciones. Siempre se retorna un valor 1.
mvargas_dtk 0:132b26ef40ed 236 */
mvargas_dtk 0:132b26ef40ed 237
mvargas_dtk 0:132b26ef40ed 238 // Entradas Digitales
mvargas_dtk 0:132b26ef40ed 239 entradas[0] = i_0 -> read();
mvargas_dtk 0:132b26ef40ed 240 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 241
mvargas_dtk 0:132b26ef40ed 242 entradas[1] = i_1 -> read();
mvargas_dtk 0:132b26ef40ed 243 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 244
mvargas_dtk 0:132b26ef40ed 245 entradas[2] = i_2 -> read();
mvargas_dtk 0:132b26ef40ed 246 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 247
mvargas_dtk 0:132b26ef40ed 248 entradas[3] = i_3 -> read();
mvargas_dtk 0:132b26ef40ed 249 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 250
mvargas_dtk 0:132b26ef40ed 251 entradas[4] = i_4 -> read();
mvargas_dtk 0:132b26ef40ed 252 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 253
mvargas_dtk 0:132b26ef40ed 254 entradas[5] = i_5 -> read();
mvargas_dtk 0:132b26ef40ed 255 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 256
mvargas_dtk 0:132b26ef40ed 257 entradas[6] = i_6 -> read();
mvargas_dtk 0:132b26ef40ed 258 wait_ms(5);
mvargas_dtk 0:132b26ef40ed 259
mvargas_dtk 0:132b26ef40ed 260 return (1);
mvargas_dtk 0:132b26ef40ed 261 }
mvargas_dtk 0:132b26ef40ed 262
mvargas_dtk 0:132b26ef40ed 263 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 264 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 265 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 266
mvargas_dtk 0:132b26ef40ed 267 int comparar_entradas(int previas[7], int actuales[7])
mvargas_dtk 0:132b26ef40ed 268 {
mvargas_dtk 0:132b26ef40ed 269 /* Descripción de función:
mvargas_dtk 0:132b26ef40ed 270 Esta función recibe dos vectores de enteros con 19 posiciones.
mvargas_dtk 0:132b26ef40ed 271 Cada posición representa una de las entradas del mando eléctrico.
mvargas_dtk 0:132b26ef40ed 272 Se realiza la comparación de cada posición, si una de las
mvargas_dtk 0:132b26ef40ed 273 posiciones es diferente se devuelve el valor 1 para indicar
mvargas_dtk 0:132b26ef40ed 274 que son diferentes. Si todas las posiciones son iguales entonces
mvargas_dtk 0:132b26ef40ed 275 se devuelve 0 para indicar que son iguales.
mvargas_dtk 0:132b26ef40ed 276 */
mvargas_dtk 0:132b26ef40ed 277
mvargas_dtk 0:132b26ef40ed 278 // Variables locales
mvargas_dtk 0:132b26ef40ed 279 int son_iguales = 0;
mvargas_dtk 0:132b26ef40ed 280 int entradas = 7;
mvargas_dtk 0:132b26ef40ed 281 int z;
mvargas_dtk 0:132b26ef40ed 282
mvargas_dtk 0:132b26ef40ed 283 for (z=0; z<entradas; z++) {
mvargas_dtk 0:132b26ef40ed 284 (previas[z] == actuales[z]) ? (son_iguales *= 1) : son_iguales++;
mvargas_dtk 0:132b26ef40ed 285 }
mvargas_dtk 0:132b26ef40ed 286
mvargas_dtk 0:132b26ef40ed 287 if (son_iguales > 0) {
mvargas_dtk 0:132b26ef40ed 288 return (1);
mvargas_dtk 0:132b26ef40ed 289 } else {
mvargas_dtk 0:132b26ef40ed 290 return (0);
mvargas_dtk 0:132b26ef40ed 291 }
mvargas_dtk 0:132b26ef40ed 292 }
mvargas_dtk 0:132b26ef40ed 293
mvargas_dtk 0:132b26ef40ed 294 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 295 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 296 /*******************************************************************/
mvargas_dtk 0:132b26ef40ed 297
mvargas_dtk 0:132b26ef40ed 298 int incrementar_trama(int *tramas)
mvargas_dtk 0:132b26ef40ed 299 {
mvargas_dtk 0:132b26ef40ed 300 /*
mvargas_dtk 0:132b26ef40ed 301 Esta función recibe un entero que es el contador de tramas
mvargas_dtk 0:132b26ef40ed 302 realiza el incremento en uno y verifica si el valor es mayor
mvargas_dtk 0:132b26ef40ed 303 o igual que 65535 que es equivalente a 0xFFFF. Si se cumple
mvargas_dtk 0:132b26ef40ed 304 la condución se regresa el valor a 1.
mvargas_dtk 0:132b26ef40ed 305 Esta función siempre retorna 0.
mvargas_dtk 0:132b26ef40ed 306 */
mvargas_dtk 0:132b26ef40ed 307 int actual = *tramas;
mvargas_dtk 0:132b26ef40ed 308 int limite = 65535;
mvargas_dtk 0:132b26ef40ed 309 actual++;
mvargas_dtk 0:132b26ef40ed 310
mvargas_dtk 0:132b26ef40ed 311 if (actual > limite) {
mvargas_dtk 0:132b26ef40ed 312 *tramas = 1;
mvargas_dtk 0:132b26ef40ed 313 } else {
mvargas_dtk 0:132b26ef40ed 314 *tramas = actual;
mvargas_dtk 0:132b26ef40ed 315 }
mvargas_dtk 0:132b26ef40ed 316 return(0);
mvargas_dtk 0:132b26ef40ed 317 }