recibir_caracter esperar bit 0 en LSR retornar con el registro de datos recibir_paquete_crudo borrar bandera escape inicializer datos setear modo 'ocio' repetir recibir_caracter si estamos en modo 'ocio' si el caracter es FEnd (0xC0) cambiar a modo 'activo' sino seguir en modo 'ocio' si estamos en modo 'escape' si el caracter es TFend (0xDC) guardar FEnd (0xC0) en los datos cambiar a modo 'activo' si el caracter es TFEsc (0xDD) guardar FEsc (0xDB) en los datos cambiar a modo 'activo' si es otro caracter inválido: ignorar y cancelar paquete cambiar a modo 'ocio' si estamos en modo 'activo' si el caracter es FEnd (0xC0), si el tamaño de lo recibido es 0, marcar inicio de paquete sino (tamaño > 0) retornar con el paquete si es FEsc (0xDB) cambiar a modo 'escape' si es otro caracter guardar en datos recibir_paquete_controlado repetir recibir_paquete_crudo calcular suma de control si es valido, retornar el paquete y su tamaño
También será más facil de agregar funcionalidad nueva. Por ejemplo, si se decide agregar control de exceso de tiempo de espera, resulta lógico implementarlo en el nivel mas bajo.
| (c) John Coppens ON6JC/LW3HAZ | correo |