nl::PairingCode

สรุป

การแจงนับ

@353 enum
@354 enum
@355 enum
@356{
  kStandardPairingCodeLength = 6,
  kKryptonitePairingCodeLength = 9,
  kPairingCodeLenMin = 2,
  kBitsPerCharacter = 5
}
enum

ฟังก์ชัน

GeneratePairingCode(uint8_t pairingCodeLen, char *outBuf)
สร้างรหัสการจับคู่แบบสุ่ม
IntToPairingCode(uint64_t val, uint8_t pairingCodeLen, char *outBuf)
เข้ารหัสค่าจำนวนเต็มเป็นรหัสการจับคู่ Weave
IntToPairingCodeChar(int val)
char
แปลงค่าจำนวนเต็มในช่วง 0..31 เป็นอักขระของรหัสการจับคู่ Weave ที่เกี่ยวข้อง
IsValidPairingCodeChar(char ch)
bool
แสดงผลเป็น "จริง" หากอักขระที่ระบุเป็นอักขระของรหัสการจับคู่ Weave ที่ถูกต้อง
KryptoniteDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
สร้างสตริงรหัสการจับคู่ Kryptonite ที่กำหนดรหัสอุปกรณ์ Kryptonite
KryptonitePairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
ส่งคืนรหัสอุปกรณ์ที่เข้ารหัสในรหัสการจับคู่ Kryptonite
NevisDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
สร้างสตริงรหัสการจับคู่ Nevis ที่กำหนดรหัสอุปกรณ์ Nevis
NevisPairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
ส่งคืนรหัสอุปกรณ์ที่เข้ารหัสเป็นรหัสการจับคู่ Nevis
NormalizePairingCode(char *pairingCode, size_t & pairingCodeLen)
void
ทำให้อักขระในสตริงรหัสการจับคู่เป็นปกติ
PairingCodeCharToInt(char ch)
int
แปลงอักขระของรหัสการจับคู่ Weave เป็นค่าจำนวนเต็มในช่วง 0..31
PairingCodeToInt(const char *pairingCode, size_t pairingCodeLen, uint64_t & val)
ถอดรหัสรหัสการจับคู่ Weave เป็นค่าจำนวนเต็ม
VerifyPairingCode(const char *pairingCode, size_t pairingCodeLen)
ตรวจสอบรหัสการจับคู่ Weave กับอักขระตรวจสอบ

การแจงนับ

@353

 @353

@354

 @354

@355

 @355

@356

 @356
พร็อพเพอร์ตี้
kBitsPerCharacter

จำนวนบิตที่เข้ารหัสในอักขระของรหัสการจับคู่เดียว

kKryptonitePairingCodeLength

ความยาวของรหัสการจับคู่สำหรับ Kryptonite

kPairingCodeLenMin

ความยาวขั้นต่ำของรหัสการจับคู่

kStandardPairingCodeLength

ความยาวของรหัสการจับคู่สำหรับผลิตภัณฑ์ Nest ส่วนใหญ่

ฟังก์ชัน

GeneratePairingCode

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

สร้างรหัสการจับคู่แบบสุ่ม

ฟังก์ชันจะสร้างสตริงรหัสการจับคู่ Weave แบบสุ่มที่มีความยาวตามที่กำหนด ซึ่งเข้ารหัสเป็นเลข Big-endian, ตัวเลขฐาน 32 และอักขระตรวจสอบ Verhoeff ต่อท้าย สตริงที่สร้างขึ้นมีความยาวคงที่ตามพารามิเตอร์การจับคู่CodeLen จะมีระยะห่างจากสตริงด้านซ้ายด้วยเลข 0 ตามความจำเป็นเพื่อให้เป็นไปตามความยาวนี้

