nl::Weave::Profiles::DeviceDescription::WeaveDeviceDescriptor

#include <src/lib/profiles/device-description/DeviceDescription.h>

包含 Weave 裝置的相關描述性資訊。

摘要

建構函式和解構函式

WeaveDeviceDescriptor(void)

公開類型

@180{
  kMaxSerialNumberLength = 32,
  kMaxPairingCodeLength = 16,
  kMaxRendezvousWiFiESSID = 32,
  kMaxSoftwareVersionLength = WEAVE_CONFIG_MAX_SOFTWARE_VERSION_LENGTH
}
列舉
定義部分屬性的長度上限。
@181{
  kFeature_HomeAlarmLinkCapable = 0x00000001,
  kFeature_LinePowered = 0x00000002
}
列舉
指出特定裝置功能的功能旗標。
@182{
  kFlag_IsRendezvousWiFiESSIDSuffix = 0x01
}
列舉
旗標欄位定義。

公開屬性

Day
uint8_t
裝置製造日 (0 = 不存在)
DeviceFeatures
uint32_t
表示支援特定裝置功能的位元欄位。
DeviceId
uint64_t
Weave 裝置 ID (0 = 不存在)
FabricId
uint64_t
裝置所屬的 Weave 織品 ID (0 = 不存在)
Flags
uint8_t
這個位元欄位含有裝置的其他相關資訊。
ManufacturingDate
struct nl::Weave::Profiles::DeviceDescription::WeaveDeviceDescriptor::@183
Month
uint8_t
裝置製造月份 (1 = 1 月)
PairingCode[kMaxPairingCodeLength+1]
char
裝置配對代碼 (NUL 已終止,0 長度 = 不存在)
PairingCompatibilityVersionMajor
uint16_t
主要裝置配對軟體相容性版本。
PairingCompatibilityVersionMinor
uint16_t
次要裝置配對軟體相容性版本。
Primary802154MACAddress[8]
uint8_t
主要 802.15.4 介面的 MAC 位址 (大端序,所有零 = 不存在)
PrimaryWiFiMACAddress[6]
uint8_t
主要 WiFi 介面的 MAC 位址 (大端序,所有零 = 不存在)
ProductId
uint16_t
裝置產品代碼 (0 = 不存在)
ProductRevision
uint16_t
裝置產品修訂版本 (0 = 不存在)
RendezvousWiFiESSID[kMaxRendezvousWiFiESSID+1]
char
裝置 Wi-Fi 流量網路的 ESSID (NUL 已終止,0 長度 = 不存在)
SerialNumber[kMaxSerialNumberLength+1]
char
裝置序號 (NUL 已終止,0 個字元 = 不存在)
SoftwareVersion[kMaxSoftwareVersionLength+1]
char
使用中的軟體版本 (NUL 已終止,0 個字元 = 不存在)
VendorId
uint16_t
裝置供應商代碼 (0 = 不存在)
Year
uint16_t
裝置製造年份 (有效範圍為 2001 至 2099 年)

公用函式

Clear(void)
void
清除裝置說明。

公開的靜態函式

Decode(const uint8_t *data, uint32_t dataLen, WeaveDeviceDescriptor & outDesc)
將所提供資料緩衝區的內容解碼為 Weave 裝置描述元物件。
DecodeTLV(const uint8_t *data, uint32_t dataLen, WeaveDeviceDescriptor & outDesc)
將所提供 TLV 資料緩衝區的內容解碼為 Weave 裝置描述元物件。
DecodeTLV(nl::Weave::TLV::TLVReader & reader, WeaveDeviceDescriptor & outDesc)
使用提供的預先初始化 TLVReader 解碼「裝置說明」。
DecodeText(const char *data, uint32_t dataLen, WeaveDeviceDescriptor & outDesc)
將所提供文字資料緩衝區的內容解碼為 Weave 裝置描述元物件。
EncodeTLV(const WeaveDeviceDescriptor & desc, uint8_t *buf, uint32_t bufLen, uint32_t & outEncodedLen)
將提供的裝置描述元編碼為 Weave TLV,並寫入提供的緩衝區。
EncodeTLV(const WeaveDeviceDescriptor & desc, nl::Weave::TLV::TLVWriter & writer)
使用所提供的預先初始化 TLVWriter 物件,將所提供的裝置描述元編碼為 Weave TLV
EncodeText(const WeaveDeviceDescriptor & desc, char *buf, uint32_t bufLen, uint32_t & outEncodedLen)
將所提供裝置描述元的文字編碼為寫入指定緩衝區的文字。
IsZeroBytes(const uint8_t *buf, uint32_t len)
bool
檢查指定的緩衝區是否只包含零。

公開類型

