Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Implementa as principais funcionalidades do protocolo de comunicação entre os CBx -> Header e Header -> CBx. More...
Go to the source code of this file.
Functions | |
uint16_t | vz_checksum (uint8_t *buffer, size_t length) |
Calcula o checksum do pacote. | |
uint8_t * | parse_vz_pkg (int *ext, int *port, volatile uint8_t *type, uint8_t *cb_buffer) |
Esta é a função responsável por, dado um pacote recebido dos CBx, quebra-lo em ramal( ext ), porta, type e dados. | |
uint8_t * | build_cb_package (const int ext, const int port, const uint8_t type, const char *cb_buffer, const uint8_t seq_num, const int length, uint8_t *pkg) |
Função responsavel por montar o pacote para envio para o CBx seguindo o formato do protocolo VZ. | |
int | init_ranges (void) |
Obtém uma referência de clock de um servidor. | |
void | print_clock (uint8_t *buffer) |
Converte o current_time do sistema para string. | |
Variables | |
__pad0__ | |
Registra o numero do menor ramal conhecido pela header até o momento. | |
int | end |
Registra o numero do maior ramal conhecido pela header até o momento. | |
const uint8_t | VZ_HEADER_OFFSET = 7 |
Indica o inicio dos dados recebidos efetivamente no pacote VZ. | |
const uint8_t | CLOCK_SYNC_SIZE = 14 |
Indica o numero de bytes ocupados pelo relogio no pacote transmitido. | |
const uint8_t | SEQ_NUM_SIZE = 1 |
Indica o numero de bytes ocupados para uso de sequence number. | |
const uint8_t | SEQ_NUM_PLACE = 7 |
Indica o numero de bytes ocupados para uso de sequence number. | |
const uint8_t | CB_AUDIO_DATA_SIZE = 240 |
Indica o numero de pacotes enviados pelo CBx referente a dados de audio. | |
const uint8_t | TIMESLICE_PLACE = 22 |
Indica o local ( em relação ao começo do pacote ) onde se encontra o timeslice. | |
const uint8_t | TYPE_PLACE = 6 |
Indica o local ( em relação ao começo do pacote ) onde se encontra o timeslice. | |
const uint16_t | BASE_PORT = 5000 |
Estabelece o menor ramal aceito para tratamento. | |
const uint8_t | u8_MAX_CB_IN_A_BRANCH = 52 |
Estabelece o nro máximo de CBx em um mesmo ramo. | |
const uint8_t | BOOT = 0x00 |
Indica o tipo boot, enviado pelo CBx, assim que o mesmo liga ou sofre reboot. | |
const uint8_t | REGISTRY = 0x02 |
Tipo de registro, enviado pelo CBx, quando o mesmo quer se registrar, enviado pela Header para verificar se determinado CBx ainda esta ativo. | |
const uint8_t | REGISTRY_ACK = 0x02 bitor BIT7 |
"ack de resposta" do tiop REGISTRY | |
const uint8_t | INVITE = 0x04 |
Representa o tipo de pedido de invite, enviado pelo CBx sempre quando o mesmo quer iniciar uma ligação com o server. | |
const uint8_t | INVITE_ACK = 0x04 bitor BIT7 |
"ack de resposta" do tiop INVITE | |
const uint8_t | AUDIO = 0x08 |
Pacotes do tipo audio são trocados entre Header e CBx durante a ligação, representam os dados RTP. | |
const uint8_t | TELEMETRY = 0x10 |
Define o tipo de pacote de telemetria enviado pelo CBx. | |
const uint8_t | BOOTLOADER_CBX = 0x03 |
Define o tipo de pacote para a gravação do CBx. | |
const uint8_t | CB_BYE = 0x20 |
Representa o tipo de pacote que o CBx envia para a Header solicitando o final da ligação. | |
const uint8_t | CB_BYE_ACK = 0x20 bitor BIT7 |
"ack de resposta" do tiop CB_BYE | |
const uint8_t | PROMPT = 0x01 |
Identifica o tipo de pacote responsavel por mandar comandos executáveis no Cbx. | |
const uint8_t | FLOOD = 0x40 |
Representa os pacotes de flood, úteis para validação de comunicação Header-CBx. | |
const uint8_t | FW = 0x50 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW1 = 0x51 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW2 = 0x52 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW3 = 0x53 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW4 = 0x54 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW5 = 0x55 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | FW6 = 0x56 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada. | |
const uint8_t | CB_STATS = 0x07 |
Tipo de comunicação de estatisticas de rede, enviadas pela CBx. | |
const uint8_t | CB_STATS_ACK = 0x07 bitor BIT7 |
"ack de resposta" do tiop CB_STATS_ACK | |
const uint16_t | BROADCAST_EXT = 0xf0f3 |
Ramal de broadcast, usado na comunicação Header -> CBx. | |
const uint8_t | DO_NOTHING = 0x7f |
Representa o tipo de idle, importante para algumas comunicações. | |
const uint16_t | RX_CB_IDLE = 300 |
Tempo maximo ( countdown em segundos ) que a Header espera por algum pacote no lado fibra, deixa de tickar o wdt. | |
const uint16_t | ETH_CONNECT_TIMEOUT = 330 |
Tempo maximo ( countdown em segundos ) que a Header espera tentando conectar na interface ETH, deixa de tickar o wdt quando chega em zero. | |
const uint16_t | RTP_MSG_SIZE = 160 |
Tamanho em bytes ocupados pelos pacotes de audio no sentido * -> Header -> CBx. | |
uint32_t | pkg_zero |
Contador de pacotes contendo somente zeros. | |
uint32_t | pkg_ckserr |
Contador de pacotes em que o checksum resultou divergente do calculado/recebido. | |
uint32_t | pkg_cksok |
Contador de pacotes em que o checksum resultou o mesmo calculado e o recebido. |
Detailed Description
Implementa as principais funcionalidades do protocolo de comunicação entre os CBx -> Header e Header -> CBx.
- Version:
- 1
- Date:
- 2014-11-05
Definition in file vz_protocol.h.
Function Documentation
uint8_t* build_cb_package | ( | const int | ext, |
const int | port, | ||
const uint8_t | type, | ||
const char * | cb_buffer, | ||
const uint8_t | seq_num, | ||
const int | length, | ||
uint8_t * | pkg | ||
) |
Função responsavel por montar o pacote para envio para o CBx seguindo o formato do protocolo VZ.
- Parameters:
-
ext O ramal do CBx destino deste pacote. port A porta do CBx destino deste pacote. type O tipo do pacote que será enviado para o CBx. cb_buffer Os dados que serão colocados nesse pacote. seq_num O numero do sequência deste pacote. length O tamanho ( em bytes ) dos dados que serão enviados. pkg Um ponteiro que recebera o pacote montado e pronto para envio.
- Returns:
- O pacote montado e pronto para envio.
Exemplo:
... int ext = 1011; port = 1011; type = __REGISTRY__; send2callboxes( __build_cb_package__( ext, port, type, ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) ); ...
Definition at line 131 of file vz_protocol.cpp.
int init_ranges | ( | void | ) |
Obtém uma referência de clock de um servidor.
- Parameters:
-
buffer Imprime a referência do relógio nesta posição de memória.
- Note:
- Por definição de projeto, o relógio ocupa 14 bytes, seguindo o formato
| ano | ano | ano | ano | mes | mes | dia | dia | hora | hora | minuto | minuto | segundo | segundo |
Exemplo:
20141105101235
Definition at line 9 of file vz_protocol.cpp.
uint8_t* parse_vz_pkg | ( | int * | ext, |
int * | port, | ||
volatile uint8_t * | type, | ||
uint8_t * | cb_buffer | ||
) |
Esta é a função responsável por, dado um pacote recebido dos CBx, quebra-lo em ramal( ext ), porta, type e dados.
- Parameters:
-
ext Um ponteiro para onde sera setado o ramal do CBx que enviou este pacote. port Um ponteiro para onde sera setado a porta do CBx que enviou este pacote. type Um ponteiro para onde sera setado o type de mensagem enviada pelo CBx. cb_buffer O pacote que se deseja decodificar.
- Returns:
- NULL, caso em que o checksum( cc ) calculado não bater com o cc recebido no pacote, retorna NULL também em pacotes do tipo flood, ou no caso em que o pacote recebido para processamento apontar para NULL; em todos esses casos os valores de ext, port e type devem ser desconsiderados para manter a integridade do processamento; retorna um ponteiro para o inicio dos dados enviados pelo CBx e seta ramal, porta e type nos casos em que o pacote recebido for válidado pelo protocolo.
Exemplo:
... int ext, port, type; uint8_t * data, buffer[ __CB_BUFFER_SIZE__ ]; //assumindo que os dados vindos do Call_Box estão armazenados em buffer; data = __parse_vz_pkg__( &ext, &port, &type, buffer ); ...
- Note:
- Formato do pacote VZ :
| E | E | P | P | C | C | T | [ Seq_num | Audio ] | 14[ Clock | Audio ] | [ TS | Audio ] |...|
E = Ext = Ramal
P = Port = Porta
C = Checksum
T = Type = Tipo
Seq_num = Sequence Number = Numero de sequencia
Clock = 14 bytes to sync
...= demais __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__ bytes
Definition at line 18 of file vz_protocol.cpp.
void print_clock | ( | uint8_t * | buffer ) |
Converte o current_time do sistema para string.
- Parameters:
-
buffer Buffer de escrita onde sera preenchido com o current_time no formato VZ
Exemplo:
...
char buffer [ 16 ];
print_clock ( buffer );
...
Definition at line 239 of file vz_protocol.cpp.
uint16_t vz_checksum | ( | uint8_t * | buffer, |
size_t | length | ||
) |
Calcula o checksum do pacote.
- Parameters:
-
buffer Um ponteiro para a região de memória onde os dados de interesse estão localizados. length O numero de elementos que serão considerados no cálculo do checksum
- Returns:
- 0 - caso em que o vetor apontado por buffer estiver setado em NULL. O checksum propriamente calculado caso contrário.
Exemplo:
... // onde cb_buffer contém os dados vindos do Call_Box, Obs. as posições 4 e 5 contém o MSB e LSB do CC calculado pelo Call_Box. uint16_t cc = ( uint16_t )cb_buffer[ 4 ] << 8 or cb_buffer[ 5 ]; if( cc != __checksum__( cb_buffer, __CB_BUFFER_SIZE__ ) ){ //faça alguma coisa ... } ...
Definition at line 223 of file vz_protocol.cpp.
Variable Documentation
Registra o numero do menor ramal conhecido pela header até o momento.
Definition at line 25 of file vz_protocol.h.
const uint8_t AUDIO = 0x08 |
Pacotes do tipo audio são trocados entre Header e CBx durante a ligação, representam os dados RTP.
Definition at line 72 of file vz_protocol.h.
const uint16_t BASE_PORT = 5000 |
Estabelece o menor ramal aceito para tratamento.
Definition at line 51 of file vz_protocol.h.
const uint8_t BOOT = 0x00 |
Indica o tipo boot, enviado pelo CBx, assim que o mesmo liga ou sofre reboot.
Definition at line 57 of file vz_protocol.h.
const uint8_t BOOTLOADER_CBX = 0x03 |
Define o tipo de pacote para a gravação do CBx.
Definition at line 78 of file vz_protocol.h.
const uint16_t BROADCAST_EXT = 0xf0f3 |
Ramal de broadcast, usado na comunicação Header -> CBx.
Definition at line 120 of file vz_protocol.h.
const uint8_t CB_AUDIO_DATA_SIZE = 240 |
Indica o numero de pacotes enviados pelo CBx referente a dados de audio.
Definition at line 42 of file vz_protocol.h.
const uint8_t CB_BYE = 0x20 |
Representa o tipo de pacote que o CBx envia para a Header solicitando o final da ligação.
Definition at line 81 of file vz_protocol.h.
const uint8_t CB_BYE_ACK = 0x20 bitor BIT7 |
"ack de resposta" do tiop CB_BYE
Definition at line 84 of file vz_protocol.h.
const uint8_t CB_STATS = 0x07 |
Tipo de comunicação de estatisticas de rede, enviadas pela CBx.
Definition at line 114 of file vz_protocol.h.
const uint8_t CB_STATS_ACK = 0x07 bitor BIT7 |
"ack de resposta" do tiop CB_STATS_ACK
Definition at line 117 of file vz_protocol.h.
const uint8_t CLOCK_SYNC_SIZE = 14 |
Indica o numero de bytes ocupados pelo relogio no pacote transmitido.
Definition at line 33 of file vz_protocol.h.
const uint8_t DO_NOTHING = 0x7f |
Representa o tipo de idle, importante para algumas comunicações.
Definition at line 123 of file vz_protocol.h.
int end |
Registra o numero do maior ramal conhecido pela header até o momento.
Definition at line 7 of file vz_protocol.cpp.
const uint16_t ETH_CONNECT_TIMEOUT = 330 |
Tempo maximo ( countdown em segundos ) que a Header espera tentando conectar na interface ETH, deixa de tickar o wdt quando chega em zero.
Definition at line 129 of file vz_protocol.h.
const uint8_t FLOOD = 0x40 |
Representa os pacotes de flood, úteis para validação de comunicação Header-CBx.
Definition at line 90 of file vz_protocol.h.
const uint8_t FW = 0x50 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 93 of file vz_protocol.h.
const uint8_t FW1 = 0x51 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 96 of file vz_protocol.h.
const uint8_t FW2 = 0x52 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 99 of file vz_protocol.h.
const uint8_t FW3 = 0x53 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 102 of file vz_protocol.h.
const uint8_t FW4 = 0x54 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 105 of file vz_protocol.h.
const uint8_t FW5 = 0x55 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 108 of file vz_protocol.h.
const uint8_t FW6 = 0x56 |
Tipo para redirecionamento semn tratamento para uma determinada porta UDP pré-configurada.
Definition at line 111 of file vz_protocol.h.
const uint8_t INVITE = 0x04 |
Representa o tipo de pedido de invite, enviado pelo CBx sempre quando o mesmo quer iniciar uma ligação com o server.
Definition at line 66 of file vz_protocol.h.
const uint8_t INVITE_ACK = 0x04 bitor BIT7 |
"ack de resposta" do tiop INVITE
Definition at line 69 of file vz_protocol.h.
uint32_t pkg_ckserr |
Contador de pacotes em que o checksum resultou divergente do calculado/recebido.
Definition at line 3 of file vz_protocol.cpp.
uint32_t pkg_cksok |
Contador de pacotes em que o checksum resultou o mesmo calculado e o recebido.
Definition at line 5 of file vz_protocol.cpp.
uint32_t pkg_zero |
Contador de pacotes contendo somente zeros.
Definition at line 4 of file vz_protocol.cpp.
const uint8_t PROMPT = 0x01 |
Identifica o tipo de pacote responsavel por mandar comandos executáveis no Cbx.
Definition at line 87 of file vz_protocol.h.
const uint8_t REGISTRY = 0x02 |
Tipo de registro, enviado pelo CBx, quando o mesmo quer se registrar, enviado pela Header para verificar se determinado CBx ainda esta ativo.
Definition at line 60 of file vz_protocol.h.
const uint8_t REGISTRY_ACK = 0x02 bitor BIT7 |
"ack de resposta" do tiop REGISTRY
Definition at line 63 of file vz_protocol.h.
const uint16_t RTP_MSG_SIZE = 160 |
Tamanho em bytes ocupados pelos pacotes de audio no sentido * -> Header -> CBx.
Definition at line 132 of file vz_protocol.h.
const uint16_t RX_CB_IDLE = 300 |
Tempo maximo ( countdown em segundos ) que a Header espera por algum pacote no lado fibra, deixa de tickar o wdt.
Definition at line 126 of file vz_protocol.h.
const uint8_t SEQ_NUM_PLACE = 7 |
Indica o numero de bytes ocupados para uso de sequence number.
Definition at line 39 of file vz_protocol.h.
const uint8_t SEQ_NUM_SIZE = 1 |
Indica o numero de bytes ocupados para uso de sequence number.
Definition at line 36 of file vz_protocol.h.
const uint8_t TELEMETRY = 0x10 |
Define o tipo de pacote de telemetria enviado pelo CBx.
Definition at line 75 of file vz_protocol.h.
const uint8_t TIMESLICE_PLACE = 22 |
Indica o local ( em relação ao começo do pacote ) onde se encontra o timeslice.
Definition at line 45 of file vz_protocol.h.
const uint8_t TYPE_PLACE = 6 |
Indica o local ( em relação ao começo do pacote ) onde se encontra o timeslice.
Definition at line 48 of file vz_protocol.h.
const uint8_t u8_MAX_CB_IN_A_BRANCH = 52 |
Estabelece o nro máximo de CBx em um mesmo ramo.
Definition at line 54 of file vz_protocol.h.
const uint8_t VZ_HEADER_OFFSET = 7 |
Indica o inicio dos dados recebidos efetivamente no pacote VZ.
Definition at line 30 of file vz_protocol.h.
Generated on Tue Jul 12 2022 16:25:14 by
