![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: prompt.h
- Revision:
- 69:65665afbad5d
- Parent:
- 67:cdedc64d9921
- Child:
- 72:895ca792c647
--- a/prompt.h Fri Nov 07 17:57:55 2014 +0000 +++ b/prompt.h Wed Nov 12 13:25:54 2014 +0000 @@ -1,3 +1,11 @@ +/** + * @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 @@ -8,99 +16,362 @@ #include "parallelcpld.h" #include "flood.h" -#define TCP_IDLE_MAX_TIME 45 +#define TCP_IDLE_MAX_TIME 45 +///< Define o tempo maximo de espera por um novo comando via eth, dado que já estamos em uma sessão TCP + #define DEBUGBUFSIZE 50 +///< Define o tamanho do buffer de entrada de dados. extern uint8_t debug_sip; +///< Variável de controle que ativa o debug sip. extern uint8_t debug_alive; +///< Variável de controle que ativa o debug de impressao periódica dos cbx registrados na lógica. extern uint8_t debug_prompt; +///< Variável de controle que ativa o debug do prompt. extern uint8_t debug_vector; +///< Variável de controle que ativa o debug do vector. extern uint8_t debug_cb; +///< Variável de controle que ativa o debug da classe Call_box. extern uint8_t debug_main; +///< Variável de controle que ativa o debug da main. extern uint8_t debug_cks; +///< Variável de controle que ativa o debug do ckechsum dos pacotes recebidos. extern uint8_t debug_cb_rx; +///< Variável de controle que ativa o debug dos pacotes recebidos do CBx. extern uint8_t debug_cb_tx; +///< Variável de controle que ativa o debug dos pacotes enviados para o CBx. extern uint8_t debug_eth_rx; +///< Variável de controle que ativa o debug dos pacotes recebidos da eth \note não implementado. extern uint8_t debug_eth_tx; +///< Variável de controle que ativa o debug dos pacotes enviados para a eth \note não implementado. extern uint8_t debug_prompt_eth; +///< Variável de controle que ativa o debug do prompt eth. extern uint8_t debug_file; +///< Variável de controle que ativa o debug do sistema de arquivos. extern bool dbl; +///< Variável de controle que ativa o debug do protocolo de bootloader dos CBx extern uint8_t test_debug; +///< Variável de controle que ativa o debug de test. extern uint8_t pcks_s; +///< Variável de controle que ativa a exibição dos contadores de cks dos pacotes. extern uint8_t pshowcb; +///< Variável de controle que ativa a exibição dos CBx registrados. extern uint8_t dog; +///< Variável de controle que ativa a mensagem de boas vindas. + +extern FILE *fmask; ///< arquivo de mascara de rede +extern FILE *fgate; ///< arquivo de gateway ip + +extern FILE *fip; ///< arquivo de header ip +extern FILE *fext; ///< arquivo de header ext +extern FILE *fport; ///< arquivo de header sip port + +extern FILE *fsip; ///< arquivo de server sip ip +extern FILE *fserext; ///< arquivo de server sip ext +extern FILE *fsport; ///< arquivo de server sip port + +extern FILE *fudpport; ///< arquivo de porta udp que a header escuta +extern FILE *ftcpport; ///< arquivo de porta tcp que a header escuta +extern FILE *ftip; ///< arquivo de IP do servidor para envio de telemetria +extern FILE *ftport; ///< arquivo de Porta UDP do servidor para envio de telemetria -extern FILE *fmask; // mascara de rede -extern FILE *fgate; // gateway ip +/** + * @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 * ethernet_pkg ); + +/** + * @Synopsis Init file system and check if files exist + * + * Exemplo: + * @code + * ... + * init_fsystem(); + * ... + * @endcode + */ +void init_fsystem(); -extern FILE *fip; // header ip -extern FILE *fext; // header ext -extern FILE *fport; // header sip port +/** + * @Synopsis Inicializa o prompt e os sockets de conexão eth + * + * Exemplo: + * @code + * ... + * init_prompt(); + * ... + * @endcode + */ +void init_prompt(); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/myip.txt + * + * @param new_header_ip Atualiza o valor de /qspi/myip.txt sobrescrevendo-o com o valor de new_header_ip + * + * Exemplo: + * @code + * ... + * set_ip( "192.168.120.2" ); + * ... + * @endcode + */ +void set_ip( char * new_header_ip ); -extern FILE *fsip; // server sip ip -extern FILE *fserext; // server sip ext -extern FILE *fsport; // server sip port +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/myext.txt + * + * @param new_header_ext Atualiza o valor de /qspi/myext.txt sobrescrevendo-o com o valor de new_header_ext + * + * Exemplo: + * @code + * ... + * set_header_ext( 912 ); + * ... + * @endcode + */ +void set_header_ext( int new_header_ext ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/mysipport.txt + * + * @param new_header_sip_port Atualiza o valor de /qspi/mysipport.txt sobrescrevendo-o com o valor de new_header_sip_port + * + * Exemplo: + * @code + * ... + * set_header_sip_port( 820 ); + * ... + * @endcode + */ +void set_header_sip_port( int new_header_sip_port ); -extern FILE *fudpport; // porta udp que a header escuta -extern FILE *ftcpport; // porta tcp que a header escuta -extern FILE *ftip; // IP do servidor para envio de telemetria -extern FILE *ftport; // Porta UDP do servidor para envio de telemetria +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/serverip.txt + * + * @param new_server_ip Atualiza o valor de /qspi/serverip.txt sobrescrevendo-o com o valor de new_server_ip + * + * Exemplo: + * @code + * ... + * set_header_sip_port( "192.168.120.231" ); + * ... + * @endcode + */ +void set_server_ip( char * new_server_ip ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/peerext.txt + * + * @param new_server_ext Atualiza o valor de /qspi/peerext.txt sobrescrevendo-o com o valor de new_server_ext + * + * Exemplo: + * @code + * ... + * set_header_sip_port( 1011 ); + * ... + * @endcode + */ +void set_server_ext( int new_server_ext ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/serverport.txt + * + * @param new_server_port Atualiza o valor de /qspi/serverport.txt sobrescrevendo-o com o valor de new_server_port + * + * Exemplo: + * @code + * ... + * set_header_sip_port( 1562 ); + * ... + * @endcode + */ +void set_server_port( int new_server_port ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/udpport.txt + * + * @param new_udp_port_listener Atualiza o valor de /qspi/udpport.txt sobrescrevendo-o com o valor de new_udp_port_listener + * + * Exemplo: + * @code + * ... + * set_udp_port_listener( 11147 ); + * ... + * @endcode + */ +void set_udp_port_listener( int new_udp_port_listener ); -char * prompt_process( char * ethernet_pkg ); -void init_fsystem(); -void init_prompt(); -void set_ip( char * new_header_ip ); -void set_header_ext( int new_header_ext ); -void set_header_sip_port( int new_header_sip_port ); -void set_server_ip( char * new_server_ip ); -void set_server_ext( int new_server_ext ); -void set_server_port( int new_server_port ); -void set_udp_port_listener( int new_udp_port_listener ); +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/tcpport.txt + * + * @param new_tcp_port_listener Atualiza o valor de /qspi/tcpport.txt sobrescrevendo-o com o valor de new_tcp_port_listener + * + * Exemplo: + * @code + * ... + * set_tcp_port_listener( 7178 ); + * ... + * @endcode + */ void set_tcp_port_listener( int new_tcp_port_listener ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/telemetry_ip.txt + * + * @param new_telemetry_ip Atualiza o valor de /qspi/telemetry_ip.txt sobrescrevendo-o com o valor de new_telemetry_ip + * + * Exemplo: + * @code + * ... + * set_telemetry_ip( "192.154.123.7" ) + * ... + * @endcode + */ void set_telemetry_ip( char * new_telemetry_ip ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/telemetry_port.txt + * + * @param new_telemetry_port Atualiza o valor de /qspi/telemetry_port.txt sobrescrevendo-o com o valor de new_telemetry_port + * + * Exemplo: + * @code + * ... + * set_telemetry_port( 9193 ); + * ... + * @endcode + */ void set_telemetry_port( int new_telemetry_port ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/mymask.txt + * + * @param new_mask Atualiza o valor de /qspi/mymask.txt sobrescrevendo-o com o valor de new_mask + * + * Exemplo: + * @code + * ... + * set_mask( "255.255.0.0" ); + * ... + * @endcode + */ void set_mask( char * new_mask ); + +/** + * @Synopsis Altera o valor default contido no arquivo /qspi/mygate.txt + * + * @param new_gateway Atualiza o valor de /qspi/mygate.txt sobrescrevendo-o com o valor de new_gateway + * + * Exemplo: + * @code + * ... + * set_gateway( "192.168.118.2" ); + * ... + * @endcode + */ void set_gateway( char * new_gateway ); extern bool from_eth; +///< Variável de controle que indica se o comando processado veio do teclado ( serial ) ou se via eth. extern bool tcp_session; +///< Variável de controle que indica se estamos ou não em uma sessão TCP com algum usuàrio. extern TCPSocketServer tcp_server; +///< Socket responsavel por ouvir determinado porta TCP. extern TCPSocketConnection tcp_client; +///< Representa a presença de algum cliente logado em uma sessão TCP. extern Timer tcp_timer; +///< Timer responsavel por dar timeout por não utilização de recurso. extern UDPSocket udp_server; +///< Socket responsavel por ouvir determinada porta udp. extern Endpoint udp_client; +///< Representa a presença de algum cliente udp. -extern bool from_eth; extern bool udp_request; +///< Variável de controle que nos diz se trata-se de um request vindo da porta UDP. extern char * debug_buf; +///< Buffer de entrada dos dados via serial. extern bool cb_session; +///< Não utilizada atualmente. extern bool cb_status; +///< Não utilizada atualmente. extern bool reset_cks; +///< Variável de controle que reseta os contadores de cks dos pacotes. extern bool debug_telemetry; +///< Variável de controle que aciona o debug de telemetria. extern bool main_test; +///< Variável de controle para acionamento de algum comando de interesse. extern bool list; +///< Variável de controle para listar os CBx registrados na lógica da Header. extern bool rx; +///< Variável de controle para exibição do ultima pacote recebido dos CBx extern bool tx; +///< Variável de controle para exibição do ultimo pacote enviado para o CBx. extern bool stats; +///< Variável de controle para exibição dos contadores de pacotes recebidos por tipo. extern bool r_stats; +///< Variável de controle para resetar os contadores de pacotes recebidos por tipo. extern bool delayed_flood; +///< Variável de controle do envio de pacotes de flood off -extern uint16_t boot_counter; +extern uint16_t boot_counter; +///< Contador dos pacotes de BOOT recebidos extern uint16_t registry_counter; +///< Contador dos pacotes de REGISTRY recebidos extern uint16_t invite_counter; +///< Contador dos pacotes de INVITE recebidos extern uint16_t audio_counter; +///< Contador dos pacotes de AUDIO recebidos extern uint16_t telemetry_counter; +///< Contador dos pacotes de TELEMETRY recebidos extern uint16_t cb_bye_counter; +///< Contador dos pacotes de CB_BYE recebidos extern uint16_t prompt_counter; +///< Contador dos pacotes de PROMPT recebidos extern uint16_t flood_counter; +///< Contador dos pacotes de FLOOD recebidos extern uint16_t bootloader_cbx_counter; +///< Contador dos pacotes de BOOTLOADER_CBX recebidos extern Timer udp_timer; +///< Timer controlador do timeout de requests UDP. -int convert_ext_to_port( int ); +/** + * @Synopsis Função que converte o ramal para a porta, por definição de projeto, cara ramo possui o numero da centena incremental + * permanecendo o resto igual, por exemplo no ramo pilo os ramais são 5000, 5001 -- no lote 1 5100, 5101 -- porem a porta sempre + * se manteve a mesma, o CBx esta configurado como ramal 5000 e porta 5000, assim como o ramal 5100 e porta 5000, em outras palavras + * dado um ramal, calcular a porta é o mesmo que eliminar a centena do numero. + * + * @param ext O ramal do qual se quer calcular a porta vinculada. + * + * @return O valor calculado da porta. + * + * Exemplo: + * @code + * ... + * int ext = 5220; + * int port = convert_ext_to_port( ext ); + * ... + * @endcode + */ +int convert_ext_to_port( int ext ); #endif \ No newline at end of file