O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

TCP

Este módulo inclui funções que controlam a comunicação TCP.

Resumo

Enumerações

anonymous enum enumerar
Essa enumeração define sinalizadores passados ​​para otTcpConnect() .
anonymous enum enumerar
Essa enumeração define sinalizadores passados ​​para otTcpSendByReference .
otTcpDisconnectedReason enumerar
otTcpIncomingConnectionAction {
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT ,
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER ,
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enumerar
Essa enumeração define ações de conexão de entrada.

Typedefs

otLinkedBuffer typedef
Uma estrutura de buffer vinculada para uso com TCP.
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
Esse retorno de chamada indica que a conexão TCP agora está pronta para comunicação bidirecional.
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
Esse retorno de chamada indica que uma conexão de entrada que corresponde a esse ouvinte TCP chegou.
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Esse retorno de chamada indica que a conexão foi interrompida e não deve mais ser usada ou que uma conexão entrou no estado TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
otTcpEndpointInitializeArgs typedef
Essa estrutura contém argumentos para a função otTcpEndpointInitialize() .
otTcpEstablished )(otTcpEndpoint *aEndpoint) typedef
void(*
Esse retorno de chamada informa ao aplicativo que o handshake de 3 vias TCP foi concluído e que a conexão foi estabelecida.
otTcpForwardProgress )(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
Esse retorno de chamada informa ao aplicativo se o progresso de encaminhamento foi feito na transferência de dados do buffer de envio para o destinatário.
otTcpIncomingConnectionAction typedef
Essa enumeração define ações de conexão de entrada.
otTcpListener typedef
otTcpListenerInitializeArgs typedef
Essa estrutura contém argumentos para a função otTcpListenerInitialize() .
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Esse retorno de chamada indica o número de bytes disponíveis para consumo do buffer de recebimento.
otTcpSendDone )(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Esse retorno de chamada informa ao aplicativo que os dados no aData fornecido foram reconhecidos pelo peer de conexão e que o aData e os dados nele contidos podem ser recuperados pelo aplicativo.

Funções

otTcpAbort ( otTcpEndpoint *aEndpoint)
Encerra à força a conexão TCP associada a este ponto de extremidade TCP.
otTcpBind ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
Vincula o ponto de extremidade TCP a um endereço IP e porta.
otTcpCommitReceive ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Informa à pilha TCP que o aplicativo terminou de processar aNumBytes bytes de dados no início do buffer de recebimento e que a pilha TCP não precisa continuar mantendo esses bytes no buffer de recebimento.
otTcpConnect ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Registra o host remoto e a porta para esta conexão.
otTcpEndpointDeinitialize ( otTcpEndpoint *aEndpoint)
Desinicializa este ponto de extremidade TCP.
otTcpEndpointGetContext ( otTcpEndpoint *aEndpoint)
void *
Obtém o ponteiro de contexto que foi associado a aEndpoint na inicialização.
otTcpEndpointGetInstance ( otTcpEndpoint *aEndpoint)
Obtém a otInstance que foi associada a aEndpoint na inicialização.
otTcpEndpointInitialize ( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
Inicializa um ponto de extremidade TCP.
otTcpGetLocalAddress (const otTcpEndpoint *aEndpoint)
const otSockAddr *
Obtém um ponteiro para o host local e a porta de um ponto de extremidade TCP.
otTcpGetPeerAddress (const otTcpEndpoint *aEndpoint)
const otSockAddr *
Obtém um ponteiro para o host e a porta de um ponto de extremidade TCP.
otTcpListen ( otTcpListener *aListener, const otSockAddr *aSockName)
Faz com que as conexões TCP de entrada que correspondam ao endereço IP e à porta especificados acionem os retornos de chamada desse ouvinte TCP.
otTcpListenerDeinitialize ( otTcpListener *aListener)
Desinicializa este ouvinte TCP.
otTcpListenerGetContext ( otTcpListener *aListener)
void *
Obtém o ponteiro de contexto que foi associado a aListener na inicialização.
otTcpListenerGetInstance ( otTcpListener *aListener)
Obtém a otInstance que foi associada a aListener na inicialização.
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
Inicializa um ouvinte TCP.
otTcpReceiveByReference ( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
Fornece ao aplicativo uma cadeia de buffer vinculada que referencia os dados atualmente no buffer de recebimento TCP.
otTcpReceiveContiguify ( otTcpEndpoint *aEndpoint)
Reorganiza o buffer de recebimento para ser totalmente contíguo na memória.
otTcpSendByExtension ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Adiciona dados ao buffer de envio estendendo o comprimento do otLinkedBuffer final no buffer de envio pelo valor especificado.
otTcpSendByReference ( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
Adiciona dados referenciados pelo buffer vinculado apontado por aBuffer ao buffer de envio.
otTcpSendEndOfStream ( otTcpEndpoint *aEndpoint)
Informa ao peer de conexão que este endpoint TCP não enviará mais dados.
otTcpStopListening ( otTcpListener *aListener)
Faz com que este ouvinte TCP pare de ouvir conexões de entrada.

Estruturas

otLinkedBuffer

Uma estrutura de buffer vinculada para uso com TCP.

otTcpEndpoint

Essa estrutura representa um ponto de extremidade TCP.

otTcpEndpointInitializeArgs

Essa estrutura contém argumentos para a função otTcpEndpointInitialize() .

otTcpListener

Essa estrutura representa um ouvinte TCP.

otTcpListenerInitializeArgs

Essa estrutura contém argumentos para a função otTcpListenerInitialize() .

Enumerações

enumeração anônima

 anonymous enum

Essa enumeração define sinalizadores passados ​​para otTcpConnect() .

enumeração anônima

 anonymous enum

Essa enumeração define sinalizadores passados ​​para otTcpSendByReference .

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Essa enumeração define ações de conexão de entrada.

Isso é usado no retorno de chamada otTcpAcceptReady() .

Propriedades
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Aceite a conexão de entrada.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Adie (ignore silenciosamente) a conexão de entrada.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Recuse a conexão de entrada.

Typedefs

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Uma estrutura de buffer vinculada para uso com TCP.

Uma única estrutura otLinkedBuffer referencia uma matriz de bytes na memória, via mData e mLength. O campo mNext é usado para formar uma cadeia de estruturas otLinkedBuffer .

otTcpAcceptDone

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

Esse retorno de chamada indica que a conexão TCP agora está pronta para comunicação bidirecional.

No caso de TCP Fast Open, isso pode ocorrer antes que o handshake de conexão TCP tenha sido realmente concluído. O aplicativo é fornecido com os ponteiros de contexto tanto para o ouvinte TCP que aceitou a conexão quanto para o terminal TCP no qual foi aceito. O contexto fornecido é aquele associado ao ouvinte TCP.

Detalhes
Parâmetros
[in] aListener
O ouvinte TCP que corresponde à conexão de entrada.
[in] aEndpoint
O ponto de extremidade TCP no qual a conexão de entrada foi aceita.
[in] aPeer
o host e a porta de origem da conexão de entrada.

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

Esse retorno de chamada indica que uma conexão de entrada que corresponde a esse ouvinte TCP chegou.

A resposta típica é que o aplicativo aceite a conexão de entrada. Ele faz isso preenchendo aAcceptInto com um ponteiro para otTcpEndpoint no qual aceitar a conexão de entrada. Este otTcpEndpoint já deve ser inicializado usando otTcpEndpointInitialize() . Em seguida, o aplicativo retorna OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.

Como alternativa, o aplicativo pode se recusar a aceitar a conexão de entrada. Existem duas maneiras de o aplicativo fazer isso. Primeiro, se o aplicativo retornar OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, o OpenThread ignora silenciosamente a solicitação de estabelecimento da conexão; o peer de conexão provavelmente retransmitirá a solicitação, e nesse ponto o retorno de chamada será chamado novamente. Isso é valioso se os recursos não estiverem disponíveis no momento para aceitar a conexão, mas eles podem estar disponíveis quando o ponto de conexão retransmitir sua tentativa de estabelecimento de conexão. Segundo, se o aplicativo retornar OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, o OpenThread enviará uma mensagem de "conexão recusada" ao host que tentou estabelecer uma conexão. Se o aplicativo recusar a conexão de entrada, não será necessário preencher aAcceptInto .

Detalhes
Parâmetros
[in] aListener
O ouvinte TCP que corresponde à conexão de entrada.
[in] aPeer
O host e a porta de onde se origina a conexão de entrada.
[out] aAcceptInto
O ponto de extremidade TCP no qual aceitar a conexão de entrada.
Devoluções
Descrição de como lidar com a conexão de entrada.

otTcpDesconectado

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

Esse retorno de chamada indica que a conexão foi interrompida e não deve mais ser usada ou que uma conexão entrou no estado TIME-WAIT.

Pode ocorrer se uma tentativa de estabelecimento de conexão (iniciada pela chamada otTcpConnect() ) falhar, ou em qualquer ponto posterior (por exemplo, se a conexão expirar ou um segmento RST for recebido do peer de conexão). Uma vez que esse retorno de chamada é acionado, todos os recursos que o aplicativo forneceu para essa conexão (ou seja, qualquer otLinkedBuffers e memória que eles referenciam, mas não o ponto de extremidade TCP em si ou o espaço para os buffers de recebimento) podem ser recuperados. No caso de uma conexão entrar no estado TIME-WAIT, este callback é chamado duas vezes, uma vez na entrada no estado TIME-WAIT (com OT_TCP_DISCONNECTED_REASON_TIME_WAIT, e novamente quando o estado TIME-WAIT expira (com OT_TCP_DISCONNECTED_REASON_NORMAL).

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP cuja conexão foi perdida.
[in] aReason
O motivo pelo qual a conexão foi perdida.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Essa estrutura contém argumentos para a função otTcpEndpointInitialize() .

otTcpEstabelecido

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Esse retorno de chamada informa ao aplicativo que o handshake de 3 vias TCP foi concluído e que a conexão foi estabelecida.

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP cuja conexão agora está estabelecida.

otTcpForwardProgress

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

Esse retorno de chamada informa ao aplicativo se o progresso de encaminhamento foi feito na transferência de dados do buffer de envio para o destinatário.

Esse retorno de chamada não é necessário para a operação TCP correta. A maioria dos aplicativos pode contar apenas com o retorno de chamada otTcpSendDone() para recuperar buffers vinculados assim que a pilha TCP terminar de usá-los. A finalidade desse retorno de chamada é oferecer suporte a aplicativos avançados que se beneficiam de informações mais detalhadas sobre como a conexão está avançando na transferência de dados para o ponto de conexão.

A operação deste callback está intimamente ligada ao buffer de envio do TCP. O buffer de envio pode ser entendido como tendo duas regiões. Primeiro, há a região "em vôo" na cabeça (frente) do buffer de envio. Corresponde aos dados que foram enviados ao destinatário, mas ainda não foram reconhecidos. Em segundo lugar, há a região "backlog", que consiste em todos os dados no buffer de envio que não estão na região "em andamento". A região "backlog" corresponde aos dados que estão na fila para envio, mas ainda não foram enviados.

O retorno de chamada é invocado em resposta a dois tipos de eventos. Primeiro, a região "em andamento" do buffer de envio pode diminuir (por exemplo, quando o destinatário reconhece os dados que enviamos anteriormente). Em segundo lugar, a região "backlog" do buffer de envio pode diminuir (por exemplo, novos dados foram enviados). Essas duas condições geralmente ocorrem ao mesmo tempo, em resposta a um segmento ACK do peer de conexão, razão pela qual são combinadas em um único retorno de chamada.

A pilha TCP usa apenas os bytes aInSendBuffer na extremidade do buffer de envio; quando aInSendBuffer diminui em uma quantidade x, isso significa que x bytes adicionais que anteriormente estavam no início do buffer de envio não fazem mais parte do buffer de envio e agora podem ser recuperados (ou seja, substituídos) pelo aplicativo. Observe que a própria estrutura otLinkedBuffer só pode ser recuperada quando todos os bytes aos quais ela faz referência não fazem mais parte do buffer de envio.

Esse retorno de chamada inclui otTcpSendDone() , no seguinte sentido: os aplicativos podem determinar quando os buffers vinculados podem ser recuperados comparando aInSendBuffer com quantos bytes estão em cada buffer vinculado. No entanto, esperamos que otTcpSendDone() , que transmite diretamente quais otLinkedBuffers podem ser recuperados, seja muito mais simples de usar. Se ambos os retornos de chamada forem registrados e disparados pelo mesmo evento (por exemplo, o mesmo segmento ACK recebido), então o retorno de chamada otTcpSendDone() será disparado primeiro, seguido por este retorno de chamada.

Além disso, esse retorno de chamada fornece aBacklog , que indica quantos bytes de dados no buffer de envio ainda não estão em andamento. Para aplicativos que desejam apenas adicionar dados ao buffer de envio quando há garantia de que eles serão enviados em breve, pode ser desejável enviar dados apenas quando aBacklog for adequadamente pequeno (0 ou próximo de 0). Por exemplo, um aplicativo pode usar um aBacklog para que possa reagir ao acúmulo de fila descartando ou agregando dados para evitar a criação de um backlog de dados.

Após uma chamada para otTcpSendByReference() ou otTcpSendByExtension() com um número positivo de bytes, o retorno de chamada otTcpForwardProgress() é garantido para ser chamado, para indicar quando os bytes que foram adicionados ao buffer de envio são enviados. A chamada para otTcpForwardProgress() pode ser feita imediatamente após os bytes serem adicionados ao buffer de envio (se alguns desses bytes forem enviados imediatamente, reduzindo o backlog), ou em algum momento no futuro (uma vez que a conexão envie alguns ou todos os os dados, reduzindo o backlog). Por "imediatamente", queremos dizer que o retorno de chamada é agendado imediatamente para execução em um tasklet; para evitar complexidade relacionada à reentrância, o retorno de chamada otTcpForwardProgress() nunca é chamado diretamente das funções otTcpSendByReference() ou otTcpSendByExtension() .

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP para a conexão.
[in] aInSendBuffer
O número de bytes no buffer de envio (soma das regiões "em andamento" e "backlog").
[in] aBacklog
O número de bytes que estão na fila para envio, mas ainda não foram enviados (a região "backlog").

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Essa enumeração define ações de conexão de entrada.

Isso é usado no retorno de chamada otTcpAcceptReady() .

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Essa estrutura contém argumentos para a função otTcpListenerInitialize() .

otTcpReceiveDisponível

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

Esse retorno de chamada indica o número de bytes disponíveis para consumo do buffer de recebimento.

Ele é chamado sempre que bytes são adicionados ao buffer de recebimento e quando o final do fluxo é atingido. Se o fim do fluxo foi alcançado (ou seja, se não houver mais dados disponíveis para leitura porque o peer de conexão fechou o fim da conexão para gravação), então aEndOfStream é verdadeiro. Por fim, aBytesRemaining indica quanta capacidade resta no buffer de recebimento para armazenar dados adicionais que chegam.

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP para a conexão.
[in] aBytesAvailable
O número de bytes no buffer de recebimento da conexão.
[in] aEndOfStream
Indica se dados adicionais, além do que já está no buffer de recebimento da conexão, podem ser recebidos.
[in] aBytesRemaining
O número de bytes adicionais que podem ser recebidos antes que o buffer de recebimento fique cheio.

otTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

Esse retorno de chamada informa ao aplicativo que os dados no aData fornecido foram reconhecidos pelo peer de conexão e que o aData e os dados nele contidos podem ser recuperados pelo aplicativo.

Os aData são garantidos como idênticos àqueles passados ​​para TCP via otTcpSendByReference() , incluindo quaisquer extensões efetuadas via otTcpSendByExtension() .

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP para a conexão.
[in] aData
Um ponteiro para o otLinkedBuffer que pode ser recuperado.

Funções

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Encerra à força a conexão TCP associada a este ponto de extremidade TCP.

Isso imediatamente torna o terminal TCP livre para uso em outra conexão e esvazia os buffers de envio e recebimento, transferindo a propriedade de quaisquer dados fornecidos pelo aplicativo nas chamadas otTcpSendByReference() e otTcpSendByExtension() de volta ao aplicativo. Os retornos de chamada e a memória do ponto de extremidade TCP para o buffer de recebimento permanecem associados ao ponto de extremidade TCP.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP que representa o ponto de extremidade TCP a ser abortado.
Valores de retorno
OT_ERROR_NONE
A conexão do ponto de extremidade TCP foi anulada com sucesso.
OT_ERROR_FAILED
Falha ao abortar a conexão do ponto de extremidade TCP.

otTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

Vincula o ponto de extremidade TCP a um endereço IP e porta.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura do ponto de extremidade TCP a ser vinculado.
[in] aSockName
O endereço e a porta aos quais vincular este ponto de extremidade TCP.
Valores de retorno
OT_ERROR_NONE
Associado com sucesso o ponto de extremidade TCP.
OT_ERROR_FAILED
Falha ao vincular o ponto de extremidade TCP.

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Informa à pilha TCP que o aplicativo terminou de processar aNumBytes bytes de dados no início do buffer de recebimento e que a pilha TCP não precisa continuar mantendo esses bytes no buffer de recebimento.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP que representa o ponto de extremidade TCP no qual receber dados.
[in] aNumBytes
O número de bytes consumidos.
[in] aFlags
Sinalizadores que especificam opções para esta operação (nenhuma ainda).
Valores de retorno
OT_ERROR_NONE
A operação de recebimento foi concluída com sucesso.
OT_ERROR_FAILED
Falha ao concluir a operação de recebimento.

otTcpConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

Registra o host remoto e a porta para esta conexão.

Por padrão, TCP Fast Open é usado. Isso significa que esta função apenas registra o host e a porta remotos, e que o handshake de estabelecimento da conexão TCP ocorre apenas na primeira chamada para otTcpSendByReference() . TCP Fast Open pode ser explicitamente desabilitado usando aFlags , nesse caso o handshake de estabelecimento de conexão TCP é iniciado imediatamente.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura do ponto de extremidade TCP a ser conectado.
[in] aSockName
O endereço IP e a porta do host ao qual se conectar.
[in] aFlags
Sinalizadores que especificam opções para esta operação (consulte a enumeração acima).
Valores de retorno
OT_ERROR_NONE
A operação foi concluída com sucesso.
OT_ERROR_FAILED
Falha ao concluir a operação.

otTcpEndpointDeinitialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Desinicializa este ponto de extremidade TCP.

Isso significa que o OpenThread não acompanha mais esse endpoint TCP e desaloca todos os recursos alocados internamente para esse endpoint TCP. O aplicativo pode reutilizar a memória que suporta o ponto de extremidade TCP como achar melhor.

Se corresponder a uma conexão TCP ativa, a conexão será encerrada sem cerimônia (como em otTcpAbort() ). Todos os recursos que o aplicativo forneceu para este terminal TCP (buffers vinculados para o buffer de envio, memória para o buffer de recebimento, a própria estrutura aEndpoint etc.) são imediatamente retornados ao aplicativo.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP a ser desinicializada.
Valores de retorno
OT_ERROR_NONE
O ponto de extremidade TCP foi desinicializado com êxito.
OT_ERROR_FAILED
Falha ao desinicializar o ponto de extremidade TCP.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Obtém o ponteiro de contexto que foi associado a aEndpoint na inicialização.

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP cujo contexto deve ser obtido.
Devoluções
O ponteiro de contexto associado a aEndpoint .

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

Obtém a otInstance que foi associada a aEndpoint na inicialização.

Detalhes
Parâmetros
[in] aEndpoint
O endpoint TCP cuja instância deve ser obtida.
Devoluções
O ponteiro otInstance associado a aEndpoint .

otTcpEndpointInitialize

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

Inicializa um ponto de extremidade TCP.

Chamar essa função faz com que o OpenThread acompanhe o endpoint TCP e armazene e recupere dados TCP dentro do aEndpoint . A aplicação deve abster-se de acessar ou modificar diretamente os campos em aEndpoint . Se o aplicativo precisar recuperar a memória que aEndpoint , ele deverá chamar otTcpEndpointDeinitialize() .

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância OpenThread.
[in] aEndpoint
Um ponteiro para uma estrutura de ponto de extremidade TCP.
[in] aArgs
Um ponteiro para uma estrutura de argumentos.
Valores de retorno
OT_ERROR_NONE
Abriu com sucesso o ponto de extremidade TCP.
OT_ERROR_FAILED
Falha ao abrir o ponto de extremidade TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Obtém um ponteiro para o host local e a porta de um ponto de extremidade TCP.

O conteúdo do host e da porta pode estar obsoleto se esse soquete não estiver em um estado conectado e não tiver sido vinculado após a última desconexão.

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP cujo host e porta locais devem ser obtidos.
Devoluções
O host local e a porta de aEndpoint .

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Obtém um ponteiro para o host e a porta de um ponto de extremidade TCP.

O conteúdo do host e da porta pode ser obsoleto se esse soquete não estiver em um estado conectado.

Detalhes
Parâmetros
[in] aEndpoint
O ponto de extremidade TCP cujo host e porta do par devem ser obtidos.
Devoluções
O host e a porta do peer de conexão de aEndpoint .

otTcpListen

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

Faz com que as conexões TCP de entrada que correspondam ao endereço IP e à porta especificados acionem os retornos de chamada desse ouvinte TCP.

Detalhes
Parâmetros
[in] aListener
Um ponteiro para a estrutura do ouvinte TCP que deve começar a ouvir.
[in] aSockName
O endereço e a porta na qual escutar as conexões de entrada.
Valores de retorno
OT_ERROR_NONE
Escuta iniciada com sucesso no ouvinte TCP.
OT_ERROR_FAILED
Falha ao iniciar a escuta no ouvinte TCP.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Desinicializa este ouvinte TCP.

Isso significa que o OpenThread não acompanha mais esse ouvinte TCP e desaloca todos os recursos alocados internamente para esse ouvinte TCP. O aplicativo pode reutilizar a memória que suporta o ouvinte TCP como achar melhor.

Se o ouvinte TCP estiver escutando no momento, ele parará de escutar.

Detalhes
Parâmetros
[in] aListener
Um ponteiro para a estrutura do ouvinte TCP a ser desinicializada.
Valores de retorno
OT_ERROR_NONE
O listener TCP foi desinicializado com sucesso.
OT_ERROR_FAILED
Falha ao desinicializar o ouvinte TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Obtém o ponteiro de contexto que foi associado a aListener na inicialização.

Detalhes
Parâmetros
[in] aListener
O ouvinte TCP cujo contexto deve ser obtido.
Devoluções
O ponteiro de contexto associado a aListener .

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Obtém a otInstance que foi associada a aListener na inicialização.

Detalhes
Parâmetros
[in] aListener
O ouvinte TCP cuja instância deve ser obtida.
Devoluções
O ponteiro otInstance associado a aListener .

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

Inicializa um ouvinte TCP.

Chamar esta função faz com que o OpenThread acompanhe o ouvinte TCP e armazene e recupere dados TCP dentro de aListener . A aplicação deve abster-se de acessar ou modificar diretamente os campos em aListener . Se o aplicativo precisar recuperar a memória de aListener , ele deverá chamar otTcpListenerDeinitialize() .

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância OpenThread.
[in] aListener
Um ponteiro para uma estrutura de ouvinte TCP.
[in] aArgs
Um ponteiro para uma estrutura de argumentos.
Valores de retorno
OT_ERROR_NONE
Abriu com sucesso o ouvinte TCP.
OT_ERROR_FAILED
Falha ao abrir o ouvinte TCP.

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

Fornece ao aplicativo uma cadeia de buffer vinculada que referencia os dados atualmente no buffer de recebimento TCP.

A cadeia de buffer vinculada é válida até que o retorno de chamada "receive ready" seja invocado em seguida, ou até a próxima chamada para otTcpReceiveContiguify() ou otTcpCommitReceive() .

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP que representa o ponto de extremidade TCP no qual receber dados.
[out] aBuffer
Um ponteiro para a cadeia de buffer vinculada que faz referência aos dados atualmente no buffer de recebimento.
Valores de retorno
OT_ERROR_NONE
A operação foi concluída com sucesso.
OT_ERROR_FAILED
Falha ao concluir a operação.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Reorganiza o buffer de recebimento para ser totalmente contíguo na memória.

Isso é opcional; um aplicativo pode simplesmente atravessar a cadeia de buffer vinculada obtida chamando otTcpReceiveByReference . Alguns aplicativos podem desejar chamar essa função para tornar o buffer de recebimento contíguo para simplificar o processamento de dados, mas isso custa tempo da CPU para reorganizar os dados no buffer de recebimento.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para o ponto de extremidade TCP cujo buffer de recebimento deve ser reorganizado.
Valores de retorno
OT_ERROR_NONE
A operação foi concluída com sucesso.
OT_ERROR_FAILED
Falha ao concluir a operação.

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Adiciona dados ao buffer de envio estendendo o comprimento do otLinkedBuffer final no buffer de envio pelo valor especificado.

Se o buffer de envio estiver vazio, a operação falhará.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP que representa o ponto de extremidade TCP para o qual enviar dados.
[in] aNumBytes
O número de bytes pelo qual estender o comprimento do buffer vinculado final.
[in] aFlags
Sinalizadores que especificam opções para esta operação (consulte a enumeração acima).
Valores de retorno
OT_ERROR_NONE
Dados adicionados com sucesso ao buffer de envio.
OT_ERROR_FAILED
Falha ao adicionar dados ao buffer de envio.

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

Adiciona dados referenciados pelo buffer vinculado apontado por aBuffer ao buffer de envio.

Após uma chamada bem-sucedida para essa função, o buffer vinculado e os dados que ele referencia são de propriedade da pilha TCP; eles não devem ser modificados pelo aplicativo até que um retorno de chamada "send done" retorne a propriedade desses objetos para o aplicativo. É aceitável chamar essa função para adicionar outro buffer vinculado à fila de envio, mesmo que o retorno de chamada "envio concluído" para uma invocação anterior dessa função ainda não tenha sido acionado.

Observe que aBuffer não deve ser encadeado; seu campo mNext deve ser NULL. Se dados adicionais forem adicionados logo após essa chamada, o sinalizador OT_TCP_SEND_MORE_TO_COME deve ser usado como uma dica para a implementação do TCP.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura de ponto de extremidade TCP que representa o ponto de extremidade TCP para o qual enviar dados.
[in] aBuffer
Um ponteiro para os dados de referência da cadeia de buffer vinculado para adicionar ao buffer de envio.
[in] aFlags
Sinalizadores que especificam opções para esta operação (consulte a enumeração acima).
Valores de retorno
OT_ERROR_NONE
Dados adicionados com sucesso ao buffer de envio.
OT_ERROR_FAILED
Falha ao adicionar dados ao buffer de envio.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Informa ao peer de conexão que este endpoint TCP não enviará mais dados.

Isso deve ser usado quando o aplicativo não tiver mais dados para enviar ao peer de conexão. Para essa conexão, as leituras futuras no peer de conexão resultarão na condição de "fim do fluxo" e as gravações futuras nesse ponto de extremidade de conexão falharão.

A condição de "fim do fluxo" só se aplica depois que quaisquer dados fornecidos anteriormente à pilha TCP para envio tenham sido recebidos pelo peer de conexão.

Detalhes
Parâmetros
[in] aEndpoint
Um ponteiro para a estrutura do ponto de extremidade TCP que representa o ponto de extremidade TCP a ser desligado.
Valores de retorno
OT_ERROR_NONE
Enfileirado com sucesso a condição de "fim do fluxo" para transmissão.
OT_ERROR_FAILED
Falha ao enfileirar a condição de "fim do fluxo" para transmissão.

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

Faz com que este ouvinte TCP pare de ouvir conexões de entrada.

Detalhes
Parâmetros
[in] aListener
Um ponteiro para a estrutura do ouvinte TCP que deve parar de ouvir.
Valores de retorno
OT_ERROR_NONE
Interrompeu com êxito a escuta no ouvinte TCP.
OT_ERROR_FAILED
Falha ao parar de escutar no ouvinte TCP.

Macros

OT_TCP_ENDPOINT_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINT_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 368

OT_TCP_ENDPOINT_TCB_SIZE_BASE e OT_TCP_ENDPOINT_TCB_NUM_POINTERS são escolhidos de modo que o campo mTcb de otTcpEndpoint tenha o mesmo tamanho que a estrutura tcpcb em TCPlp.

Isso é necessário porque o campo mTcb, embora opaco em sua declaração, é tratado como struct tcpcb na implementação do TCP.

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

OT_TCP_LISTENER_TCB_SIZE_BASE e OT_TCP_LISTENER_TCB_NUM_POINTERS são escolhidos de forma que o campo mTcbListener de otTcpListener tenha o mesmo tamanho que struct tcpcb_listen em TCPlp.

Isso é necessário porque o campo mTcbListen, embora opaco em sua declaração, é tratado como struct tcpcb na implementação do TCP.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2599

Tamanho de buffer recomendado para conexões TCP que percorrem cerca de 3 saltos sem fio ou menos.

Em plataformas em que a memória é particularmente restrita e em situações em que a largura de banda alta não é necessária, pode ser desejável selecionar manualmente um tamanho de buffer menor.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4158

Tamanho de buffer recomendado para conexões TCP que atravessam muitos saltos sem fio.

Se a conexão TCP percorrer um número muito grande de saltos (mais de 6 ou mais), pode ser aconselhável selecionar um tamanho de buffer grande manualmente.

Recursos

Os tópicos de referência da API OpenThread se originam do código-fonte, disponível no GitHub . Para obter mais informações ou contribuir com nossa documentação, consulte Recursos .