Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
clock.h@121:ee02790d00b7, 2015-05-08 (annotated)
- 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?
User | Revision | Line number | New 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 |