nl::Weave::Perfis::Atualização de software::ImageQuery

#include <src/lib/profiles/software-update/SoftwareUpdateProfile.h>

Uma classe para dar suporte à criação e decodificação de mensagens de consulta de imagem.

Resumo

O frame da consulta de imagem tem o seguinte formato sobre o fio

Duração Nome do campo
1 byte controle de frames
6 bytes especificação do produto
variável especificação da versão
2,4 bytes lista do tipo de integridade
2,5 bytes atualizar lista de esquemas
variável especificação da localidade (opcional)
8 bytes ID do nó de destino
variável dados específicos do fornecedor (opcional)
em que o campo de controle de frames tem campos de bits da seguinte maneira:

broca Significado
0 1 - dados específicos do fornecedor presentes, 0 - não presente
1 1 - especificação da localidade presente, 0 - não presente
2 1 - ID do nó de destino presente, 0 - não presente
3,7 Reservado
ImageQuery, como uma estrutura de leitura um pouco diferente da representação em trânsito. Em particular, a versão e a localidade são strings c-string com terminação nula (ao contrário de tuplas (comprimento, caracteres) e os dois itens opcionais são representados como ponteiros anuláveis, portanto, não há um booleano separado para verificar.

Construtores e destrutores

ImageQuery()
Construtor padrão para ImageQuery.

Atributos públicos

integrityTypes
Tipos de integridade compatíveis com o dispositivo.
localeSpec
Uma string UTF-8 de tamanho variável com a localidade POSIX em vigor no dispositivo em que a consulta de imagem está sendo feita.
packageSpec
Uma string UTF-8 de comprimento variável com uma string de especificação de pacote específica do fornecedor.
productSpec
Especificação do produto que descreve o dispositivo que está fazendo a consulta de imagem.
targetNodeId
uint64_t
Um código de nó opcional do dispositivo para o qual a consulta está sendo feita.
theMetaData
O campo de dados específicos do fornecedor varia em tamanho e ocupa o restante do payload da mensagem do Weave, além dos campos descritos acima.
updateSchemes
Atualiza esquemas (protocolos de download) compatíveis com o dispositivo.
version
Uma string UTF-8 de tamanho variável com a versão do software especificada pelo fornecedor do dispositivo para o qual a consulta está sendo feita.

Funções públicas

init(ProductSpec & aProductSpec, ReferencedString & aVersion, IntegrityTypeList & aTypeList, UpdateSchemeList & aSchemeList, ReferencedString *aPackage, ReferencedString *aLocale, uint64_t aTargetNodeId, ReferencedTLVData *aMetaData)
Inicialize explicitamente o objeto ImageQuery com os valores fornecidos.
operator==(const ImageQuery &) const
bool
Um operador de igualdade.
pack(PacketBuffer *)
Serialize o ImageQuery subjacente no PackageBuffer fornecido.
print(void)
void

Funções estáticas públicas

parse(PacketBuffer *, ImageQuery &)
Desserialize a mensagem de consulta de imagem fornecida em um PackageBuffer para uma ImageQuery fornecida.

Atributos públicos

integridadeTipos

IntegrityTypeList integrityTypes

Tipos de integridade compatíveis com o dispositivo.

localeSpec

ReferencedString localeSpec

Uma string UTF-8 de tamanho variável com a localidade POSIX em vigor no dispositivo em que a consulta de imagem está sendo feita.

O conteúdo da string precisa estar em conformidade com o formato do identificador de localidade POSIX, conforme especificado na ISO/IEC 15897, por exemplo, en_AU.UTF-8 para inglês australiano.

packageSpec

ReferencedString packageSpec

Uma string UTF-8 de comprimento variável com uma string de especificação de pacote específica do fornecedor.

O conteúdo do campo descreve o tipo de contêiner desejado para a imagem do software, como "rpm", "deb", "tgz", "elf" etc. OBSERVAÇÃO: este campo não é usado em implementações Nest do protocolo.

Especificações do produto

ProductSpec productSpec

Especificação do produto que descreve o dispositivo que está fazendo a consulta de imagem.

targetNodeId

uint64_t targetNodeId

Um código de nó opcional do dispositivo para o qual a consulta está sendo feita.

O campo "ID do nó de destino" é opcional. Se ausente, o ID do nó de destino da consulta é implicitamente o nó que foi a origem da mensagem de consulta da imagem.

O campo de ID do nó de destino normalmente é usado quando o nó que é a origem da mensagem de IMAGE QUERY está servindo como um proxy de atualização de software para outro nó.

Metadados

ReferencedTLVData theMetaData

O campo de dados específicos do fornecedor varia em tamanho e ocupa o restante do payload da mensagem do Weave, além dos campos descritos acima.

O campo codifica informações específicas do fornecedor sobre o dispositivo em que a consulta está sendo feita. O campo de dados específicos do fornecedor é opcional. Quando presente, o campo tem uma forma de estrutura anônima codificada em TLV. As tags apresentadas nessa estrutura devem ser tags totalmente qualificadas e específicas do perfil.

updateSchemes

UpdateSchemeList updateSchemes

Atualiza esquemas (protocolos de download) compatíveis com o dispositivo.

version

ReferencedString version

Uma string UTF-8 de tamanho variável com a versão do software especificada pelo fornecedor do dispositivo para o qual a consulta está sendo feita.

Precisa ter no máximo 32 caracteres.

Funções públicas

Consulta de imagem

 ImageQuery()

Construtor padrão para ImageQuery.

Para preencher a ImageQuery, chame init() ou desserialize o objeto de uma mensagem.

init

WEAVE_ERROR init(
  ProductSpec & aProductSpec,
  ReferencedString & aVersion,
  IntegrityTypeList & aTypeList,
  UpdateSchemeList & aSchemeList,
  ReferencedString *aPackage,
  ReferencedString *aLocale,
  uint64_t aTargetNodeId,
  ReferencedTLVData *aMetaData
)

Inicialize explicitamente o objeto ImageQuery com os valores fornecidos.

Detalhes
Parâmetros
[in] aProductSpec
Especificação do produto.
[in] aVersion
Versão atual do software.
[in] aTypeList
Os tipos de integridade com suporte do cliente.
[in] aSchemeList
Os esquemas de atualização aceitos pelo cliente.
[in] aPackage
Uma especificação de pacote opcional aceita pelo cliente.
[in] aLocale
Uma especificação de localidade opcional solicitada pelo cliente.
[in] aTargetNodeId
Um ID do nó de destino opcional.
[in] aMetaData
Um blob opcional de dados do fornecedor codificado por TLV.
Retorna
WEAVE_NO_ERROR incondicionalmente.

Operador==

bool operator==(
  const ImageQuery &
) const 

Um operador de igualdade.

Detalhes
Parâmetros
another
Uma ImageQuery para verificar essa ImageQuery
Retorna
"true" se todos os campos em ambos os objetos forem iguais. Caso contrário, "false"

pacote

WEAVE_ERROR pack(
  PacketBuffer *
)

Serialize o ImageQuery subjacente no PackageBuffer fornecido.

Detalhes
Parâmetros
[in] aBuffer
Um buffer de pacote no qual empacotar a consulta
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a ImageQuery for muito grande para caber no buffer fornecido.

imprimir

void print(
  void
)

Funções estáticas públicas

parse

WEAVE_ERROR parse(
  PacketBuffer *,
  ImageQuery &
)

Desserialize a mensagem de consulta de imagem fornecida em um PackageBuffer para uma ImageQuery fornecida.

Detalhes
Parâmetros
[in] aBuffer
Um ponteiro para um pacote que analisa a consulta de imagem
[in] aQuery
Um objeto em que o resultado deve ser colocado
Retorna
WEAVE_NO_ERROR em caso de sucesso
Retorna
WEAVE_ERROR_BUFFER_TOO_SMALL Se a mensagem for muito pequena para conter todos os campos da ImageQuery
Retorna
WEAVE_ERROR_INVALID_LIST_LENGTH Se a mensagem tinha uma IntegrityTypeList ou uma UpdateSchemeList muito longa