Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

nl::PairingCode (Ghép nối)

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ã ghép nối ngẫu nhiên.
IntToPairingCode(uint64_t val, uint8_t pairingCodeLen, char *outBuf)
Mã hóa 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,03 đến ký tự mã ghép nối tương ứng.
IsValidPairingCodeChar(char ch)
bool
Trả về true nếu một ký tự được cung cấp là một 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 với mã thiết bị Kryptonite.
KryptonitePairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
Trả về mã thiết bị được mã hóa trong 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 với mã thiết bị Nevis.
NevisPairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
Trả về mã thiết bị được mã hóa trong mã ghép nối Nevis.
NormalizePairingCode(char *pairingCode, size_t & pairingCodeLen)
void
Chuẩn hóa 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 thành giá trị số nguyên trong phạm vi 0,03.
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 bằng ký tự kiểm tra.

Bảng liệt kê

@353

 @353

@354

 @354

@355

 @355

@356

 @356
Thuộc tính
kBitsPerCharacter

Số lượng bit được mã hóa bằng 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

Độ dài mã ghép nối đối với hầu hết sản phẩm Nest.

Hàm

Tạo mã ghép nối

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

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

Hàm tạo một chuỗi mã ghép nối Weave ngẫu nhiên với độ dài đã chỉ định. Giá trị này được mã hóa dưới dạng chữ số ba đầu cuối, số 32 và ký tự kiểm tra Verhoeff ở cuối. Chuỗi đã tạo có độ dài cố định do tham sốPairCodeLen chỉ định. Chuỗi này được đệm ở bên trái bằng 0 khi cần thiết để đáp ứng độ dài này.

Thông tin chi tiết
Các thông 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 là >= 2.
[out] outBuf
Con trỏ đến bộ đệm ký tự sẽ nhận mã ghép nối được mã hóa, cùng với ký tự thuật ngữ rỗng. Vùng đệm được cung cấp ít nhất phải lớn bằng bộ mã ghép + 1.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INVALID_ARGUMENT
NếuPairCodeLen là < 2 hoặc giá trị số nguyên đã cung cấp không thể được mã hóa bằng số lượng ký tự được chỉ định bởiPairCodeLen, trừ 1 cho ký tự kiểm tra.

Mã IntToPairingCode

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

Mã hóa giá trị số nguyên dưới dạng mã ghép nối Weave.

Hàm tạo một chuỗi mã ghép nối Weave bao gồm giá trị số nguyên không dấu đã cung cấp, được mã hóa dưới dạng số lớn, số 32 cùng với ký tự kiểm tra Verhoeff đứng sau. Chuỗi đã tạo có độ dài cố định do tham sốPairCodeLen chỉ định. Chuỗi này được đệm ở bên trái bằng 0 khi cần thiết để đáp ứng độ dài này.

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

IntToPairingCodeChar (IntToPairingCodeChar)

char IntToPairingCodeChar(
  int val
)

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

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

Thông tin chi tiết
Các thông 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 đã chỉ định hoặc 0 nếu giá trị số nguyên nằm ngoài phạm vi.

IsVideoPairingCodeChar

bool IsValidPairingCodeChar(
  char ch
)

Trả về true nếu một ký tự được cung cấp là một 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 thông số
[in] ch
Ký tự cần thử nghiệm.
Trả về
True nếu ký tự được cung cấp là ký tự mã ghép nối Weave hợp lệ.

KryptoniteDeviceIdToPairingCode (KryptoniteDeviceIdToPairingCode)

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

Tạo chuỗi mã ghép nối Kryptonite với mã thiết bị Kryptonite.

Thông tin chi tiết
Các thông số
[in] deviceId
Mã thiết bị Kryptonite.
[out] pairingCodeBuf
Con trỏ đến một bộ đệm sẽ nhận mã ghép nối Kryptonite, một ký tự chấm dứt NULL. Vùng đệm đã 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 bộ đệm trỏ đến bằngPairCodeBuf.
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 bộ đệ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ã hóa trong mã ghép nối Kryptonite.

Thông tin chi tiết
Các thông số
[in] pairingCode
Chuỗi kết thúc có tên là NULL chứa mã ghép nối Kryptonite.
[out] deviceId
Tham chiếu đến số nguyên nhận id thiết bị Kryptonite được 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ệ hoặc 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 với mã thiết bị Nevis.

Thông tin chi tiết
Các thông số
[in] deviceId
Một mã thiết bị Nevis.
[out] pairingCodeBuf
Con trỏ đến một bộ đệm sẽ nhận mã ghép nối Nevis, một ký tự chấm dứt NULL. Vùng đệm đã 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 bộ đệm trỏ đến bằngPairCodeBuf.
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 bộ đệ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ã hóa trong mã ghép nối Nevis.

Thông tin chi tiết
Các thông số
[in] pairingCode
Một chuỗi kết thúc NULL có chứa mã ghép nối Nevis.
[out] deviceId
Tham chiếu đến số nguyên nhận mã thiết bị Nevis được 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ệ hoặc 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.

Bình thường hóa ghép nối

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

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

Hàm này chuyển đổi tất cả các ký tự chữ cái thành chữ hoa, lập bản đồ các ký tự bất hợp pháp \39;I#39; & &

Chuỗi đầu vào không bắt buộc phải được chấm dứt là NULL. Tuy nhiên, nếu đó là giá trị đầu ra cũng sẽ là Chấm dứt.

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

MatchingCodeCharToInt

int PairingCodeCharToInt(
  char ch
)

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

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 thông số
[in] ch
Ký tự cần chuyển đổi.
Trả về
Giá trị số nguyên tương ứng với ký tự mã ghép nối đã chỉ định hoặc -1 nếu ch không phải là ký tự hợp lệ.

MatchingCodeToInt

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ự ban đầu của một chuỗi mã ghép nối dưới dạng số lớn, 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ể là độ dài >= 2 bất kỳ, miễn là số nguyên được giải mã nằm trong uint64_t.

Không có nỗ lực nào để xác minh ký tự kiểm tra Verhoeff (xemVerifyVerifyingCode()).

Thông tin chi tiết
Các thông 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 bị chấm dứt bằng NULL.
[in] pairingCodeLen
Độ dài của chuỗi mã ghép nối, không bao gồm bất kỳ ký tự thuật ngữ NULL nào. Phải là >= 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 thành công.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu Bộ mã ghép nối 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.

Xác minh ghép nối mã

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

Xác minh mã ghép nối Weave bằng ký tự kiểm tra.

Thông tin chi tiết
Các thông 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 bị chấm dứt bằng NULL.
[in] pairingCodeLen
Độ dài của chuỗi mã ghép nối, không bao gồm bất kỳ ký tự thuật ngữ NULL nào. Phải là >= 2.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INVALID_ARGUMENT
NếuPairCodeLen là < 2 hoặc các ký tự ban đầu của mã ghép nối không nhất quán với giá trị của ký tự kiểm tra.