nl::PairingCode

Tóm tắt

Liệt kê

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

Hàm

GeneratePairingCode(uint8_t pairingCodeLen, char *outBuf)
Tạo mã ghép nối ngẫu nhiên.
IntToPairingCode(uint64_t val, uint8_t pairingCodeLen, char *outBuf)
Mã hoá một giá trị số nguyên dưới dạng mã ghép nối Weave.
IntToPairingCodeChar(int val)
char
Chuyển đổi một giá trị số nguyên trong phạm vi 0..31 thành ký tự mã ghép nối Weave tương ứng.
IsValidPairingCodeChar(char ch)
bool
Trả về true nếu ký tự đã cung cấp là ký tự mã ghép nối Weave hợp lệ.
KryptoniteDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
Tạo một chuỗi mã ghép nối Kryptonite dựa trên mã thiết bị Kryptonite.
KryptonitePairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
Trả về mã thiết bị được mã hoá bằng mã ghép nối Kryptonite.
NevisDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
Tạo chuỗi mã ghép nối Nevis dựa trên mã thiết bị Nevis.
NevisPairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
Trả về mã thiết bị được mã hoá bằng mã ghép nối Nevis.
NormalizePairingCode(char *pairingCode, size_t & pairingCodeLen)
void
Chuẩn hoá các ký tự trong một chuỗi mã ghép nối.
PairingCodeCharToInt(char ch)
int
Chuyển đổi ký tự mã ghép nối Weave thành một giá trị số nguyên trong phạm vi 0..31.
PairingCodeToInt(const char *pairingCode, size_t pairingCodeLen, uint64_t & val)
Giải mã mã ghép nối Weave dưới dạng giá trị số nguyên.
VerifyPairingCode(const char *pairingCode, size_t pairingCodeLen)
Xác minh mã ghép nối Weave dựa trên ký tự kiểm tra của mã đó.

Liệt kê

@353

 @353

@354

 @354

@355

 @355

@356

 @356
Thuộc tính
kBitsPerCharacter

Số bit được mã hoá trong một ký tự mã ghép nối.

kKryptonitePairingCodeLength

Độ dài mã ghép nối cho Kryptonite.

kPairingCodeLenMin

Độ dài tối thiểu của mã ghép nối.

kStandardPairingCodeLength

Ghép nối độ dài mã cho hầu hết các sản phẩm Nest.

Hàm

GeneratePairingCode

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

Tạo mã ghép nối ngẫu nhiên.

Hàm này tạo một chuỗi mã ghép nối Weave ngẫu nhiên có độ dài đã chỉ định. được mã hoá dưới dạng lớn-endian, chữ số base-32, cùng với ký tự kiểm tra Verhoeff theo sau. Chuỗi được tạo có độ dài cố định được chỉ định bởi tham số multipleCodeLen. Số 0 sẽ được dùng vào khoảng đệm ở bên trái nếu cần để đáp ứng độ dài này.

Thông tin chi tiết
Tham số
[in] pairingCodeLen
Độ dài mong muốn của chuỗi mã ghép nối, bao gồm cả ký tự dấu kiểm ở cuối. Phải >= 2.
[out] outBuf
Con trỏ trỏ đến vùng đệm ký tự sẽ nhận mã ghép nối được mã hoá, cùng với ký tự dấu kết thúc rỗng. Vùng đệm được cung cấp ít nhất phải lớn bằng matchingCodeLen + 1.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen là < 2 hoặc giá trị số nguyên đã cung cấp không thể được mã hóa theo số ký tự do matchingCodeLen chỉ định, trừ đi 1 cho ký tự kiểm tra.

IntToPairingCode

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

Mã hoá một giá trị số nguyên dưới dạng mã ghép nối Weave.

Hàm này tạo một chuỗi mã ghép nối Weave bao gồm một giá trị số nguyên không dấu đã cung cấp, được mã hoá dưới dạng chữ số lớn-endian, base-32, cùng với một ký tự kiểm tra Verhoeff theo sau. Chuỗi được tạo có độ dài cố định được chỉ định bởi tham số multipleCodeLen. Số 0 sẽ được dùng vào khoảng đệm ở bên trái nếu cần để đáp ứng độ dài này.

