Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
clock.h
00001 /** 00002 * @file clock.h 00003 * @Synopsis Implementa as funcionalidades de requisição e atualização do clock usado pela header e pelos CBx 00004 * @author Jhonatan Casale 00005 * @version 1 00006 * @date 2014-05-04 00007 */ 00008 00009 #ifndef __CLOCK_H__ 00010 #define __CLOCK_H__ 00011 00012 #include <stdint.h> 00013 #include "EthernetInterface.h" 00014 #include "mbed.h" 00015 #include "debug.h" 00016 %: include "shared_variables.h" 00017 %: include "config_manager.h" 00018 00019 const uint16_t EXTERNAL_TIME_REQUEST_WAIT_SECONDS = 300; 00020 ///< Tempo que a Header espera para sincronizar o timer com o servidor. 00021 00022 const uint16_t CLOCK_HEADER_PORT = 8975; 00023 ///< Porta usada pela Header para essa comunicação. 00024 00025 const int TIME_MSG_SIZE = 64; 00026 ///< Tamanho ( em bytes ) utilizado nas sincronizações. 00027 00028 const int CLOCK_SERVER_PORT = 123; 00029 ///< Porta destino no servidor, para onde a Header irá encaminhar os pacotes de pedido de clock. 00030 00031 extern time_t current_time; 00032 ///< Representa o tempo em Unixtime 00033 00034 extern UDPSocket clock_sock; 00035 ///< Socket usado na comunicação com o servidor, representa o lado cliente ( Header ) 00036 00037 extern Endpoint clock_server; 00038 ///< Socket usado na comunicação com o servidor, representa o lado servidor ( Server ( * ) ) 00039 00040 extern Timer server_clock_timer; 00041 ///< Timer usado para gerenciar os pedidos de clock para o Servidor. 00042 00043 //*-----------------------------------------------------------------------------------------------------------------------------*// 00044 00045 /** 00046 * @Synopsis Monta e envia o pacote de pedido de clock para o servidor, em caso de falha no envio, tente reconectar o socket 00047 * 00048 * @return O numero de bytes efetivamente colocados na fila UDP de envio, -1 em caso de falha. 00049 * 00050 * Exemplo: 00051 * @code 00052 * ... 00053 * int request_clock_to_server_ret = request_clock_to_server (); 00054 * ... 00055 * @endcode 00056 */ 00057 int request_clock_to_server( void ); 00058 00059 /** 00060 * @Synopsis Controla o pedido de clock para o servidor, a cada EXTERNAL_TIME_REQUEST_WAIT_SECONDS segundos 00061 * 00062 * @return 0x30 nos casos em que não enviou o pacote, ou retorna o valor devolvido por request_clock_to_server () 00063 * 00064 * Exemplo: 00065 * @code 00066 * ... 00067 * check_clock (); 00068 * ... 00069 * @endcode 00070 */ 00071 int check_clock( void ); 00072 00073 /** 00074 * @Synopsis Atualiza a referência de clock caso seja necessario ( se | tempo_local - tempo_recebido | > 2 00075 * 00076 * @return A diferença entre as referências de tempo ( local - recebido ). 00077 * 00078 * Exemplo: 00079 * @code 00080 * ... 00081 * update_clock (); 00082 * ... 00083 * @endcode 00084 */ 00085 int update_clock ( void ); 00086 00087 /** 00088 * @Synopsis Usada para iniciar o server_clock_timer, e demais configurações iniciais. 00089 * 00090 * @return Zero ( 0 ) em caso de sucesso, numeros diferentes de zero em caso de ocorrencia de erros. 00091 * 00092 * Exemplo: 00093 * @code 00094 * ... 00095 * init_clock (); 00096 * ... 00097 * @endcode 00098 */ 00099 int init_clock ( void ); 00100 00101 /** 00102 * @Synopsis Tenta reconectar o socket em caso na utilização 00103 * 00104 * @return O valor retornado pelo método sock.bind (); 00105 * 00106 * Exemplo: 00107 * @code 00108 * ... 00109 * clock_sock_reconnect (); 00110 * ... 00111 * @endcode 00112 */ 00113 int clock_sock_reconnect ( void ); 00114 00115 /** 00116 * @Synopsis Exibe uma mensagem no formato "current_time : [Unixtime] clock() : [Vz_time]" 00117 * 00118 * @return O tamanho ( em bytes ) da mensagem que sera escrita na tela 00119 * 00120 * Exemplo: 00121 * @code 00122 * ... 00123 * show_clock (); 00124 * ... 00125 * @endcode 00126 */ 00127 int show_clock ( void ); 00128 00129 #endif
Generated on Tue Jul 12 2022 16:25:02 by
