Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

prompt.h

Committer:
klauss
Date:
2015-05-25
Revision:
128:3ae1c74773a8
Parent:
127:e7160a463b6c
Child:
132:05cd37f7e007

File content as of revision 128:3ae1c74773a8:

/**
 * @file prompt.h
 * @Synopsis Implementa as funcionalidades de prompt/prompt-eth da Header.
 * @author Fernando Cola / Jhontan Casale
 * @version 1
 * @date 2014-11-05
 */

#ifndef _PROMPT_H
#define _PROMPT_H

#include "bits.h"
#include "mbed.h"
#include "debug.h"
#include "flood.h"
#include "vz_protocol.h"
#include "shared_variables.h"
#include "power_source_monitoring.h"

#include <stdlib.h>

const uint8_t PVERSION = 25;
const uint8_t PROMPT_UDP_COMMAND_SIZE = 64;
const uint8_t PERSISTENT_TCP_IDLE_MAX_TIME = 30;

const uint16_t TCP_IDLE_MAX_TIME = 360;
///< Define o tempo maximo de espera por um novo comando via eth, dado que já estamos em uma sessão TCP.

const uint16_t TCP_ALIVE_IDLE_MAX_TIME = 360;
///< Define o tempo maximo de espera por um novo comando via eth dado que já estamos em uma sessão TCP e a flag tcp_alive esta on.

const uint16_t PROMPT_ETH_BUFFER_SIZE = 1024;
///< Representa o tamanho máximo do pacote recebido pelo prompt da Header.

const uint16_t DEBUGBUFSIZE = PROMPT_ETH_BUFFER_SIZE;
///< Define o tamanho do buffer de entrada de dados.

extern uint8_t dog;
///< Variável de controle que ativa a mensagem de boas vindas.

extern bool flood_silence;

extern bool delayed_flood;
///< Variável de controle do envio de pacotes de flood off

extern bool tcp_alive;
///< Flag que indica para não dar timeout na conexão tcp

extern Timer tcp_timer;
///< Timer responsavel por dar timeout por não utilização de recurso.

/**
 * @Synopsis Principal função de processamento de comandos.
 *
 * \note Apesar de formalmente receber apenas um parâmetro, esta função verifica uma porta TCP para verificar eventual
 * envio de comandos, processando qualquer comando enviado por um usuário ligado na rede.
 *
 * @param ethernet_pkg Uma string de comando que será analisada, caso seja um comando válido, executa-o.
 *
 * @return NULL, sempre retorna NULL.
 *
 * Exemplo:
 * @code
 * ...
 *  char * returned_prompt = prompt_process( NULL );
 * ...
 * @endcode
 */
char * prompt_process ( char * msg_from_cb, int length );

/**
 * @Synopsis Inicializa o prompt e os sockets de conexão eth
 *
 * Exemplo:
 * @code
 * ...
 *  init_prompt();
 * ...
 * @endcode
 */
int init_prompt_eth ( void );

extern char * debug_buf;
///< Buffer de entrada dos dados via serial.

inline void reconnect_udp_prompt_process( void )
{
    udp_client.close();
    udp_client.set_blocking( false, 0 );
    udp_client.bind( UDP_PORT_LISTENER );
}

#endif