รายละเอียด
พารามิเตอร์
[in] pairingCodeLen
ความยาวที่ต้องการของสตริงรหัสการจับคู่ ซึ่งรวมถึงอักขระตรวจสอบที่ต่อท้าย ต้อง >= 2
[out] outBuf
ตัวชี้ไปยังบัฟเฟอร์อักขระที่จะได้รับรหัสการจับคู่ที่เข้ารหัสและอักขระสิ้นสุดที่เป็น Null บัฟเฟอร์ที่ระบุควรมีขนาดใหญ่อย่างน้อยเท่ากับ matchingCodeLen + 1
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หาก matchingCodeLen คือ < 2 หรือค่าจำนวนเต็มที่ระบุไม่สามารถเข้ารหัสเป็นจำนวนอักขระที่ระบุด้วย matchingCodeLen และลบ 1 สำหรับอักขระตรวจสอบ

IntToPairingCode

WEAVE_ERROR IntToPairingCode(
  uint64_t val,
  uint8_t pairingCodeLen,
  char *outBuf
)

เข้ารหัสค่าจำนวนเต็มเป็นรหัสการจับคู่ Weave

ฟังก์ชันจะสร้างสตริงรหัสการจับคู่ Weave ซึ่งประกอบด้วยค่าจำนวนเต็มที่ไม่มีเครื่องหมายที่ระบุ ซึ่งเข้ารหัสเป็นเลข Big-endian, เลขฐาน 32 และอักขระตรวจสอบ Verhoeff ต่อท้าย สตริงที่สร้างขึ้นมีความยาวคงที่ตามพารามิเตอร์การจับคู่CodeLen จะมีระยะห่างจากสตริงด้านซ้ายด้วยเลข 0 ตามความจำเป็นเพื่อให้เป็นไปตามความยาวนี้

รายละเอียด
พารามิเตอร์
[in] val
ค่าที่จะเข้ารหัส
[in] pairingCodeLen
ความยาวที่ต้องการของสตริงรหัสการจับคู่ที่เข้ารหัส ซึ่งรวมถึงอักขระตรวจสอบที่ต่อท้าย ต้อง >= 2
[out] outBuf
ตัวชี้ไปยังบัฟเฟอร์อักขระที่จะได้รับรหัสการจับคู่ที่เข้ารหัสและอักขระสิ้นสุดที่เป็น Null บัฟเฟอร์ที่ระบุควรมีขนาดใหญ่อย่างน้อยเท่ากับ matchingCodeLen + 1
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หาก matchingCodeLen คือ < 2 หรือค่าจำนวนเต็มที่ระบุไม่สามารถเข้ารหัสเป็นจำนวนอักขระที่ระบุด้วย matchingCodeLen และลบ 1 สำหรับอักขระตรวจสอบ

IntToPairingCodeChar

char IntToPairingCodeChar(
  int val
)

แปลงค่าจำนวนเต็มในช่วง 0..31 เป็นอักขระของรหัสการจับคู่ Weave ที่เกี่ยวข้อง

โปรดทราบว่าฟังก์ชันนี้จะสร้างอักขระตัวพิมพ์ใหญ่เสมอ

รายละเอียด
พารามิเตอร์
[in] val
ค่าจำนวนเต็มที่จะแปลง
การคืนสินค้า
อักขระของรหัสการจับคู่ที่ตรงกับค่าจำนวนเต็มที่ระบุ หรือ 0 หากค่าจำนวนเต็มอยู่นอกช่วง

IsValidPairingCodeChar

bool IsValidPairingCodeChar(
  char ch
)

แสดงผลเป็น "จริง" หากอักขระที่ระบุเป็นอักขระของรหัสการจับคู่ Weave ที่ถูกต้อง

โปรดทราบว่าฟังก์ชันนี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

รายละเอียด
พารามิเตอร์
[in] ch
อักขระที่จะทดสอบ
การคืนสินค้า
เป็นจริงหากอักขระที่ระบุเป็นอักขระของรหัสการจับคู่ Weave ที่ถูกต้อง

KryptoniteDeviceIdToPairingCode

WEAVE_ERROR KryptoniteDeviceIdToPairingCode(
  uint64_t deviceId,
  char *pairingCodeBuf,
  size_t pairingCodeBufSize
)