Thông tin chi tiết
Tham số
[in] val
Giá trị cần được mã hoá.
[in] pairingCodeLen
Độ dài mong muốn của chuỗi mã ghép nối được mã hoá, bao gồm cả ký tự dấu kiểm ở cuối. Phải >= 2.
[out] outBuf
Con trỏ trỏ đến vùng đệm ký tự sẽ nhận mã ghép nối được mã hoá, cùng với ký tự dấu kết thúc rỗng. Vùng đệm được cung cấp ít nhất phải lớn bằng matchingCodeLen + 1.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen là < 2 hoặc giá trị số nguyên đã cung cấp không thể được mã hóa theo số ký tự do matchingCodeLen chỉ định, trừ đi 1 cho ký tự kiểm tra.

IntToPairingCodeChar

char IntToPairingCodeChar(
  int val
)

Chuyển đổi một giá trị số nguyên trong phạm vi 0..31 thành ký tự mã ghép nối Weave tương ứng.

Xin lưu ý rằng hàm này luôn tạo ra các ký tự viết hoa.

Thông tin chi tiết
Tham số
[in] val
Giá trị số nguyên cần chuyển đổi.
Trả về
Ký tự mã ghép nối tương ứng với giá trị số nguyên được chỉ định hoặc 0 nếu giá trị số nguyên nằm ngoài phạm vi.

IsValidPairingCodeChar

bool IsValidPairingCodeChar(
  char ch
)

Trả về true nếu ký tự đã cung cấp là ký tự mã ghép nối Weave hợp lệ.

Lưu ý rằng hàm này không phân biệt chữ hoa chữ thường.

Thông tin chi tiết
Tham số
[in] ch
Ký tự cần kiểm tra.
Trả về
Đúng nếu ký tự được cung cấp là ký tự mã ghép nối Weave hợp lệ.

KryptoniteDeviceIdToPairingCode

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

Tạo một chuỗi mã ghép nối Kryptonite dựa trên mã thiết bị Kryptonite.

Thông tin chi tiết
Tham số
[in] deviceId
Một mã thiết bị Kryptonite.
[out] pairingCodeBuf
Con trỏ trỏ đến vùng đệm sẽ nhận mã ghép nối Kryptonite, ký tự kết thúc NULL. Vùng đệm được cung cấp phải có kích thước từ 7 ký tự trở lên.
[in] pairingCodeBufSize
Kích thước của vùng đệm được trỏ bởi matchingCodeBuf.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mã thiết bị được cung cấp nằm ngoài phạm vi hoặc nếu vùng đệm đã cung cấp quá nhỏ.

KryptonitePairingCodeToDeviceId

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

Trả về mã thiết bị được mã hoá bằng mã ghép nối Kryptonite.

Thông tin chi tiết
Tham số
[in] pairingCode
Một chuỗi kết thúc ở trạng thái NULL chứa mã ghép nối Kryptonite.
[out] deviceId
Tham chiếu đến một số nguyên nhận mã thiết bị Kryptonite đã giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu độ dài của mã ghép nối đã cung cấp không chính xác hoặc nếu mã ghép nối chứa các ký tự không hợp lệ, hay nếu các ký tự ban đầu của mã ghép nối không nhất quán với ký tự kiểm tra.

NevisDeviceIdToPairingCode

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

Tạo chuỗi mã ghép nối Nevis dựa trên mã thiết bị Nevis.

Thông tin chi tiết
Tham số
[in] deviceId
Mã thiết bị Nevis.
[out] pairingCodeBuf
Con trỏ trỏ đến vùng đệm sẽ nhận mã ghép nối Nevis, ký tự kết thúc NULL. Vùng đệm được cung cấp phải có kích thước từ 7 ký tự trở lên.
[in] pairingCodeBufSize
Kích thước của vùng đệm được trỏ bởi matchingCodeBuf.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mã thiết bị được cung cấp nằm ngoài phạm vi hoặc nếu vùng đệm đã cung cấp quá nhỏ.

NevisPairingCodeToDeviceId

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

