nl::Weave::Profiles::SoftwareUpdate::ImageQuery

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

Eine Klasse, die das Erstellen und Decodieren von Bildanfragenachrichten unterstützt.

Zusammenfassung

Der Abfrage-Frame für das Bild hat die folgende Form über das Kabel

Länge Feldname
1 Byte Frame-Control
6 Byte Produktspezifikation
Variable Versionsspezifikation
2–4 Byte Liste der Integritätstypen
2,.5 Byte Schemaliste aktualisieren
Variable Sprachspezifikation (optional)
8 Byte Zielknoten-ID
Variable anbieterspezifische Daten (optional)
wobei das Frame-Control-Feld folgende Bit-Felder aufweist:

Bit Bedeutung
0 1 – anbieterspezifische Daten vorhanden, 0 – nicht vorhanden
1 1 – Gebietsschemaangabe vorhanden, 0 – nicht vorhanden
2 1 – Zielknoten-ID vorhanden, 0 – nicht vorhanden
3..7 Reserviert
Die ImageQuery, da sich diese Struktur leicht von der In-Flight-Darstellung unterscheidet. Insbesondere sind Version und Gebietsschema C-Strings mit Nullterminierung (im Gegensatz zu Tupeln (Länge, Zeichen) und beide optionalen Elemente werden als Zeiger mit Null-Zulässigkeit dargestellt, sodass kein separater boolescher Wert überprüft werden muss.)

Konstruktoren und Zerstörer

ImageQuery()
Standardkonstruktor für ImageQuery.

Öffentliche Attribute

integrityTypes
Integritätstypen, die vom Gerät unterstützt werden
localeSpec
Ein UTF-8-String mit variabler Länge, der die POSIX-Sprache für das Gerät enthält, für das die Bildabfrage durchgeführt wird.
packageSpec
Ein UTF-8-String mit variabler Länge, der einen anbieterspezifischen String für die Paketspezifikation enthält.
productSpec
Produktspezifikation, in der das Gerät beschrieben wird, von dem die Bildanfrage stammt.
targetNodeId
uint64_t
Eine optionale Knoten-ID des Geräts, für das die Abfrage durchgeführt wird.
theMetaData
Das anbieterspezifische Datenfeld ist in der Länge variabel und belegt neben den oben beschriebenen Feldern den Rest der Weave-Nachrichtennutzlast.
updateSchemes
Vom Gerät unterstützte Updateschemas (Downloadprotokolle)
version
Ein UTF-8-String mit variabler Länge, der die anbieterspezifische Softwareversion des Geräts enthält, für das die Abfrage durchgeführt wird.

Öffentliche Funktionen

init(ProductSpec & aProductSpec, ReferencedString & aVersion, IntegrityTypeList & aTypeList, UpdateSchemeList & aSchemeList, ReferencedString *aPackage, ReferencedString *aLocale, uint64_t aTargetNodeId, ReferencedTLVData *aMetaData)
Initialisieren Sie das Objekt ImageQuery explizit mit den bereitgestellten Werten.
operator==(const ImageQuery &) const
bool
Gleichheitsoperator
pack(PacketBuffer *)
Serialisiert die zugrunde liegende ImageQuery in den bereitgestellten PacketBuffer.
print(void)
void

Öffentliche statische Funktionen

parse(PacketBuffer *, ImageQuery &)
Deserialisieren Sie die in einem PacketBuffer bereitgestellten Bildabfragenachricht in eine bereitgestellte ImageQuery.

Öffentliche Attribute

integrityTypes

IntegrityTypeList integrityTypes

Integritätstypen, die vom Gerät unterstützt werden

localeSpec

ReferencedString localeSpec

Ein UTF-8-String mit variabler Länge, der die POSIX-Sprache für das Gerät enthält, für das die Bildabfrage durchgeführt wird.

Der Inhalt des Strings muss dem POSIX-Format der Sprachkennzeichnung gemäß ISO/IEC 15897 entsprechen, z.B. en_AU.UTF-8 für australisches Englisch.

packageSpec

ReferencedString packageSpec

Ein UTF-8-String mit variabler Länge, der einen anbieterspezifischen String für die Paketspezifikation enthält.

Der Inhalt des Felds beschreibt den gewünschten Containertyp für das Software-Image, z. B. „rpm“, „deb“, „tgz“, „elf“ usw. (HINWEIS: Dieses Feld wird in Nest-Implementierungen des Protokolls nicht verwendet.)

