Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
clock.h@122:480c44b0e205, 2015-05-11 (annotated)
- Committer:
- klauss
- Date:
- Mon May 11 15:16:36 2015 +0000
- Revision:
- 122:480c44b0e205
- Parent:
- 121:ee02790d00b7
- Child:
- 132:05cd37f7e007
E00 - Limitar em 1500 o show_sip
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 | 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 | 122:480c44b0e205 | 16 | #include "shared_variables.h" |
klauss | 122:480c44b0e205 | 17 | #include "file_system_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 |