Trả về mã thiết bị được mã hoá bằng mã ghép nối Nevis.

Thông tin chi tiết
Tham số
[in] pairingCode
Một chuỗi kết thúc bằng giá trị NULL (Rỗng) chứa mã ghép nối Nevis.
[out] deviceId
Tham chiếu đến một số nguyên nhận mã thiết bị Nevis đã giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu độ dài của mã ghép nối đã cung cấp không chính xác hoặc nếu mã ghép nối chứa các ký tự không hợp lệ, hay nếu các ký tự ban đầu của mã ghép nối không nhất quán với ký tự kiểm tra.

NormalizePairingCode

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

Chuẩn hoá các ký tự trong một chuỗi mã ghép nối.

Hàm này chuyển đổi tất cả ký tự chữ cái thành chữ hoa, ánh xạ các ký tự không hợp lệ như "I", "O", "Q" và 'Z' thành '1', '0', '0' và '2' tương ứng và xoá tất cả các ký tự mã không ghép nối khác khỏi chuỗi đã cho.

Chuỗi đầu vào không bắt buộc phải có điểm cuối là NULL. Tuy nhiên, nếu đó là kết quả đầu ra cũng sẽ là kết thúc NULL.

Thông tin chi tiết
Tham số
[in,out] pairingCode
Khi nhập, chuỗi mã ghép nối cần được chuẩn hoá. Ở đầu ra, Chuỗi đã chuẩn hoá. Chuỗi không cần phải có kết thúc NULL.
[in,out] pairingCodeLen
Trên đầu vào, độ dài của chuỗi mã ghép nối, không bao gồm bất kỳ ký tự dấu kết thúc NULL nào. Ở đầu ra, độ dài của chuỗi đã chuẩn hoá.

PairingCodeCharToInt

int PairingCodeCharToInt(
  char ch
)

Chuyển đổi ký tự mã ghép nối Weave thành một giá trị số nguyên trong phạm vi 0..31.

Lưu ý rằng hàm này không phân biệt chữ hoa chữ thường.

Thông tin chi tiết
Tham số
[in] ch
Ký tự cần chuyển đổi.
Trả về
Một giá trị số nguyên tương ứng với ký tự mã ghép nối được chỉ định hoặc -1 nếu ch không phải là ký tự hợp lệ.

PairingCodeToInt

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

Giải mã mã ghép nối Weave dưới dạng giá trị số nguyên.

Hàm này phân tích cú pháp các ký tự ban đầu của chuỗi mã ghép nối Weave dưới dạng một lớn-endian, chữ số cơ sở 32 và trả về giá trị kết quả dưới dạng số nguyên không dấu. Chuỗi đầu vào có thể có độ dài bất kỳ>= 2 miễn là số nguyên được giải mã nằm vừa trong uint64_t.

Không cố gắng xác minh ký tự kiểm tra Verhoeff (xem VerifyPairingCode()).

Thông tin chi tiết
Tham số
[in] pairingCode
Chuỗi mã ghép nối cần được giải mã. Chuỗi này không cần phải có kết thúc NULL.
[in] pairingCodeLen
Độ dài của chuỗi mã ghép nối, không bao gồm bất kỳ ký tự dấu kết thúc NULL nào. Phải >= 2.
[out] val
Giá trị số nguyên được giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen là < 2 hoặc chuỗi mã ghép nối được cung cấp chứa ký tự không hợp lệ, hoặc giá trị số nguyên được mã hóa trong mã ghép nối vượt quá giá trị tối đa có thể được lưu trữ trong uint64_t.

VerifyPairingCode

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

Xác minh mã ghép nối Weave dựa trên ký tự kiểm tra của mã đó.

Thông tin chi tiết
Tham số
[in] pairingCode
Chuỗi mã ghép nối cần kiểm tra. Chuỗi này không cần phải có kết thúc NULL.
[in] pairingCodeLen
Độ dài của chuỗi mã ghép nối, không bao gồm bất kỳ ký tự dấu kết thúc NULL nào. Phải >= 2.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen là < 2 hoặc các ký tự đầu tiên của mã ghép nối không phù hợp với giá trị của ký tự kiểm tra.