Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Fri May 08 04:15:23 2015 +0000
Revision:
121:ee02790d00b7
Parent:
120:770f00554b1e
Child:
122:480c44b0e205
compiling

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 121:ee02790d00b7 1 /**
klauss 121:ee02790d00b7 2 * @file clock.h
klauss 121:ee02790d00b7 3 * @Synopsis Implementa as funcionalidades de requisição e atualização do clock usado pela header e pelos CBx
klauss 121:ee02790d00b7 4 * @author Jhonatan Casale
klauss 121:ee02790d00b7 5 * @version 1
klauss 121:ee02790d00b7 6 * @date 2014-05-04
klauss 121:ee02790d00b7 7 */
klauss 121:ee02790d00b7 8
klauss 119:ee6a53069455 9 #ifndef __CLOCK_H__
klauss 119:ee6a53069455 10 #define __CLOCK_H__
klauss 119:ee6a53069455 11
klauss 121:ee02790d00b7 12 const uint16_t EXTERNAL_TIME_REQUEST_WAIT_SECONDS = 300;
klauss 121:ee02790d00b7 13 ///< Tempo que a Header espera para sincronizar o timer com o servidor.
klauss 120:770f00554b1e 14
klauss 121:ee02790d00b7 15 const uint16_t CLOCK_HEADER_PORT = 8975;
klauss 121:ee02790d00b7 16 ///< Porta usada pela Header para essa comunicação.
klauss 120:770f00554b1e 17
klauss 120:770f00554b1e 18 const int TIME_MSG_SIZE = 64;
klauss 121:ee02790d00b7 19 ///< Tamanho ( em bytes ) utilizado nas sincronizações.
klauss 120:770f00554b1e 20
klauss 120:770f00554b1e 21 const int CLOCK_SERVER_PORT = 123;
klauss 121:ee02790d00b7 22 ///< Porta destino no servidor, para onde a Header irá encaminhar os pacotes de pedido de clock.
klauss 119:ee6a53069455 23
klauss 119:ee6a53069455 24 extern time_t current_time;
klauss 121:ee02790d00b7 25 ///< Representa o tempo em Unixtime
klauss 119:ee6a53069455 26
klauss 119:ee6a53069455 27 extern UDPSocket clock_sock;
klauss 121:ee02790d00b7 28 ///< Socket usado na comunicação com o servidor, representa o lado cliente ( Header )
klauss 119:ee6a53069455 29
klauss 119:ee6a53069455 30 extern Endpoint clock_server;
klauss 121:ee02790d00b7 31 ///< Socket usado na comunicação com o servidor, representa o lado servidor ( Server ( * ) )
klauss 119:ee6a53069455 32
klauss 121:ee02790d00b7 33 extern Timer server_clock_timer;
klauss 121:ee02790d00b7 34 ///< Timer usado para gerenciar os pedidos de clock para o Servidor.
klauss 121:ee02790d00b7 35
klauss 121:ee02790d00b7 36 //*-----------------------------------------------------------------------------------------------------------------------------*//
klauss 119:ee6a53069455 37
klauss 121:ee02790d00b7 38 /**
klauss 121:ee02790d00b7 39 * @Synopsis Monta e envia o pacote de pedido de clock para o servidor, em caso de falha no envio, tente reconectar o socket
klauss 121:ee02790d00b7 40 *
klauss 121:ee02790d00b7 41 * @return O numero de bytes efetivamente colocados na fila UDP de envio, -1 em caso de falha.
klauss 121:ee02790d00b7 42 *
klauss 121:ee02790d00b7 43 * Exemplo:
klauss 121:ee02790d00b7 44 * @code
klauss 121:ee02790d00b7 45 * ...
klauss 121:ee02790d00b7 46 * int request_clock_to_server_ret = request_clock_to_server ();
klauss 121:ee02790d00b7 47 * ...
klauss 121:ee02790d00b7 48 * @endcode
klauss 121:ee02790d00b7 49 */
klauss 119:ee6a53069455 50 int request_clock_to_server( void );
klauss 119:ee6a53069455 51
klauss 121:ee02790d00b7 52 /**
klauss 121:ee02790d00b7 53 * @Synopsis Controla o pedido de clock para o servidor, a cada EXTERNAL_TIME_REQUEST_WAIT_SECONDS segundos
klauss 121:ee02790d00b7 54 *
klauss 121:ee02790d00b7 55 * @return 0x30 nos casos em que não enviou o pacote, ou retorna o valor devolvido por request_clock_to_server ()
klauss 121:ee02790d00b7 56 *
klauss 121:ee02790d00b7 57 * Exemplo:
klauss 121:ee02790d00b7 58 * @code
klauss 121:ee02790d00b7 59 * ...
klauss 121:ee02790d00b7 60 * check_clock ();
klauss 121:ee02790d00b7 61 * ...
klauss 121:ee02790d00b7 62 * @endcode
klauss 121:ee02790d00b7 63 */
klauss 119:ee6a53069455 64 int check_clock( void );
klauss 119:ee6a53069455 65
klauss 121:ee02790d00b7 66 /**
klauss 121:ee02790d00b7 67 * @Synopsis Atualiza a referência de clock caso seja necessario ( se | tempo_local - tempo_recebido | > 2
klauss 121:ee02790d00b7 68 *
klauss 121:ee02790d00b7 69 * @return A diferença entre as referências de tempo ( local - recebido ).
klauss 121:ee02790d00b7 70 *
klauss 121:ee02790d00b7 71 * Exemplo:
klauss 121:ee02790d00b7 72 * @code
klauss 121:ee02790d00b7 73 * ...
klauss 121:ee02790d00b7 74 * update_clock ();
klauss 121:ee02790d00b7 75 * ...
klauss 121:ee02790d00b7 76 * @endcode
klauss 121:ee02790d00b7 77 */
klauss 121:ee02790d00b7 78 int update_clock ( void );
klauss 119:ee6a53069455 79
klauss 121:ee02790d00b7 80 /**
klauss 121:ee02790d00b7 81 * @Synopsis Usada para iniciar o server_clock_timer, e demais configurações iniciais.
klauss 121:ee02790d00b7 82 *
klauss 121:ee02790d00b7 83 * @return Zero ( 0 ) em caso de sucesso, numeros diferentes de zero em caso de ocorrencia de erros.
klauss 121:ee02790d00b7 84 *
klauss 121:ee02790d00b7 85 * Exemplo:
klauss 121:ee02790d00b7 86 * @code
klauss 121:ee02790d00b7 87 * ...
klauss 121:ee02790d00b7 88 * init_clock ();
klauss 121:ee02790d00b7 89 * ...
klauss 121:ee02790d00b7 90 * @endcode
klauss 121:ee02790d00b7 91 */
klauss 119:ee6a53069455 92 int init_clock ( void );
klauss 119:ee6a53069455 93
klauss 121:ee02790d00b7 94 /**
klauss 121:ee02790d00b7 95 * @Synopsis Tenta reconectar o socket em caso na utilização
klauss 121:ee02790d00b7 96 *
klauss 121:ee02790d00b7 97 * @return O valor retornado pelo método sock.bind ();
klauss 121:ee02790d00b7 98 *
klauss 121:ee02790d00b7 99 * Exemplo:
klauss 121:ee02790d00b7 100 * @code
klauss 121:ee02790d00b7 101 * ...
klauss 121:ee02790d00b7 102 * clock_sock_reconnect ();
klauss 121:ee02790d00b7 103 * ...
klauss 121:ee02790d00b7 104 * @endcode
klauss 121:ee02790d00b7 105 */
klauss 119:ee6a53069455 106 int clock_sock_reconnect ( void );
klauss 119:ee6a53069455 107
klauss 121:ee02790d00b7 108 /**
klauss 121:ee02790d00b7 109 * @Synopsis Converte o current_time do sistema para string.
klauss 121:ee02790d00b7 110 *
klauss 121:ee02790d00b7 111 * @param buffer Buffer de escrita onde sera preenchido com o current_time no formato VZ
klauss 121:ee02790d00b7 112 *
klauss 121:ee02790d00b7 113 * Exemplo:
klauss 121:ee02790d00b7 114 * @code
klauss 121:ee02790d00b7 115 * ...
klauss 121:ee02790d00b7 116 * char buffer [ 16 ];
klauss 121:ee02790d00b7 117 * print_clock ( buffer );
klauss 121:ee02790d00b7 118 * ...
klauss 121:ee02790d00b7 119 * @endcode
klauss 121:ee02790d00b7 120 */
klauss 119:ee6a53069455 121 void print_clock ( uint8_t * buffer );
klauss 119:ee6a53069455 122
klauss 121:ee02790d00b7 123 /**
klauss 121:ee02790d00b7 124 * @Synopsis Exibe uma mensagem no formato "current_time : [Unixtime] clock() : [Vz_time]"
klauss 121:ee02790d00b7 125 *
klauss 121:ee02790d00b7 126 * @return O tamanho ( em bytes ) da mensagem que sera escrita na tela
klauss 121:ee02790d00b7 127 *
klauss 121:ee02790d00b7 128 * Exemplo:
klauss 121:ee02790d00b7 129 * @code
klauss 121:ee02790d00b7 130 * ...
klauss 121:ee02790d00b7 131 * show_clock ();
klauss 121:ee02790d00b7 132 * ...
klauss 121:ee02790d00b7 133 * @endcode
klauss 121:ee02790d00b7 134 */
klauss 119:ee6a53069455 135 int show_clock ( void );
klauss 120:770f00554b1e 136
klauss 119:ee6a53069455 137 #endif