nl::Weave::TLV

Weave TLV 형식으로 인코딩된 데이터 작업에 대한 정의입니다.

요약

Weave TLV는 단순한 구조화된 데이터를 위한 일반화된 인코딩 방법입니다. 일반적으로 사용되는 JSON 직렬화 형식과 많은 속성을 공유하지만 전송 시 훨씬 더 간결합니다.

열거

@71 enum
@73 enum
@74{
  AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
enum
@75 enum
TLVCommonProfiles{
  kProfileIdNotSpecified = 0xFFFFFFFF
}
enum
TLVElementType enum
TLVFieldSize enum
TLVTagControl enum
TLVTagFields enum
TLVType enum
TLV 요소의 유형을 식별하는 열거형입니다.

변수

kWeaveTLVCopyChunkSize = 16
const size_t
판독기 객체의 TLV 요소를 작성기에 복사합니다.
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

함수

CommonTag(uint32_t tagNum)
uint64_t
공통 프로필 TLV 태그의 API 표현을 생성합니다.
ContextTag(uint8_t tagNum)
uint64_t
컨텍스트별 TLV 태그의 API 표현을 생성합니다.
GetTLVFieldSize(uint8_t type)
TLVFieldSize
IsContextTag(uint64_t tag)
bool
제공된 태그가 컨텍스트별 태그인 경우 true를 반환합니다.
IsProfileTag(uint64_t tag)
bool
제공된 태그가 프로필별 태그인 경우 true를 반환합니다.
IsSpecialTag(uint64_t tag)
bool
IsValidTLVType(uint8_t type)
bool
지정된 TLV 유형이 유효하면 true를 반환합니다.
ProfileIdFromTag(uint64_t tag)
uint32_t
TLV 태그에서 프로필 ID를 반환합니다.
ProfileNumFromTag(uint64_t tag)
uint16_t
TLV 태그에서 프로필 번호를 반환합니다.
ProfileTag(uint32_t profileId, uint32_t tagNum)
uint64_t
프로필 ID 및 태그 번호에서 프로필별 TLV 태그의 API 표현을 생성합니다.
ProfileTag(uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
공급업체 ID, 프로필 번호, 태그 번호에서 프로필별 TLV 태그의 API 표현을 생성합니다.
TLVFieldSizeToBytes(TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength(uint8_t type)
bool
지정된 TLV 유형이 연결된 길이 필드가 있음을 암시하는 경우 true를 반환합니다.
TLVTypeHasValue(uint8_t type)
bool
지정된 TLV 유형이 연결된 값 필드가 있음을 암시하는 경우 true를 반환합니다.
TLVTypeIsContainer(uint8_t type)
bool
지정된 TLV 유형이 컨테이너이면 true를 반환합니다.
TLVTypeIsString(uint8_t type)
bool
지정된 TLV 유형이 UTF8 또는 바이트 문자열이면 true를 반환합니다.
TagNumFromTag(uint64_t tag)
uint32_t
TLV 태그에서 태그 번호를 반환합니다.
VendorIdFromTag(uint64_t tag)
uint16_t
TLV 태그에서 공급업체 ID를 반환합니다.

클래스

nl::Weave::TLV::CircularTLVReader
nl::Weave::TLV::CircularTLVWriter
nl::Weave::TLV::TLVReader

Weave TLV 형식으로 인코딩된 데이터에 메모리 효율적인 파서를 제공합니다.

nl::Weave::TLV::TLVUpdater

TLV 인코딩에서 요소를 수정/추가/삭제하기 위한 통합된 리더/작성기 인터페이스를 제공합니다.

nl::Weave::TLV::TLVWriter

Weave TLV 형식으로 데이터를 쓰기 위한 메모리 효율적인 인코더를 제공합니다.

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffernl::Weave::TLV::TLVWriter 및 nl::Weave::TLVTLVReader의 원형 스토리지를 제공합니다.

네임스페이스

nl::Weave::TLV::Debug

이 네임스페이스에는 Weave TLV를 디버깅하고 로깅하기 위한 유형과 인터페이스가 포함되어 있습니다.

nl::Weave::TLV::Utilities

이 네임스페이스에는 Weave TLV를 관리하고 사용하기 위한 유형과 유틸리티 인터페이스가 포함되어 있습니다.

열거

@71

 @71

@73

 @73

@74

 @74
속성
AnonymousTag

태그가 없는 TLV 요소를 나타내는 값입니다 (예:

익명 요소).

@75

 @75

TLVCommonProfiles

 TLVCommonProfiles
속성
kProfileIdNotSpecified

변수 또는 멤버에 프로필 ID가 없음을 나타내는 데 사용됩니다.

이는 기본적으로 WeaveProfiles.h에 정의된 kWeaveProfile_NotSpecified와 동일합니다.

TLVElementType

 TLVElementType

TLVFieldSize

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

TLVType

 TLVType

TLV 요소의 유형을 식별하는 열거형입니다.

변수

kWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

판독기 객체의 TLV 요소를 작성기에 복사합니다.

CopyElement() 메서드는 유형과 값을 TLVReader 객체에서 가져온 새 TLV 요소를 인코딩합니다. 메서드가 호출되면 제공된 리더 객체가 소스 TLV 요소에 배치되어야 합니다. 새로 인코딩된 요소는 입력 컨테이너와 동일한 유형과 콘텐츠를 갖지만 태그는 지정된 인수로 설정됩니다. 제공된 요소가 TLV 컨테이너 (구조, 배열 또는 경로)인 경우 컨테이너의 전체 콘텐츠가 복사됩니다.

세부정보
매개변수
[in] tag
컨테이너로 인코딩될 TLV 태그 또는 컨테이너가 태그 없이 인코딩되어야 하는 경우 AnonymousTag입니다. 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] reader
유형과 값을 복사해야 하는 사전 인코딩된 TLV 요소를 식별하는 TLVReader 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_INCORRECT_STATE
제공된 판독기가 요소 위에 배치되어 있지 않은 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
현재 작성기에서 컨테이너 작성기가 열려 있고 아직 닫히지 않은 경우
WEAVE_ERROR_TLV_UNDERRUN
제공된 리더와 연결된 기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
제공된 판독기에 잘못되거나 지원되지 않는 TLV 요소 유형이 발생한 경우입니다.
WEAVE_ERROR_INVALID_TLV_TAG
제공된 리더가 잘못된 컨텍스트에서 TLV 태그를 발견했거나 제공된 태그가 새 컨테이너를 쓰는 컨텍스트에서 유효하지 않거나 부적절한 경우입니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰면 작성기가 초기화될 때 지정된 최대 바이트 수의 한도를 초과하는 경우
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당 시도가 실패한 경우.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수나 판독기 객체와 연결된 GetNextBuffer() 함수에서 반환된 기타 Weave 또는 플랫폼별 오류입니다.

sTagSizes

const uint8_t sTagSizes[] = { 0, 1, 2, 4, 2, 4, 6, 8 }

함수

CommonTag

uint64_t CommonTag(
  uint32_t tagNum
)

공통 프로필 TLV 태그의 API 표현을 생성합니다.

세부정보
매개변수
[in] tagNum
태그에 할당된 공통 프로필 태그 번호입니다.
반환
태그를 나타내는 64비트 정수입니다.

ContextTag

uint64_t ContextTag(
  uint8_t tagNum
)

컨텍스트별 TLV 태그의 API 표현을 생성합니다.

세부정보
매개변수
[in] tagNum
태그에 할당된 컨텍스트별 태그 번호입니다.
반환
태그를 나타내는 64비트 정수입니다.

GetTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

IsContextTag

bool IsContextTag(
  uint64_t tag
)

제공된 태그가 컨텍스트별 태그인 경우 true를 반환합니다.

IsProfileTag

bool IsProfileTag(
  uint64_t tag
)

제공된 태그가 프로필별 태그인 경우 true를 반환합니다.

IsSpecialTag

bool IsSpecialTag(
  uint64_t tag
)

IsValidTLVType

bool IsValidTLVType(
  uint8_t type
)

지정된 TLV 유형이 유효하면 true를 반환합니다.

세부정보
반환
지정된 TLV 유형이 유효하면 true이고, 그렇지 않으면 false입니다.

ProfileIdFromTag

uint32_t ProfileIdFromTag(
  uint64_t tag
)

TLV 태그에서 프로필 ID를 반환합니다.

세부정보
매개변수
[in] tag
프로필별 TLV 태그의 API 표현입니다.
반환
프로필 ID입니다.

ProfileNumFromTag

uint16_t ProfileNumFromTag(
  uint64_t tag
)

TLV 태그에서 프로필 번호를 반환합니다.

세부정보
매개변수
[in] tag
프로필별 TLV 태그의 API 표현입니다.
반환
연결된 프로필 번호입니다.

ProfileTag

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

프로필 ID 및 태그 번호에서 프로필별 TLV 태그의 API 표현을 생성합니다.

세부정보
매개변수
[in] profileId
태그가 정의된 프로필의 ID입니다.
[in] tagNum
태그에 할당된 프로필별 태그 번호입니다.
반환
태그를 나타내는 64비트 정수입니다.

ProfileTag

uint64_t ProfileTag(
  uint16_t vendorId,
  uint16_t profileNum,
  uint32_t tagNum
)

공급업체 ID, 프로필 번호, 태그 번호에서 프로필별 TLV 태그의 API 표현을 생성합니다.

세부정보
매개변수
[in] vendorId
태그를 정의한 공급업체의 ID입니다.
[in] profileNum
태그가 정의된 프로필에 대해 공급업체가 할당한 번호입니다.
[in] tagNum
태그에 할당된 프로필별 태그 번호입니다.
반환
태그를 나타내는 64비트 정수입니다.

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTypeHasLength

bool TLVTypeHasLength(
  uint8_t type
)

지정된 TLV 유형이 연결된 길이 필드가 있음을 암시하는 경우 true를 반환합니다.

세부정보
반환
지정된 TLV 유형이 연결된 길이 필드의 존재를 암시하는 경우 true이고, 그렇지 않으면 false입니다.

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

지정된 TLV 유형이 연결된 값 필드가 있음을 암시하는 경우 true를 반환합니다.

세부정보
반환
지정된 TLV 유형이 연결된 값 필드가 있음을 암시하는 경우 true이고, 그렇지 않으면 false입니다.

TLVTypeIsContainer

bool TLVTypeIsContainer(
  uint8_t type
)

지정된 TLV 유형이 컨테이너이면 true를 반환합니다.

세부정보
반환
지정된 TLV 유형이 컨테이너인 경우 true이고, 그렇지 않으면 false입니다.

TLVTypeIsString

bool TLVTypeIsString(
  uint8_t type
)

지정된 TLV 유형이 UTF8 또는 바이트 문자열이면 true를 반환합니다.

세부정보
반환
지정된 TLV 유형이 UTF8 또는 바이트 문자열인 경우 true이고, 그렇지 않으면 false입니다.

TagNumFromTag

uint32_t TagNumFromTag(
  uint64_t tag
)

TLV 태그에서 태그 번호를 반환합니다.

세부정보
매개변수
[in] tag
프로필별 또는 컨텍스트별 TLV 태그의 API 표현입니다.
반환
연결된 태그 번호입니다.
참고 항목:
IsProfileTag()IsContextTag()

VendorIdFromTag

uint16_t VendorIdFromTag(
  uint64_t tag
)

TLV 태그에서 공급업체 ID를 반환합니다.

세부정보
매개변수
[in] tag
프로필별 TLV 태그의 API 표현입니다.
반환
연결된 공급업체 ID입니다.