nl::PairingCode

Tóm tắt

Bảng 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ột 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 của Weave.
IntToPairingCodeChar(int val)
char
Chuyển đổi một giá trị số nguyên trong khoảng 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 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 vào 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 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 khoảng 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ã đó.

Bảng liệt kê

@353

 @353

@354

 @354

@355

 @355

@356

 @356
Thuộc tính
kBitsPerCharacter

Số bit được mã hoá bằng một ký tự mã ghép nối duy nhất.

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

Độ dài mã ghép nối 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ột 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 được chỉ định, được mã hoá dưới dạng chữ số cuối lớn, cơ số 32 và ký tự kiểm tra Verhoeff ở cuối. Chuỗi đã tạo có độ dài cố định được chỉ định bởi tham sốPairCodeLen. Để đáp ứng độ dài này, chuỗi sẽ được thêm số 0 vào bên trái.

Thông tin chi tiết
Các tham số
[in] pairingCodeLen
Độ dài mong muốn của chuỗi mã ghép nối, bao gồm cả ký tự kiểm tra ở cuối. Phải >= 2.
[out] outBuf
Con 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. Bộ đệm được cung cấp ít nhất phải lớn bằng ghép nốiCodeLen + 1.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen < 2 hoặc giá trị số nguyên đã cung cấp không thể được mã hoá theo số ký tự được chỉ định bằng pairingCodeLen, thì trừ 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 của 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 chưa ký đã cung cấp, được mã hoá dưới dạng chữ số cuối lớn, cơ số 32 và ký tự kiểm tra Verhoeff theo sau. Chuỗi đã tạo có độ dài cố định được chỉ định bởi tham sốPairCodeLen. Để đáp ứng độ dài này, chuỗi sẽ được thêm số 0 vào bên trái.

Thông tin chi tiết
Các tham số
[in] val
Giá trị cần 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ự kiểm tra ở cuối. Phải >= 2.
[out] outBuf
Con 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. Bộ đệm được cung cấp ít nhất phải lớn bằng ghép nốiCodeLen + 1.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen < 2 hoặc giá trị số nguyên đã cung cấp không thể được mã hoá theo số ký tự được chỉ định bằng pairingCodeLen, thì trừ 1 cho ký tự kiểm tra.

IntToPairingCodeChar

char IntToPairingCodeChar(
  int val
)

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

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
Các tham số
[in] val
Giá trị số nguyên sẽ được 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ệ.

Xin 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
Các tham số
[in] ch
Ký tự được kiểm thử.
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 chuỗi mã ghép nối Kryptonite dựa trên mã thiết bị Kryptonite.

Thông tin chi tiết
Các tham số
[in] deviceId
Mã thiết bị Kryptonite.
[out] pairingCodeBuf
Con trỏ đến một vùng đệm sẽ nhận mã ghép nối Kryptonite, một ký tự kết thúc có giá trị 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 chỉ định bằng ghép nốiCodeBuf.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức 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 được 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
Các tham số
[in] pairingCode
Một chuỗi kết thúc bằng 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 thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu độ dài của mã ghép nối được 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ự đầu tiên của mã ghép nối không phù hợp 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 vào mã thiết bị Nevis.

Thông tin chi tiết
Các tham số
[in] deviceId
Mã thiết bị Nevis.
[out] pairingCodeBuf
Con trỏ đến một vùng đệm sẽ nhận mã ghép nối Nevis, một ký tự kết thúc có giá trị 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 chỉ định bằng ghép nốiCodeBuf.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức 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 được 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
Các tham số
[in] pairingCode
Một chuỗi kết thúc bằng giá trị NULL 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 thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu độ dài của mã ghép nối được 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ự đầu tiên của mã ghép nối không phù hợp với ký tự kiểm tra.

NormalizePairingCode

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

Chuẩn hoá các ký tự trong 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ệ 'I', 'O', 'Q' và 'Z' thành '1', '0', '0' và '2', tương ứng và xóa 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 là giá trị NULL. Tuy nhiên, nếu đó là giá trị đầu ra, thì giá trị đầu ra cũng sẽ bị chấm dứt là NULL.

Thông tin chi tiết
Các tham số
[in,out] pairingCode
Khi nhập, chuỗi mã ghép nối sẽ được chuẩn hoá. Trên đầu ra, Chuỗi đã chuẩn hoá. Không cần thiết phải kết thúc chuỗi có giá trị NULL.
[in,out] pairingCodeLen
Trên dữ liệu đầ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 khoảng 0..31.

Xin 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
Các tham số
[in] ch
Ký tự sẽ được 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 phân tích cú pháp các ký tự đầu tiên của chuỗi mã ghép nối Weave dưới dạng một số cuối lớn, cơ số 32 và trả về giá trị kết quả là một 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 đã giải mã nằm trong uint64_t.

Không có lần thử nào để xác minh ký tự kiểm tra Verhoeff (xem VerifyPairingCode()).

Thông tin chi tiết
Các 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 là giá trị 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 đã giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu pairingCodeLen < 2 hoặc chuỗi mã ghép nối được cung cấp có chứa ký tự không hợp lệ, hoặc giá trị số nguyên được mã hoá trong mã ghép nối vượt quá giá trị tối đa có thể 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
Các tham số
[in] pairingCode
Chuỗi mã ghép nối cần được kiểm tra. Chuỗi này không cần phải là giá trị 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 thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu matchingCodeLen < 2 hoặc các ký tự đầu của mã ghép nối không phù hợp với giá trị của ký tự kiểm tra.