@180

 @180

定義部分屬性的長度上限。

屬性
kMaxPairingCodeLength

配對代碼長度上限。

kMaxRendezvousWiFiESSID

Rendezvous 長度的最大 Wi-Fi ESSID。

kMaxSerialNumberLength

序號長度上限。

kMaxSoftwareVersionLength

軟體版本長度上限。

@181

 @181

指出特定裝置功能的功能旗標。

屬性
kFeature_HomeAlarmLinkCapable

表示支援連線到住家警報面板的 Nest Protect。

kFeature_LinePowered

表示需要電源線的裝置。

@182

 @182

旗標欄位定義。

屬性
kFlag_IsRendezvousWiFiESSIDSuffix

表示 RendezvousWiFiESSID 值是裝置 Wi-Fi 訊號網路 ESSID 結尾的後置字串。

公開屬性

第幾天

uint8_t Day

裝置製造日 (0 = 不存在)

DeviceFeatures

uint32_t DeviceFeatures

表示支援特定裝置功能的位元欄位。

DeviceId

uint64_t DeviceId

Weave 裝置 ID (0 = 不存在)

FabricId

uint64_t FabricId

裝置所屬的 Weave 織品 ID (0 = 不存在)

旗幟

uint8_t Flags

這個位元欄位含有裝置的其他相關資訊。

ManufacturingDate

struct nl::Weave::Profiles::DeviceDescription::WeaveDeviceDescriptor::@183 ManufacturingDate

月份

uint8_t Month

裝置製造月份 (1 = 1 月)

PairingCode

char PairingCode[kMaxPairingCodeLength+1]

裝置配對代碼 (NUL 已終止,0 長度 = 不存在)

PairingCompatibilityVersionMajor

uint16_t PairingCompatibilityVersionMajor

主要裝置配對軟體相容性版本。

PairingCompatibilityVersionMinor

uint16_t PairingCompatibilityVersionMinor

次要裝置配對軟體相容性版本。

主要 802154MACAddress

uint8_t Primary802154MACAddress[8]

主要 802.15.4 介面的 MAC 位址 (大端序,所有零 = 不存在)

PrimaryWiFiMACAddress

uint8_t PrimaryWiFiMACAddress[6]

主要 WiFi 介面的 MAC 位址 (大端序,所有零 = 不存在)

ProductId

uint16_t ProductId

裝置產品代碼 (0 = 不存在)

ProductRevision

uint16_t ProductRevision

裝置產品修訂版本 (0 = 不存在)

RendezvousWiFiESSID

char RendezvousWiFiESSID[kMaxRendezvousWiFiESSID+1]

裝置 Wi-Fi 流量網路的 ESSID (NUL 已終止,0 長度 = 不存在)

SerialNumber

char SerialNumber[kMaxSerialNumberLength+1]

裝置序號 (NUL 已終止,0 個字元 = 不存在)

SoftwareVersion

char SoftwareVersion[kMaxSoftwareVersionLength+1]

使用中的軟體版本 (NUL 已終止,0 個字元 = 不存在)

VendorId

uint16_t VendorId

裝置供應商代碼 (0 = 不存在)

uint16_t Year

裝置製造年份 (有效範圍為 2001 至 2099 年)

公用函式

清除

void Clear(
  void
)

清除裝置說明。

WeaveDeviceDescriptor

 WeaveDeviceDescriptor(
  void
)

公開的靜態函式

Decode

WEAVE_ERROR Decode(
  const uint8_t *data,
  uint32_t dataLen,
  WeaveDeviceDescriptor & outDesc
)

將所提供資料緩衝區的內容解碼為 Weave 裝置描述元物件。

詳細說明
參數
[in] data
指向包含文字或 TLV 編碼的 Weave 裝置描述元資料的緩衝區指標。
[in] dataLen
提供的緩衝區長度。
[out] outDesc
要填入的裝置描述元物件的參照。
傳回值
WEAVE_ERROR_INVALID_DEVICE_DESCRIPTOR
如果提供的緩衝區無效。
WEAVE_NO_ERROR
成功時。
other
其他 Weave 或平台專屬錯誤代碼,會指出發生錯誤,導致 TLV 無法解碼。

DecodeTLV

WEAVE_ERROR DecodeTLV(
  const uint8_t *data,
  uint32_t dataLen,
  WeaveDeviceDescriptor & outDesc
)

將所提供 TLV 資料緩衝區的內容解碼為 Weave 裝置描述元物件。

