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