สร้างสตริงรหัสการจับคู่ Kryptonite ที่กำหนดรหัสอุปกรณ์ Kryptonite

รายละเอียด
พารามิเตอร์
[in] deviceId
รหัสอุปกรณ์ Kryptonite
[out] pairingCodeBuf
ตัวชี้ไปยังบัฟเฟอร์ที่จะได้รับรหัสการจับคู่ Kryptonite ซึ่งเป็นอักขระการสิ้นสุดเป็นค่าว่าง บัฟเฟอร์ที่ระบุควรมีความยาว 7 อักขระขึ้นไป
[in] pairingCodeBufSize
ขนาดของบัฟเฟอร์ที่ชี้โดย matchingCodeBuf
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากรหัสอุปกรณ์ที่ระบุอยู่นอกช่วง หรือบัฟเฟอร์ที่ให้มามีขนาดเล็กเกินไป

KryptonitePairingCodeToDeviceId

WEAVE_ERROR KryptonitePairingCodeToDeviceId(
  const char *pairingCode,
  uint64_t & deviceId
)

ส่งคืนรหัสอุปกรณ์ที่เข้ารหัสในรหัสการจับคู่ Kryptonite

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงที่มีการสิ้นสุดเป็นค่าว่างซึ่งมีรหัสการจับคู่ Kryptonite
[out] deviceId
การอ้างอิงจำนวนเต็มที่ได้รับรหัสอุปกรณ์ Kryptonite ที่ถอดรหัสแล้ว
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากความยาวของรหัสการจับคู่ที่ให้ไว้ไม่ถูกต้อง หรือหากรหัสการจับคู่มีอักขระที่ไม่ถูกต้อง หรือหากอักขระเริ่มต้นของรหัสการจับคู่ไม่สอดคล้องกับอักขระตรวจสอบ

NevisDeviceIdToPairingCode

WEAVE_ERROR NevisDeviceIdToPairingCode(
  uint64_t deviceId,
  char *pairingCodeBuf,
  size_t pairingCodeBufSize
)

สร้างสตริงรหัสการจับคู่ Nevis ที่กำหนดรหัสอุปกรณ์ Nevis

รายละเอียด
พารามิเตอร์
[in] deviceId
รหัสอุปกรณ์ Nevis
[out] pairingCodeBuf
ตัวชี้ไปยังบัฟเฟอร์ที่จะได้รับรหัสการจับคู่ Nevis ซึ่งเป็นอักขระการสิ้นสุดเป็นค่าว่าง บัฟเฟอร์ที่ระบุควรมีความยาว 7 อักขระขึ้นไป
[in] pairingCodeBufSize
ขนาดของบัฟเฟอร์ที่ชี้โดย matchingCodeBuf
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากรหัสอุปกรณ์ที่ระบุอยู่นอกช่วง หรือบัฟเฟอร์ที่ให้มามีขนาดเล็กเกินไป

NevisPairingCodeToDeviceId

WEAVE_ERROR NevisPairingCodeToDeviceId(
  const char *pairingCode,
  uint64_t & deviceId
)

ส่งคืนรหัสอุปกรณ์ที่เข้ารหัสเป็นรหัสการจับคู่ Nevis

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงที่มีการสิ้นสุดเป็นค่าว่างซึ่งมีรหัสการจับคู่ Nevis
[out] deviceId
การอ้างอิงไปยังจำนวนเต็มที่ได้รับรหัสอุปกรณ์ Nevis ที่ถอดรหัสแล้ว
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากความยาวของรหัสการจับคู่ที่ให้ไว้ไม่ถูกต้อง หรือหากรหัสการจับคู่มีอักขระที่ไม่ถูกต้อง หรือหากอักขระเริ่มต้นของรหัสการจับคู่ไม่สอดคล้องกับอักขระตรวจสอบ

NormalizePairingCode

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

ทำให้อักขระในสตริงรหัสการจับคู่เป็นปกติ

