nl::การจับคู่โค้ด

สรุป

การแจกแจง

@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 ส่วนใหญ่

ฟังก์ชัน

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

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

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

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

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

โค้ด IntToPairing

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

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

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

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

IntToPairingCodeChar

char IntToPairingCodeChar(
  int val
)

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

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

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

IsCertingingCodeChar

bool IsValidPairingCodeChar(
  char ch
)

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

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

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

รหัสการจับคู่อุปกรณ์ Kryptonite

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

สร้างสตริงรหัสการจับคู่ Kryptonite โดยใช้รหัสอุปกรณ์ Kryptonite

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

โค้ดการจับคู่ Kryptonite

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

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

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

รหัสการจับคู่อุปกรณ์ Nevis

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

สร้างสตริงรหัสการจับคู่ Nevis ซึ่งระบุรหัสอุปกรณ์ Nevis

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

รหัสการจับคู่ Nevis ในอุปกรณ์

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

แสดงรหัสอุปกรณ์ที่เข้ารหัสด้วยรหัสการจับคู่ของ Nevis

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

มาตรฐานการจับคู่คู่

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

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

ฟังก์ชันนี้จะแปลงอักขระที่เป็นตัวอักษรเป็นตัวพิมพ์ใหญ่ทั้งหมด แมปอักขระที่ไม่ถูกต้อง 'I', 'O', 'Q' &&33;Z' & &33;1', '0''&

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

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

การจับคู่โค้ดแผนภูมิ

int PairingCodeCharToInt(
  char ch
)

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

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

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

การจับคู่โค้ดใน Int

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

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

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

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

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

ยืนยันรหัสการจับคู่

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

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

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