productSpec

ProductSpec productSpec

Produktspezifikation, in der das Gerät beschrieben wird, von dem die Bildanfrage stammt.

targetNodeId

uint64_t targetNodeId

Eine optionale Knoten-ID des Geräts, für das die Abfrage durchgeführt wird.

Das Feld für die Zielknoten-ID ist optional. Wenn nicht vorhanden, ist die Zielknoten-ID für die Abfrage implizit der Knoten, der die Quelle der Image-Anfragenachricht war.

Das Feld für die Zielknoten-ID wird normalerweise in Instanzen verwendet, bei denen der Knoten, der die Quelle der IMAGE QUERY-Nachricht ist, als Software-Update-Proxy für einen anderen Knoten dient.

theMetaData

ReferencedTLVData theMetaData

Das anbieterspezifische Datenfeld ist in der Länge variabel und belegt neben den oben beschriebenen Feldern den Rest der Weave-Nachrichtennutzlast.

Das Feld codiert anbieterspezifische Informationen über das Gerät, für das die Abfrage durchgeführt wird. Das anbieterspezifische Datenfeld ist optional. Falls vorhanden, weist das Feld eine Form einer anonymen TLV-codierten Struktur auf. Die in dieser Struktur dargestellten Tags müssen vollständig qualifizierte profilspezifische Tags sein.

updateSchemes

UpdateSchemeList updateSchemes

Vom Gerät unterstützte Updateschemas (Downloadprotokolle)

Version

ReferencedString version

Ein UTF-8-String mit variabler Länge, der die anbieterspezifische Softwareversion des Geräts enthält, für das die Abfrage durchgeführt wird.

Darf maximal 32 Zeichen lang sein.

Öffentliche Funktionen

ImageQuery

 ImageQuery()

Standardkonstruktor für ImageQuery.

Die ImageQuery kann durch Aufrufen von init() oder durch Deserialisieren des Objekts aus einer Nachricht gefüllt werden.

init

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

Initialisieren Sie das Objekt ImageQuery explizit mit den bereitgestellten Werten.

Details
Parameter
[in] aProductSpec
Produktspezifikation.
[in] aVersion
Derzeit installierte Softwareversion.
[in] aTypeList
Die vom Client unterstützten Integritätstypen.
[in] aSchemeList
Die vom Client unterstützten Updateschemas.
[in] aPackage
Eine optionale Paketspezifikation, die vom Client unterstützt wird.
[in] aLocale
Eine optionale Sprachspezifikation, die vom Client angefordert wird.
[in] aTargetNodeId
Eine optionale Zielknoten-ID.
[in] aMetaData
Ein optionales TLV-codiertes Anbieterdaten-Blob.
Rückgabe
WEAVE_NO_ERROR unbedingt.

Operator==

bool operator==(
  const ImageQuery &
) const 

Gleichheitsoperator

Details
Parameter
another
Ein ImageQuery, das mit dieser ImageQuery verglichen wird
Rückgabe
„true“, wenn alle Felder in beiden Objekten gleich sind, andernfalls „false“

Packung

WEAVE_ERROR pack(
  PacketBuffer *
)

Serialisiert die zugrunde liegende ImageQuery in den bereitgestellten PacketBuffer.

Details
Parameter
[in] aBuffer
Ein Paketpuffer, in den die Abfrage gepackt werden soll
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn ImageQuery zu groß ist, um in den bereitgestellten Puffer zu passen.

ausgeben

void print(
  void
)

Öffentliche statische Funktionen

parse

WEAVE_ERROR parse(
  PacketBuffer *,
  ImageQuery &
)

Deserialisieren Sie die in einem PacketBuffer bereitgestellten Bildabfragenachricht in eine bereitgestellte ImageQuery.

Details
Parameter
[in] aBuffer
Ein Zeiger auf ein Paket, aus dem die Bildanfrage geparst werden soll.
[in] aQuery
Ein Objekt, in das das Ergebnis eingefügt werden soll.
Rückgabe
WEAVE_NO_ERROR Bei Erfolg
Rückgabe
WEAVE_ERROR_BUFFER_TOO_small Wenn die Nachricht zu klein war, um alle Felder von ImageQuery zu enthalten,
Rückgabe
WEAVE_ERROR_INVALID_LIST_LENGTH Wenn die Nachricht eine zu lange IntegrityTypeList oder UpdateSchemeList enthält