ฟังก์ชันนี้จะแปลงอักขระตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่ จับคู่อักขระที่ไม่ถูกต้อง "I", "O", "Q" และ "Z" ถึง "1", "0", "0" และ "2" ตามลำดับ และจะลบอักขระของโค้ดอื่นๆ ที่ไม่ใช่การจับคู่ออกจากสตริงที่ระบุ

สตริงอินพุตไม่จำเป็นต้องเป็นสถานะสิ้นสุด (NULL) แต่หากเป็นเอาต์พุตจะถูกสิ้นสุดด้วย NULL

รายละเอียด
พารามิเตอร์
[in,out] pairingCode
เมื่อป้อนข้อมูล สตริงรหัสการจับคู่ที่จะถูกทําให้เป็นมาตรฐาน เมื่อเอาต์พุตเป็นสตริงมาตรฐาน ไม่จำเป็นต้องสิ้นสุดสตริงเป็น NULL
[in,out] pairingCodeLen
เมื่อป้อนข้อมูล ความยาวของสตริงรหัสการจับคู่ ไม่รวมอักขระเครื่องหมายสิ้นสุด NULL ความยาวของสตริงที่ปรับให้เป็นมาตรฐานในเอาต์พุต

PairingCodeCharToInt

int PairingCodeCharToInt(
  char ch
)

แปลงอักขระของรหัสการจับคู่ Weave เป็นค่าจำนวนเต็มในช่วง 0..31

โปรดทราบว่าฟังก์ชันนี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

รายละเอียด
พารามิเตอร์
[in] ch
อักขระที่จะถูกแปลง
การคืนสินค้า
ค่าจำนวนเต็มที่ตรงกับอักขระของรหัสการจับคู่ที่ระบุ หรือ -1 หาก ch ไม่ใช่อักขระที่ถูกต้อง

PairingCodeToInt

WEAVE_ERROR PairingCodeToInt(
  const char *pairingCode,
  size_t pairingCodeLen,
  uint64_t & val
)

ถอดรหัสรหัสการจับคู่ Weave เป็นค่าจำนวนเต็ม

ฟังก์ชันจะแยกวิเคราะห์อักขระเริ่มต้นของสตริงรหัสการจับคู่ Weave เป็นเลข Big-endian, เลขฐาน 32 และแสดงผลค่าผลลัพธ์เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย สตริงอินพุตจะมีความยาว >= 2 เท่าใดก็ได้ ตราบใดที่จำนวนเต็มที่ถอดรหัสนั้นพอดีกับ uint64_t

ไม่มีการพยายามยืนยันอักขระตรวจสอบ Verhoeff (ดู VerifyPairingCode())

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงรหัสการจับคู่ที่จะถอดรหัส สตริงนี้ไม่จำเป็นต้องเป็นค่าว่าง
[in] pairingCodeLen
ความยาวของสตริงรหัสการจับคู่ โดยไม่รวมอักขระเครื่องหมายสิ้นสุด NULL ต้อง >= 2
[out] val
ค่าจำนวนเต็มที่ถอดรหัส
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หาก matchingCodeLen คือ < 2 หรือสตริงรหัสการจับคู่ที่ให้มามีอักขระที่ไม่ถูกต้อง หรือค่าจำนวนเต็มที่เข้ารหัสในรหัสการจับคู่เกินค่าสูงสุดที่สามารถจัดเก็บไว้ใน uint64_t

VerifyPairingCode

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

ตรวจสอบรหัสการจับคู่ Weave กับอักขระตรวจสอบ

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงรหัสการจับคู่ที่จะตรวจสอบ สตริงนี้ไม่จำเป็นต้องเป็นค่าว่าง
[in] pairingCodeLen
ความยาวของสตริงรหัสการจับคู่ โดยไม่รวมอักขระเครื่องหมายสิ้นสุด NULL ต้อง >= 2
ผลลัพธ์
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หาก matchingCodeLen คือ < 2 หรืออักขระเริ่มต้นของรหัสการจับคู่ไม่สอดคล้องกับค่าของอักขระตรวจสอบ