詳細說明
參數
[in] data
指向包含文字編碼 Weave 裝置描述元資料的緩衝區指標。
[in] dataLen
提供的緩衝區長度。
[out] outDesc
要填入的裝置描述元物件的參照。
傳回值
WEAVE_ERROR_WRONG_TLV_TYPE
如果這不是「裝置說明 TLV」,
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
如果裝置說明之後發生更多 TLV 資料,
WEAVE_NO_ERROR
成功時。
other
其他 Weave 或平台專屬錯誤代碼,會指出 TLV 編碼時發生錯誤。

DecodeTLV

WEAVE_ERROR DecodeTLV(
  nl::Weave::TLV::TLVReader & reader,
  WeaveDeviceDescriptor & outDesc
)

使用提供的預先初始化 TLVReader 解碼「裝置說明」。

詳細說明
參數
[in] reader
預先初始化 TLVReader 的參考資料。
[out] outDesc
要填入的裝置描述元物件的參照。
傳回值
WEAVE_ERROR_INVALID_TLV_ELEMENT
如果 TLV 資料中找到無效的「裝置說明」資訊,
WEAVE_NO_ERROR
成功時。
other
其他 Weave 或平台專屬錯誤代碼,會指出發生錯誤,導致 TLV 無法解碼。

DecodeText

WEAVE_ERROR DecodeText(
  const char *data,
  uint32_t dataLen,
  WeaveDeviceDescriptor & outDesc
)

將所提供文字資料緩衝區的內容解碼為 Weave 裝置描述元物件。

詳細說明
參數
[in] data
指向包含文字編碼 Weave 裝置描述元資料的緩衝區指標。
[in] dataLen
提供的緩衝區長度。
[out] outDesc
要填入的裝置描述元物件的參照。
傳回值
WEAVE_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION
如果編碼的資料版本不受支援。
WEAVE_ERROR_INVALID_DEVICE_DESCRIPTOR
如果編碼的資料格式不正確。
WEAVE_ERROR_INCORRECT_STATE
解碼器遇到不一致的狀態。
WEAVE_ERROR_BUFFER_TOO_SMALL
在解碼期間達到緩衝區的結尾。
WEAVE_NO_ERROR
成功時。

EncodeTLV

WEAVE_ERROR EncodeTLV(
  const WeaveDeviceDescriptor & desc,
  uint8_t *buf,
  uint32_t bufLen,
  uint32_t & outEncodedLen
)

將提供的裝置描述元編碼為 Weave TLV,並寫入提供的緩衝區。

詳細說明
參數
[in] desc
要編碼的 Weave 裝置描述元參考資料。
[out] buf
指向會寫入編碼文字的緩衝區指標。
[in] bufLen
提供的緩衝區長度。
[out] outEncodedLen
長度變數的參照,會以寫入緩衝區的字元數覆寫。
傳回值
WEAVE_NO_ERROR
成功時。
other
其他 Weave 或平台專屬錯誤代碼,會指出 TLV 編碼時發生錯誤。

EncodeTLV

WEAVE_ERROR EncodeTLV(
  const WeaveDeviceDescriptor & desc,
  nl::Weave::TLV::TLVWriter & writer
)

使用所提供的預先初始化 TLVWriter 物件,將所提供的裝置描述元編碼為 Weave TLV

這項權限的用途是將裝置說明新增至較大的 TLV 輸出內容。

詳細說明
參數
[in] desc
要編碼的 Weave 裝置描述元參考資料。
[in] writer
要使用的預先初始化 TLVWriter 物件參照。
傳回值
WEAVE_NO_ERROR
成功時。
other
其他 Weave 或平台專屬錯誤代碼,會指出 TLV 編碼時發生錯誤。

EncodeText

WEAVE_ERROR EncodeText(
  const WeaveDeviceDescriptor & desc,
  char *buf,
  uint32_t bufLen,
  uint32_t & outEncodedLen
)

將所提供裝置描述元的文字編碼為寫入指定緩衝區的文字。

詳細說明
參數
[in] desc
要編碼的 Weave 裝置描述元參考資料。
[out] buf
指向會寫入編碼文字的緩衝區指標。
[in] bufLen
提供的緩衝區長度。
[out] outEncodedLen
長度變數的參照,會以寫入緩衝區的字元數覆寫。
傳回值
WEAVE_ERROR_BUFFER_TOO_SMALL
如果提供的緩衝區對產生的文字說明來說太小。
WEAVE_ERROR_INVALID_ARGUMENT
如果描述元欄位無效,
WEAVE_NO_ERROR
成功時。

IsZeroBytes

bool IsZeroBytes(
  const uint8_t *buf,
  uint32_t len
)

檢查指定的緩衝區是否只包含零。

詳細說明
參數
[in] buf
指向緩衝區的指標。
[in] len
緩衝區的長度。
傳回值
TRUE
如果緩衝區只包含零。
FALSE
如果緩衝區包含任何非零的值。