Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Sep 01 17:21:11 2015 +0000
Revision:
132:05cd37f7e007
Parent:
122:480c44b0e205
Substitui??o de; send_msg -> vz_printf; debug_msg -> vz_debug

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