![](/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: clock.h
- Revision:
- 121:ee02790d00b7
- Parent:
- 120:770f00554b1e
- Child:
- 122:480c44b0e205
--- a/clock.h Mon May 04 17:25:29 2015 +0000 +++ b/clock.h Fri May 08 04:15:23 2015 +0000 @@ -1,41 +1,137 @@ +/** + * @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 <stdlib.h> -#include <stdint.h> -#include <string.h> -#include "mbed.h" -#include "EthernetInterface.h" -#include "debug.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 EXTERNAL_TIME_REQUEST_WAIT_SECONDS = 300; +const uint16_t CLOCK_HEADER_PORT = 8975; +///< Porta usada pela Header para essa comunicação. const int TIME_MSG_SIZE = 64; - -const char CLOCK_SERVER_IP[] = "192.168.120.120"; +///< 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 external_time; +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 ); -int update_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 Converte o current_time do sistema para string. + * + * @param buffer Buffer de escrita onde sera preenchido com o current_time no formato VZ + * + * Exemplo: + * @code + * ... + * char buffer [ 16 ]; + * print_clock ( buffer ); + * ... + * @endcode + */ void print_clock ( uint8_t * buffer ); +/** + * @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 \ No newline at end of file