Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
clock.h
- Committer:
- klauss
- Date:
- 2015-11-24
- Revision:
- 137:32dd35a6dbc9
- Parent:
- 132:05cd37f7e007
File content as of revision 137:32dd35a6dbc9:
/** * @file clock.h * @Synopsis Implementa as funcionalidades de requisição e atualização do clock usado pela header e pelos CBx * @author Jhonatan Casale * @version 1 * @date 2014-05-04 */ #ifndef __CLOCK_H__ #define __CLOCK_H__ #include <stdint.h> #include "EthernetInterface.h" #include "mbed.h" #include "debug.h" %: include "shared_variables.h" %: include "config_manager.h" const uint16_t EXTERNAL_TIME_REQUEST_WAIT_SECONDS = 300; ///< Tempo que a Header espera para sincronizar o timer com o servidor. const uint16_t CLOCK_HEADER_PORT = 8975; ///< Porta usada pela Header para essa comunicação. const int TIME_MSG_SIZE = 64; ///< Tamanho ( em bytes ) utilizado nas sincronizações. const int CLOCK_SERVER_PORT = 123; ///< Porta destino no servidor, para onde a Header irá encaminhar os pacotes de pedido de clock. extern time_t current_time; ///< Representa o tempo em Unixtime extern UDPSocket clock_sock; ///< Socket usado na comunicação com o servidor, representa o lado cliente ( Header ) extern Endpoint clock_server; ///< Socket usado na comunicação com o servidor, representa o lado servidor ( Server ( * ) ) extern Timer server_clock_timer; ///< Timer usado para gerenciar os pedidos de clock para o Servidor. //*-----------------------------------------------------------------------------------------------------------------------------*// /** * @Synopsis Monta e envia o pacote de pedido de clock para o servidor, em caso de falha no envio, tente reconectar o socket * * @return O numero de bytes efetivamente colocados na fila UDP de envio, -1 em caso de falha. * * Exemplo: * @code * ... * int request_clock_to_server_ret = request_clock_to_server (); * ... * @endcode */ int request_clock_to_server( void ); /** * @Synopsis Controla o pedido de clock para o servidor, a cada EXTERNAL_TIME_REQUEST_WAIT_SECONDS segundos * * @return 0x30 nos casos em que não enviou o pacote, ou retorna o valor devolvido por request_clock_to_server () * * Exemplo: * @code * ... * check_clock (); * ... * @endcode */ int check_clock( void ); /** * @Synopsis Atualiza a referência de clock caso seja necessario ( se | tempo_local - tempo_recebido | > 2 * * @return A diferença entre as referências de tempo ( local - recebido ). * * Exemplo: * @code * ... * update_clock (); * ... * @endcode */ int update_clock ( void ); /** * @Synopsis Usada para iniciar o server_clock_timer, e demais configurações iniciais. * * @return Zero ( 0 ) em caso de sucesso, numeros diferentes de zero em caso de ocorrencia de erros. * * Exemplo: * @code * ... * init_clock (); * ... * @endcode */ int init_clock ( void ); /** * @Synopsis Tenta reconectar o socket em caso na utilização * * @return O valor retornado pelo método sock.bind (); * * Exemplo: * @code * ... * clock_sock_reconnect (); * ... * @endcode */ int clock_sock_reconnect ( void ); /** * @Synopsis Exibe uma mensagem no formato "current_time : [Unixtime] clock() : [Vz_time]" * * @return O tamanho ( em bytes ) da mensagem que sera escrita na tela * * Exemplo: * @code * ... * show_clock (); * ... * @endcode */ int show_clock ( void ); #endif