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)
แสดงผลรหัสอุปกรณ์ที่เข้ารหัสในรหัสการจับคู่ของเนวิส
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

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

kKryptonitePairingCodeLength

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

kPairingCodeLenMin

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

kStandardPairingCodeLength

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

ฟังก์ชัน

GeneratePairingCode

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

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

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

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

IntToPairingCode

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

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

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

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

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

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงที่สิ้นสุดค่า NULL ที่มีรหัสการจับคู่ 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 เช่นกัน

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

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 เป็นตัวเลขขนาดใหญ่ เลขฐาน 32 และแสดงผลค่าผลลัพธ์เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย สตริงอินพุตมีความยาวเท่าใดก็ได้ >= 2 ตราบใดที่จำนวนเต็มที่ถอดรหัสอยู่ภายใน uint64_t

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

รายละเอียด
พารามิเตอร์
[in] pairingCode
สตริงรหัสการจับคู่ที่จะถอดรหัส ไม่จำเป็นต้องสิ้นสุดสตริงนี้
[in] pairingCodeLen
ความยาวของสตริงรหัสการจับคู่ ไม่รวมอักขระสัญลักษณ์สิ้นสุด (NULL) ต้องเป็น >= 2
[out] val
ค่าจำนวนเต็มที่ถอดรหัส
แสดงผลค่า
WEAVE_NO_ERROR
วิธีการนี้สำเร็จหรือไม่
WEAVE_ERROR_INVALID_ARGUMENT
หาก matchCodeLen คือ < 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
หาก matchCodeLen คือ < 2 หรืออักขระเริ่มต้นของรหัสการจับคู่ไม่สอดคล้องกับค่าของอักขระตรวจสอบ