VZTECH / Mbed 2 deprecated main_src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers clock.h Source File

clock.h

Go to the documentation of this file.
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