nl::Weave

Ringkasan

Enumerasi

@21{
  kFlagConnectionClosed = 0x0002,
  kFlagAutoRequestAck = 0x0004,
  kFlagDropAck = 0x0008,
  kFlagResponseExpected = 0x0010,
  kFlagAckPending = 0x0020,
  kFlagPeerRequestedAck = 0x0040,
  kFlagMsgRcvdFromPeer = 0x0080,
  kFlagAutoReleaseKey = 0x0100,
  kFlagAutoReleaseConnection = 0x0200,
  kFlagUseEphemeralUDPPort = 0x0400
}
enum
@36 enum
@37 enum
@38{
  kFabricIdDefaultForTest = 1ULL
}
enum
@39{
  kCertType_NotSpecified = 0x00,
  kCertType_General = 0x01,
  kCertType_Device = 0x02,
  kCertType_ServiceEndpoint = 0x03,
  kCertType_FirmwareSigning = 0x04,
  kCertType_AccessToken = 0x05,
  kCertType_CA = 0x06,
  kCertType_AppDefinedBase = 0x7F,
  kCertType_Max = 0xFF
}
enum
Mengidentifikasi tujuan atau penerapan sertifikat.
@40 enum
Mengidentifikasi sumber sandi yang digunakan dalam protokol autentikasi berbasis sandi (mis.
@41{
  kWeaveAuthMode_NotSpecified = 0x0000,
  kWeaveAuthModeCategory_General = 0x0000,
  kWeaveAuthModeCategory_PASE = 0x1000,
  kWeaveAuthModeCategory_CASE = 0x2000,
  kWeaveAuthModeCategory_TAKE = 0x3000,
  kWeaveAuthModeCategory_GroupKey = 0x4000,
  kWeaveAuthModeCategory_AppDefinedBase = 0xC000,
  kWeaveAuthMode_Unauthenticated = kWeaveAuthModeCategory_General | 0x001,
  kWeaveAuthMode_PASE_PairingCode = kWeaveAuthModeCategory_PASE | kPasswordSource_PairingCode,
  kWeaveAuthMode_CASE_AnyCert = kWeaveAuthModeCategory_CASE | kCertType_NotSpecified,
  kWeaveAuthMode_CASE_GeneralCert = kWeaveAuthModeCategory_CASE | kCertType_General,
  kWeaveAuthMode_CASE_Device = kWeaveAuthModeCategory_CASE | kCertType_Device,
  kWeaveAuthMode_CASE_ServiceEndPoint = kWeaveAuthModeCategory_CASE | kCertType_ServiceEndpoint,
  kWeaveAuthMode_CASE_AccessToken = kWeaveAuthModeCategory_CASE | kCertType_AccessToken,
  kWeaveAuthMode_TAKE_IdentificationKey = kWeaveAuthModeCategory_TAKE | 0x001
}
enum
@42{
  kFabricSecretScope_All = 0x00
}
enum
@43{
  kTestKey_AES128CTRSHA1_DataKeyByte = 0xAB,
  kTestKey_AES128CTRSHA1_IntegrityKeyByte = 0xBA
}
enum
@44 enum
Gabungkan ukuran diversifier kunci aplikasi enkripsi pesan.
@45 enum
@53 enum
@54{
  kWeavePeerDescription_MaxLength = 100
}
enum
@55{
  kWeaveHeaderFlag_DestNodeId = 0x0100,
  kWeaveHeaderFlag_SourceNodeId = 0x0200,
  kWeaveHeaderFlag_TunneledData = 0x0400,
  kWeaveHeaderFlag_MsgCounterSyncReq = 0x0800
}
enum
Definisi yang berkaitan dengan header pesan Weave yang dienkode.
@56{
  kEUI64_UL_Mask = 0x0200000000000000ULL,
  kEUI64_UL_Unversal = 0,
  kEUI64_UL_Local = kEUI64_UL_Mask,
  kEUI64_IG_Mask = 0x0100000000000000ULL,
  kEUI64_IG_Individual = 0,
  kEUI64_IG_Group = kEUI64_IG_Mask
}
enum
Definisi kolom bit untuk ID IEEE EUI-64.
@57{
  kMaxAlwaysLocalWeaveNodeId = 0x000000000000FFFFULL
}
enum
Rentang khusus ID Node Weave.
WeaveEncryptionType{
  kWeaveEncryptionType_None = 0,
  kWeaveEncryptionType_AES128CTRSHA1 = 1
}
enum
Jenis enkripsi untuk pesan Weave.
WeaveExchangeFlags{
  kWeaveExchangeFlag_Initiator = 0x1,
  kWeaveExchangeFlag_AckId = 0x2,
  kWeaveExchangeFlag_NeedsAck = 0x4
}
enum
Bit flag header Weave Exchange.
WeaveExchangeVersion enum
Versi header Weave Exchange.
WeaveMessageFlags{
  kWeaveMessageFlag_ReuseMessageId = 0x00000010,
  kWeaveMessageFlag_ReuseSourceId = 0x00000020,
  kWeaveMessageFlag_DelaySend = 0x00000040,
  kWeaveMessageFlag_RetainBuffer = 0x00000080,
  kWeaveMessageFlag_MessageEncoded = 0x00001000,
  kWeaveMessageFlag_DefaultMulticastSourceAddress = 0x00002000,
  kWeaveMessageFlag_PeerRequestedAck = 0x00004000,
  kWeaveMessageFlag_DuplicateMessage = 0x00008000,
  kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized = 0x00010000,
  kWeaveMessageFlag_FromInitiator = 0x00020000,
  kWeaveMessageFlag_ViaEphemeralUDPPort = 0x00040000,
  kWeaveMessageFlag_MulticastFromLinkLocal = kWeaveMessageFlag_DefaultMulticastSourceAddress,
  kWeaveMessageFlag_DestNodeId = kWeaveHeaderFlag_DestNodeId,
  kWeaveMessageFlag_SourceNodeId = kWeaveHeaderFlag_SourceNodeId,
  kWeaveMessageFlag_TunneledData = kWeaveHeaderFlag_TunneledData,
  kWeaveMessageFlag_MsgCounterSyncReq = kWeaveHeaderFlag_MsgCounterSyncReq
}
enum
Tanda yang terkait dengan pesan Weave masuk atau keluar.
WeaveMessageVersion{
  kWeaveMessageVersion_Unspecified = 0,
  kWeaveMessageVersion_V1 = 1,
  kWeaveMessageVersion_V2 = 2
}
enum
Versi format Pesan Weave.
WeaveSubnetId{
  kWeaveSubnetId_NotSpecified = 0,
  kWeaveSubnetId_PrimaryWiFi = 1,
  kWeaveSubnetId_ThreadAlarm = 2,
  kWeaveSubnetId_WiFiAP = 3,
  kWeaveSubnetId_MobileDevice = 4,
  kWeaveSubnetId_Service = 5,
  kWeaveSubnetId_ThreadMesh = 6
}
enum
Weave memiliki beberapa nomor subnet yang dicadangkan untuk antarmuka jaringan terkemuka pada perangkat biasa.
WeaveVendorId enum

Typedef

FabricSecretRotationScheme typedef
uint8_t
FabricSecretScope nl::Weave::FabricSecretScope
uint8_t
Mengidentifikasi kategori perangkat yang dapat memiliki dan menggunakan fabric secret.
WeaveAuthMode typedef
uint16_t
Mengidentifikasi cara node peer diautentikasi.
WeaveEncryptionKey typedef
WeaveEncryptionType typedef
enum nl::Weave::WeaveEncryptionType
Jenis enkripsi untuk pesan Weave.
WeaveExchangeFlags typedef
enum nl::Weave::WeaveExchangeFlags
Bit flag header Weave Exchange.
WeaveExchangeVersion typedef
enum nl::Weave::WeaveExchangeVersion
Versi header Weave Exchange.
WeaveMessageFlags typedef
enum nl::Weave::WeaveMessageFlags
Tanda yang terkait dengan pesan Weave masuk atau keluar.
WeaveMessageHeader typedef
WeaveMessageVersion typedef
enum nl::Weave::WeaveMessageVersion
Versi format Pesan Weave.
WeaveSubnetId typedef
enum nl::Weave::WeaveSubnetId
Weave memiliki beberapa nomor subnet yang dicadangkan untuk antarmuka jaringan terkemuka pada perangkat biasa.

Variabel

ExchangeMgr
NL_DLL_EXPORT WeaveExchangeManager
FabricState
NL_DLL_EXPORT WeaveFabricState
MessageLayer
NL_DLL_EXPORT WeaveMessageLayer
SecurityMgr
NL_DLL_EXPORT WeaveSecurityManager
WeaveConnection
class NL_DLL_EXPORT
WeaveExchangeManager
class NL_DLL_EXPORT
WeaveMessageLayer
class NL_DLL_EXPORT
gDefaultWRMPConfig = { WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS }
const WRMPConfig
kWeaveMsgEncAppKeyDiversifier = { 0xB1, 0x1D, 0xAE, 0x5B }[]
const uint8_t
Diversifier kunci yang digunakan untuk turunan kunci enkripsi pesan Weave.

Fungsi

AppGroupMasterKeyIdFromAuthMode(WeaveAuthMode authMode)
uint8_t
Menampilkan ID kunci master grup aplikasi yang terkait dengan mode autentikasi.
CASEAuthMode(uint8_t certType)
WeaveAuthMode
Menampilkan mode autentikasi CASE yang sesuai untuk jenis sertifikat tertentu.
CertTypeFromAuthMode(WeaveAuthMode authMode)
uint8_t
Menampilkan sumber sandi untuk mode autentikasi yang ditentukan.
DecodeHeaderField(const uint16_t headerField, WeaveMessageInfo *msgInfo)
void
DefaultOnMessageReceived(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
EncodeHeaderField(const WeaveMessageInfo *msgInfo)
uint16_t
FindMessageName(uint32_t inProfileId, uint8_t inMsgType)
const char *
FindProfileName(uint32_t inProfileId)
const char *
FormatWeaveError(char *buf, uint16_t bufSize, int32_t err)
bool
Mengingat error Weave, menampilkan string C yang diakhiri dengan NULL yang dapat dibaca manusia dan menjelaskan error tersebut.
GenerateWeaveNodeId(uint64_t & nodeId)
NL_DLL_EXPORT WEAVE_ERROR
Buat ID node Weave acak.
GetFibonacciForIndex(uint32_t index)
uint32_t
Fungsi ini menghasilkan angka Fibonacci 32-bit untuk indeks 32 bit yang ditentukan.
GetMessageName(uint32_t profileId, uint8_t msgType)
const char *
GetProfileName(uint32_t profileId)
const char *
GetRandU16(void)
uint16_t
Fungsi ini menghasilkan angka acak 16-bit tanpa label.
GetRandU32(void)
uint32_t
Fungsi ini menghasilkan angka acak 32-bit tanpa label.
GetRandU64(void)
uint64_t
Fungsi ini menghasilkan angka acak 64-bit tanpa label.
GetRandU8(void)
uint8_t
Fungsi ini menghasilkan angka acak 8-bit tanpa label.
GetVendorName(uint16_t vendorId)
const char *
GroupKeyAuthMode(uint32_t keyId)
WeaveAuthMode
Menampilkan mode autentikasi kunci grup yang sesuai untuk ID kunci tertentu.
IPv6InterfaceIdToWeaveNodeId(uint64_t interfaceId)
uint64_t
Konversikan ID antarmuka alamat IPv6 menjadi ID node Weave.
IsCASEAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada protokol Weave CASE.
IsCertAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada kepemilikan kunci pribadi yang terkait dengan sertifikat.
IsGroupKeyAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada kepemilikan kunci grup bersama.
IsPASEAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada protokol Weave PASE.
IsPasswordAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada kepemilikan sandi bersama.
IsTAKEAuthMode(WeaveAuthMode authMode)
bool
True jika mode autentikasi didasarkan pada protokol Weave TAKE.
IsWRMPControlMessage(uint32_t profileId, uint8_t msgType)
bool
J2N_ByteArray(JNIEnv *env, jbyteArray inArray, uint8_t *& outArray, uint32_t & outArrayLen)
J2N_ByteArrayFieldVal(JNIEnv *env, jobject obj, const char *fieldName, uint8_t *& outArray, uint32_t & outArrayLen)
J2N_ByteArrayInPlace(JNIEnv *env, jbyteArray inArray, uint8_t *outArray, uint32_t maxArrayLen)
J2N_EnumFieldVal(JNIEnv *env, jobject obj, const char *fieldName, const char *fieldType, int & outVal)
J2N_EnumVal(JNIEnv *env, jobject enumObj, int & outVal)
J2N_IntFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jint & outVal)
J2N_LongFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jlong & outVal)
J2N_ShortFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jshort & outVal)
J2N_StringFieldVal(JNIEnv *env, jobject obj, const char *fieldName, char *& outVal)
MakeClassName(const char *basePackageName, const char *relativeClassName, char *& classNameBuf)
PASEAuthMode(uint8_t pwSource)
WeaveAuthMode
Menampilkan mode autentikasi PASE yang sesuai untuk sumber sandi tertentu.
PasswordSourceFromAuthMode(WeaveAuthMode authMode)
uint8_t
Menampilkan sumber sandi untuk mode autentikasi yang ditentukan.
PrintTunnelInfo(const WeaveConnectionTunnel & tun, const TCPEndPoint & fromEndPoint, const TCPEndPoint & toEndPoint, const PacketBuffer & data)
void
ToHex(const uint8_t data)
char
ToHexString(const uint8_t *data, size_t dataLen, char *& outBuf, size_t & outBufSize)
void
WeaveEncryptionKeyToString(uint8_t encType, const WeaveEncryptionKey & key, char *buf, size_t bufSize)
void
WeaveFabricIdToIPv6GlobalId(uint64_t fabricId)
uint64_t
Konversikan ID kain Weave ke ID global ULA IPv6.
WeaveMessageSourceToStr(char *buf, uint32_t bufSize, const WeaveMessageInfo *msgInfo)
void
TIDAK DIGUNAKAN LAGI Gunakan WeaveMessageLayer::GetPeerDescription() sebagai gantinya.
WeaveNodeAddrToStr(char *buf, uint32_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, WeaveConnection *con)
void
TIDAK DIGUNAKAN LAGI Gunakan WeaveMessageLayer::GetPeerDescription() sebagai gantinya.
WeaveNodeIdToIPv6InterfaceId(uint64_t nodeId)
uint64_t
Konversikan ID node Weave menjadi ID antarmuka alamat IPv6.
max(const _T & a, const _T & b)
const _T &
min(const _T & a, const _T & b)
const _T &

Class

nl::Weave::Binding

Menangkap target yang dimaksud dari komunikasi Weave dan informasi konfigurasi terkait.

nl::Weave::Counter

Antarmuka untuk mengelola penghitung sebagai nilai bilangan bulat.

nl::Weave::ExchangeContext

Class ini merepresentasikan percakapan yang sedang berlangsung (ExchangeContext) antara dua node atau lebih.

nl::Weave::FabricStateDelegate

Class delegasi abstrak ini mengomunikasikan perubahan status fabric.

nl::Weave::HostPortList

Untuk mengelola dan memanipulasi Daftar Port Host, kumpulan file host dan ID port yang ringkas dan berenkode biner yang terkait dengan Direktori Layanan Weave.

nl::Weave::JNIUtils
nl::Weave::MonotonicallyIncreasingCounter

Class untuk mengelola penghitung yang meningkat secara monoton sebagai nilai bilangan bulat.

nl::Weave::PersistedCounter

Class untuk mengelola penghitung sebagai nilai bilangan bulat yang dimaksudkan untuk dipertahankan setiap kali mulai ulang.

nl::Weave::WeaveConnection

Definisi class Weave Connection.

nl::Weave::WeaveConnectionTunnel

Definisi class WeaveConnectionTunnel, yang mengelola sepasang TCPEndPoints yang WeaveConnections aslinya telah digabungkan, dan di antaranya WeaveMessageLayer meneruskan semua penutupan data dan koneksi.

nl::Weave::WeaveEncryptionKey_AES128CTRSHA1
nl::Weave::WeaveExchangeHeader

Ini menentukan profil Weave dan jenis pesan dari pesan Weave tertentu dalam ExchangeContext.

nl::Weave::WeaveExchangeManager

Class ini digunakan untuk mengelola ExchangeContexts dengan node Weave lainnya.

nl::Weave::WeaveFabricState

Teruskan deklarasi WeaveFabricState.

nl::Weave::WeaveKeyId

Definisi ID Kunci Weave.

nl::Weave::WeaveMessageLayer

Definisi class WeaveMessageLayer, yang mengelola komunikasi dengan node Weave lainnya.

nl::Weave::WeaveMsgEncryptionKey

Berisi informasi tentang kunci enkripsi pesan Weave.

nl::Weave::WeaveMsgEncryptionKeyCache

Cache kunci untuk kunci enkripsi pesan Weave.

nl::Weave::WeaveSecurityManager
nl::Weave::WeaveServerBase

Objek dasar umum untuk menerapkan responden (server) yang tidak diminta profil Weave, yang mengenkapsulasi untuk memvalidasi permintaan terautentikasi dan mengirim laporan status, serta menyediakan penyimpanan anggota data umum untuk status fabric dan pengelola bursa.

nl::Weave::WeaveServerDelegateBase

Class dasar umum untuk mengimplementasikan objek delegasi server Weave.

nl::Weave::WeaveSessionKey

Berisi informasi tentang kunci sesi Weave.

nl::Weave::WeaveSessionState

Menyampaikan status komunikasi yang diperlukan untuk mengirim/menerima pesan dengan node lain.

Struct

nl::Weave::JNILibraryMethod
nl::Weave::WRMPConfig

Konfigurasi WRMP.

nl::Weave::WeaveMessageInfo

Informasi tentang pesan Weave yang sedang dalam proses dikirim atau diterima.

Serikat

nl::Weave::WeaveEncryptionKey

Namespace

nl::Weave::ASN1

Namespace ini mencakup semua antarmuka di dalam Weave yang dapat digunakan dengan Abstrak Syntax Notation One (ASN.1).

nl::Weave::Crypto

Namespace ini mencakup semua antarmuka di dalam Weave untuk dukungan kriptografi bersama.

nl::Weave::DeviceLayer
nl::Weave::DeviceManager
nl::Weave::Encoding

Namespace ini menyediakan fungsi untuk:

nl::Weave::Logging

Namespace ini mencakup semua antarmuka di dalam Weave untuk dukungan logging bersama.

nl::Weave::Platform
nl::Weave::Profiles

Namespace ini mencakup semua antarmuka dalam profil Weave untuk Weave, baik Umum maupun khusus vendor Nest Labs.

nl::Weave::SecuritySupport
nl::Weave::Stats
nl::Weave::Support
nl::Weave::System
nl::Weave::TLV

Definisi untuk bekerja dengan data yang dienkode dalam format TLV Weave.

nl::Weave::Warm

Namespace ini mencakup antarmuka untuk Modul Perutean dan Alamat Weave, yakni Modul portabel untuk mengonfigurasi alamat IP dan Rute Weave.

Enumerasi

@21

 @21
Properti
kFlagAckPending

Apakah respons diharapkan untuk pesan yang sedang dikirim.

kFlagAutoReleaseConnection

Melepaskan kunci enkripsi pesan secara otomatis saat konteks pertukaran dibebaskan.

kFlagAutoReleaseKey

Jika ditetapkan, artinya setidaknya satu pesan telah diterima dari pembanding dalam konteks pertukaran ini.

kFlagAutoRequestAck

Konteks ini dikaitkan dengan WeaveConnection.

kFlagConnectionClosed

Konteks ini adalah inisiator dari pertukaran tersebut.

kFlagDropAck

Jika disetel, minta konfirmasi secara otomatis setiap kali pesan dikirim melalui UDP.

kFlagMsgRcvdFromPeer

Jika ditetapkan, artinya setidaknya satu pesan yang diterima pada bursa ini meminta konfirmasi.

Flag ini dibaca oleh aplikasi untuk memutuskan apakah perlu meminta konfirmasi untuk pesan respons yang akan dikirim. Flag ini juga dapat menunjukkan apakah pembanding menggunakan WRMP.

kFlagPeerRequestedAck

Jika ditetapkan, menandakan bahwa ada konfirmasi yang tertunda untuk dikirim kembali.

kFlagResponseExpected

Khusus internal dan debug: jika ditetapkan, lapisan pertukaran tidak akan mengirimkan konfirmasi.

kFlagUseEphemeralUDPPort

Lepaskan WeaveConnection terkait secara otomatis saat konteks pertukaran dibebaskan.

@36

 @36

@37

 @37

@38

 @38
Properti
kFabricIdDefaultForTest

ID fabric default, yang hanya boleh digunakan untuk tujuan pengujian.

@39

 @39

Mengidentifikasi tujuan atau penerapan sertifikat.

Jenis sertifikat adalah label yang menjelaskan tujuan atau penerapan sertifikat. Jenis sertifikat tidak diterapkan sebagai atribut sertifikat yang sesuai, tetapi berasal dari struktur sertifikat dan/atau konteks penggunaannya. Enumerasi jenis sertifikat mencakup serangkaian nilai yang telah ditentukan yang menjelaskan aplikasi sertifikat yang umum digunakan. Developer juga dapat memperluas rentang nilai jenis sertifikat dengan jenis spesifik per aplikasi yang menjelaskan sertifikat kustom atau sertifikat dengan properti keamanan unik.

Jenis sertifikat terutama digunakan dalam penerapan kebijakan kontrol akses, dengan akses ke fitur aplikasi dipengaruhi oleh jenis sertifikat yang diberikan oleh pemohon.

Properti
kCertType_AccessToken

Sertifikat token akses Weave.

kCertType_AppDefinedBase

Jenis sertifikat khusus aplikasi harus memiliki nilai >= nilai ini.

kCertType_CA

Sertifikat CA.

kCertType_Device

Sertifikat perangkat Weave.

kCertType_FirmwareSigning

Sertifikat penandatanganan firmware Weave.

kCertType_General

Sertifikat memiliki jenis umum atau tidak spesifik.

kCertType_Max

Jenis sertifikat tidak boleh lebih besar dari nilai ini.

kCertType_NotSpecified

Jenis sertifikat belum ditentukan.

kCertType_ServiceEndpoint

Sertifikat endpoint layanan Weave.

@40

 @40

Mengidentifikasi sumber sandi yang digunakan dalam protokol autentikasi berbasis sandi (mis.

Menenun PASE)

@41

 @41
Properti
kWeaveAuthModeCategory_AppDefinedBase

Nilai dasar untuk kategori autentikasi yang ditentukan aplikasi.

kWeaveAuthModeCategory_CASE

Peer diautentikasi menggunakan protokol Weave CASE.

kWeaveAuthModeCategory_General

Peer diautentikasi menggunakan salah satu dari serangkaian mekanisme umum.

kWeaveAuthModeCategory_GroupKey

Peer diautentikasi menggunakan kunci grup bersama.

kWeaveAuthModeCategory_PASE

Peer diautentikasi menggunakan protokol Weave PASE.

kWeaveAuthModeCategory_TAKE

Peer diautentikasi menggunakan protokol Weave TAKE.

kWeaveAuthMode_CASE_AccessToken

Peer diautentikasi menggunakan CASE dengan sertifikat token akses Weave.

kWeaveAuthMode_CASE_AnyCert

Peer diautentikasi menggunakan CASE dengan sertifikat arbitrer, atau sertifikat yang jenisnya tidak diketahui.

kWeaveAuthMode_CASE_Device

Peer diautentikasi menggunakan CASE dengan sertifikat perangkat Weave.

kWeaveAuthMode_CASE_GeneralCert

Peer diautentikasi menggunakan CASE dengan jenis sertifikat umum atau non-spesifik.

kWeaveAuthMode_CASE_ServiceEndPoint

Peer diautentikasi menggunakan CASE dengan sertifikat endpoint layanan Weave.

kWeaveAuthMode_NotSpecified

Mode autentikasi tidak ditentukan.

kWeaveAuthMode_PASE_PairingCode

Lakukan peering diautentikasi menggunakan PASE dengan kode penyambungan perangkat.

kWeaveAuthMode_TAKE_IdentificationKey

Peer diautentikasi menggunakan TAKE dengan kunci identifikasi token.

kWeaveAuthMode_Unauthenticated

Peer tidak diautentikasi.

@42

 @42
Properti
kFabricSecretScope_All

Semua perangkat dapat memiliki rahasia fabric yang sesuai.

@43

 @43
Properti
kTestKey_AES128CTRSHA1_DataKeyByte

Nilai byte yang membuat kunci enkripsi, yang hanya digunakan untuk pengujian.

kTestKey_AES128CTRSHA1_IntegrityKeyByte

Nilai byte yang membuat kunci integritas, yang hanya digunakan untuk pengujian.

@44

 @44

Gabungkan ukuran diversifier kunci aplikasi enkripsi pesan.

@45

 @45

@53

 @53

@54

 @54
Properti
kWeavePeerDescription_MaxLength

Panjang string maksimum (termasuk karakter NUL) yang ditampilkan oleh WeaveMessageLayer::GetPeerDescription().

@55

 @55

Definisi yang berkaitan dengan header pesan Weave yang dienkode.

Properti
kWeaveHeaderFlag_DestNodeId

Menunjukkan bahwa ID node tujuan ada di header pesan Weave.

kWeaveHeaderFlag_MsgCounterSyncReq

Menunjukkan bahwa pengirim meminta sinkronisasi penghitung pesan.

kWeaveHeaderFlag_SourceNodeId

Menunjukkan bahwa ID node sumber ada di header pesan Weave.

kWeaveHeaderFlag_TunneledData

Menunjukkan bahwa payload pesan Weave adalah paket IP yang disalurkan.

@56

 @56

Definisi kolom bit untuk ID IEEE EUI-64.

Properti
kEUI64_IG_Group

Nilai bit Individu/Grup yang menunjukkan ID EUI-64 alamat grup.

kEUI64_IG_Individual

Nilai bit Individu/Grup yang menunjukkan ID EUI-64 alamat individual.

kEUI64_IG_Mask

Bitmask untuk bit Individu/Grup (I/G) dalam ID EUI-64.

Nilai 0 menunjukkan ID adalah alamat perorangan. Nilai 1 menunjukkan ID adalah alamat grup.

kEUI64_UL_Local

Nilai bit Universal/Lokal yang menunjukkan ID EUI-64 yang dikelola secara lokal.

kEUI64_UL_Mask

Bitmask untuk bit Universal/Local (U/L) dalam ID EUI-64.

Nilai 0 menunjukkan ID dikelola secara Universal (secara global). Nilai 1 menunjukkan ID Dikelola secara lokal.

kEUI64_UL_Unversal

Nilai bit Universal/Lokal yang menunjukkan ID EUI-64 yang dikelola secara universal.

@57

 @57

Rentang khusus ID Node Weave.

Properti
kMaxAlwaysLocalWeaveNodeId

ID node tenunan yang kurang atau sama dengan nilai ini dianggap lokal untuk kemudahan pengujian.

WeaveEncryptionType

 WeaveEncryptionType

Jenis enkripsi untuk pesan Weave.

Properti
kWeaveEncryptionType_AES128CTRSHA1

Pesan dienkripsi menggunakan enkripsi AES-128-CTR dengan integritas pesan HMAC-SHA-1.

kWeaveEncryptionType_None

Pesan tidak dienkripsi.

WeaveExchangeFlags

 WeaveExchangeFlags

Bit flag header Weave Exchange.

Properti
kWeaveExchangeFlag_AckId

Menyetel kapan pesan saat ini merupakan konfirmasi untuk pesan yang telah diterima sebelumnya.

kWeaveExchangeFlag_Initiator

Menetapkan kapan pesan saat ini dikirim oleh inisiator pertukaran.

kWeaveExchangeFlag_NeedsAck

Ditetapkan kapan pesan saat ini meminta konfirmasi dari penerima.

WeaveExchangeVersion

 WeaveExchangeVersion

Versi header Weave Exchange.

WeaveMessageFlags

 WeaveMessageFlags

Tanda yang terkait dengan pesan Weave masuk atau keluar.

Nilai yang ditentukan di sini digunakan dalam kolom WeaveMessageInfo.Flags.

Properti
kWeaveMessageFlag_DefaultMulticastSourceAddress

Menunjukkan bahwa pemilihan alamat sumber IPv6 default harus digunakan saat mengirim pesan multicast IPv6.

kWeaveMessageFlag_DelaySend

Menunjukkan bahwa pengiriman pesan perlu ditunda.

kWeaveMessageFlag_DestNodeId

Menunjukkan bahwa ID node tujuan ada di header pesan Weave.

kWeaveMessageFlag_DuplicateMessage

Menunjukkan bahwa pesan ini adalah duplikat dari pesan yang diterima sebelumnya.

kWeaveMessageFlag_FromInitiator

Menunjukkan bahwa sumber pesan adalah inisiator pertukaran Weave.

kWeaveMessageFlag_MessageEncoded

Menunjukkan bahwa pesan Weave sudah dienkode.

kWeaveMessageFlag_MsgCounterSyncReq

Menunjukkan bahwa pengirim meminta sinkronisasi penghitung pesan peer.

kWeaveMessageFlag_MulticastFromLinkLocal

Alias yang tidak digunakan lagi untuk kWeaveMessageFlag_DefaultMulticastSourceAddress.

kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized

Menunjukkan bahwa penghitung pesan kunci grup peer tidak disinkronkan.

kWeaveMessageFlag_PeerRequestedAck

Menunjukkan bahwa pengirim pesan meminta konfirmasi.

kWeaveMessageFlag_RetainBuffer

Menunjukkan bahwa buffer pesan tidak boleh dikosongkan setelah pengiriman.

kWeaveMessageFlag_ReuseMessageId

Menunjukkan bahwa ID pesan yang ada harus digunakan kembali.

kWeaveMessageFlag_ReuseSourceId

Menunjukkan bahwa ID node sumber yang ada harus digunakan kembali.

kWeaveMessageFlag_SourceNodeId

Menunjukkan bahwa ID node sumber ada di header pesan Weave.

kWeaveMessageFlag_TunneledData

Menunjukkan bahwa payload pesan Weave adalah paket IP yang disalurkan.

kWeaveMessageFlag_ViaEphemeralUDPPort

Menunjukkan bahwa pesan sedang dikirim/diterima melalui port UDP efemeral lokal.

WeaveMessageVersion

 WeaveMessageVersion

Versi format Pesan Weave.

Weave akan memilih versi pesan yang sesuai berdasarkan format {i>frame<i} yang diperlukan untuk pesan Weave. Secara default, versi pesan adalah kWeaveMessageVersion_V1. Misalnya, saat menggunakan Weave Reliable Messaging, versinya adalah kWeaveMessageVersion_V2.

Properti
kWeaveMessageVersion_Unspecified

Versi pesan belum ditentukan.

kWeaveMessageVersion_V1

Format header pesan versi V1.

kWeaveMessageVersion_V2

Format header pesan versi V2.

WeaveSubnetId

 WeaveSubnetId

Weave memiliki beberapa nomor subnet yang dicadangkan untuk antarmuka jaringan terkemuka pada perangkat biasa.

Angka-angka ini ditetapkan di sini untuk konstanta simbolik. Nomor subnet ini digunakan oleh Weave untuk mengonfigurasi alamat ULA IPv6 pada antarmuka yang sesuai.

Properti
kWeaveSubnetId_MobileDevice

ID subnet untuk semua Perangkat seluler.

kWeaveSubnetId_NotSpecified

Dicadangkan sebagai nilai yang tidak ditentukan atau null.

kWeaveSubnetId_PrimaryWiFi

Nomor subnet antarmuka radio WiFi.

kWeaveSubnetId_Service

ID subnet untuk endpoint Layanan Nest.

kWeaveSubnetId_ThreadAlarm

Nomor subnet antarmuka radio alarm Thread.

kWeaveSubnetId_ThreadMesh

ID subnet antarmuka radio mesh Thread.

kWeaveSubnetId_WiFiAP

Nomor subnet antarmuka Local Wi-Fi AP.

WeaveVendorId

 WeaveVendorId

Typedef

FabricSecretRotationScheme

uint8_t FabricSecretRotationScheme

FabricSecretScope

uint8_t FabricSecretScope

Mengidentifikasi kategori perangkat yang dapat memiliki dan menggunakan fabric secret.

WeaveAuthMode

uint16_t WeaveAuthMode

Mengidentifikasi cara node peer diautentikasi.

WeaveAuthMode menjelaskan cara node peer telah, atau seharusnya, diotentikasi selama pertukaran pesan Weave. Dalam konteks awal, aplikasi menggunakan WeaveAuthMode untuk mengekspresikan mode autentikasi peer yang diinginkan untuk pertukaran, sehingga menginstruksikan lapisan keamanan dan pesan Weave agar mencapai mode yang diinginkan atau menggagalkan komunikasi. Dalam konteks respons, WeaveAuthMode mengidentifikasi cara node yang meminta (peer) diautentikasi, sehingga aplikasi yang merespons dapat menerapkan kontrol akses berdasarkan informasi ini.

WeaveAuthMode yang ditetapkan ke pesan Weave yang masuk berkaitan dengan sifat kunci yang digunakan untuk mengenkripsi pesan tersebut. WeaveAuthMode berasal dari mekanisme yang digunakan untuk membuat kunci dan kriteria yang digunakan untuk memverifikasi identitas pihak yang berkomunikasi pada saat kunci dibuat.

WeaveAuthMode mencakup serangkaian nilai yang telah ditentukan yang menjelaskan mode autentikasi umum. Hal ini diperinci menurut mekanisme perjanjian utama (CASE, PASE, GroupKey, dll.). Developer dapat memperluas WeaveAuthMode dengan menentukan mode spesifik per aplikasi, yang dapat dipasang ke kunci enkripsi tertentu.

WeaveEncryptionKey

union nl::Weave::WeaveEncryptionKey WeaveEncryptionKey

WeaveEncryptionType

enum nl::Weave::WeaveEncryptionType WeaveEncryptionType

Jenis enkripsi untuk pesan Weave.

WeaveExchangeFlags

enum nl::Weave::WeaveExchangeFlags WeaveExchangeFlags

Bit flag header Weave Exchange.

WeaveExchangeVersion

enum nl::Weave::WeaveExchangeVersion WeaveExchangeVersion

Versi header Weave Exchange.

WeaveMessageFlags

enum nl::Weave::WeaveMessageFlags WeaveMessageFlags

Tanda yang terkait dengan pesan Weave masuk atau keluar.

Nilai yang ditentukan di sini digunakan dalam kolom WeaveMessageInfo.Flags.

WeaveMessageHeader

struct WeaveMessageInfo WeaveMessageHeader

WeaveMessageVersion

enum nl::Weave::WeaveMessageVersion WeaveMessageVersion

Versi format Pesan Weave.

Weave akan memilih versi pesan yang sesuai berdasarkan format {i>frame<i} yang diperlukan untuk pesan Weave. Secara default, versi pesan adalah kWeaveMessageVersion_V1. Misalnya, saat menggunakan Weave Reliable Messaging, versinya adalah kWeaveMessageVersion_V2.

WeaveSubnetId

enum nl::Weave::WeaveSubnetId WeaveSubnetId

Weave memiliki beberapa nomor subnet yang dicadangkan untuk antarmuka jaringan terkemuka pada perangkat biasa.

Angka-angka ini ditetapkan di sini untuk konstanta simbolik. Nomor subnet ini digunakan oleh Weave untuk mengonfigurasi alamat ULA IPv6 pada antarmuka yang sesuai.

Variabel

ExchangeMgr

NL_DLL_EXPORT WeaveExchangeManager ExchangeMgr

FabricState

NL_DLL_EXPORT WeaveFabricState FabricState

MessageLayer

NL_DLL_EXPORT WeaveMessageLayer MessageLayer

SecurityMgr

NL_DLL_EXPORT WeaveSecurityManager SecurityMgr

WeaveConnection

class NL_DLL_EXPORT WeaveConnection

WeaveExchangeManager

class NL_DLL_EXPORT WeaveExchangeManager

WeaveMessageLayer

class NL_DLL_EXPORT WeaveMessageLayer

gDefaultWRMPConfig

const WRMPConfig gDefaultWRMPConfig = { WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS }

kWeaveMsgEncAppKeyDiversifier

const uint8_t kWeaveMsgEncAppKeyDiversifier[] = { 0xB1, 0x1D, 0xAE, 0x5B }

Diversifier kunci yang digunakan untuk turunan kunci enkripsi pesan Weave.

Nilai ini mewakili 4 byte pertama SHA-1 HASH "Nest Weave Message EK and AK" frasa.

Fungsi

AppGroupMasterKeyIdFromAuthMode

uint8_t AppGroupMasterKeyIdFromAuthMode(
  WeaveAuthMode authMode
)

Menampilkan ID kunci master grup aplikasi yang terkait dengan mode autentikasi.

CASEAuthMode

WeaveAuthMode CASEAuthMode(
  uint8_t certType
)

Menampilkan mode autentikasi CASE yang sesuai untuk jenis sertifikat tertentu.

CertTypeFromAuthMode

uint8_t CertTypeFromAuthMode(
  WeaveAuthMode authMode
)

Menampilkan sumber sandi untuk mode autentikasi yang ditentukan.

DecodeHeaderField

void DecodeHeaderField(
  const uint16_t headerField,
  WeaveMessageInfo *msgInfo
)

DefaultOnMessageReceived

void DefaultOnMessageReceived(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

EncodeHeaderField

uint16_t EncodeHeaderField(
  const WeaveMessageInfo *msgInfo
)

FindMessageName

const char * FindMessageName(
  uint32_t inProfileId,
  uint8_t inMsgType
)

FindProfileName

const char * FindProfileName(
  uint32_t inProfileId
)

FormatWeaveError

bool FormatWeaveError(
  char *buf,
  uint16_t bufSize,
  int32_t err
)

Mengingat error Weave, menampilkan string C yang diakhiri dengan NULL yang dapat dibaca manusia dan menjelaskan error tersebut.

Detail
Parameter
[in] buf
Buffer tempat string error akan ditempatkan.
[in] bufSize
Ukuran buffer yang disediakan dalam byte.
[in] err
Error yang akan dijelaskan.
Hasil
true Jika string deskripsi ditulis ke dalam buffer yang disediakan.
Hasil
false Jika kesalahan yang diberikan bukan kesalahan Weave.

GenerateWeaveNodeId

NL_DLL_EXPORT WEAVE_ERROR GenerateWeaveNodeId(
  uint64_t & nodeId
)

Buat ID node Weave acak.

Fungsi ini menghasilkan ID node Weave 64-bit yang unik secara lokal. Fungsi ini menggunakan sumber data acak yang kuat secara kriptografis untuk menjamin keunikan nilai yang dihasilkan. Perhatikan bahwa bit 57 dari ID node Weave yang dihasilkan disetel ke 1 untuk menunjukkan ID node Weave yang dihasilkan bersifat unik secara lokal (tidak secara global).

Detail
Parameter
nodeId
Referensi ke ID node Weave 64-bit.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika ID node Weave berhasil dibuat.

GetFibonacciForIndex

uint32_t GetFibonacciForIndex(
  uint32_t index
)

Fungsi ini menghasilkan angka Fibonacci 32-bit untuk indeks 32 bit yang ditentukan.

Detail
Hasil
Nomor fibonacci 32-bit yang tidak ditandatangani.

GetMessageName

const char * GetMessageName(
  uint32_t profileId,
  uint8_t msgType
)

GetProfileName

const char * GetProfileName(
  uint32_t profileId
)

GetRandU16

uint16_t GetRandU16(
  void
)

Fungsi ini menghasilkan angka acak 16-bit tanpa label.

Detail
Hasil
Bilangan bulat acak 16-bit tanpa tanda tangan.

GetRandU32

uint32_t GetRandU32(
  void
)

Fungsi ini menghasilkan angka acak 32-bit tanpa label.

Detail
Hasil
Bilangan bulat acak 32-bit tanpa tanda tangan.

GetRandU64

uint64_t GetRandU64(
  void
)

Fungsi ini menghasilkan angka acak 64-bit tanpa label.

Detail
Hasil
Bilangan bulat acak 64-bit tanpa tanda tangan.

GetRandU8

uint8_t GetRandU8(
  void
)

Fungsi ini menghasilkan angka acak 8-bit tanpa label.

Detail
Hasil
Bilangan bulat acak 8-bit tanpa label.

GetVendorName

const char * GetVendorName(
  uint16_t vendorId
)

GroupKeyAuthMode

WeaveAuthMode GroupKeyAuthMode(
  uint32_t keyId
)

Menampilkan mode autentikasi kunci grup yang sesuai untuk ID kunci tertentu.

IdIPv6InterfaceIdToWeaveNodeId

uint64_t IPv6InterfaceIdToWeaveNodeId(
  uint64_t interfaceId
)

Konversikan ID antarmuka alamat IPv6 menjadi ID node Weave.

Untuk memudahkan pengujian, ID node yang kurang atau sama dengan #kMaxAlwaysLocalWeaveNodeId (65535) dianggap 'local', dan bit universal/lokalnya disetel ke nol. Ini menyederhanakan representasi string dari alamat IPv6 yang sesuai. Misalnya, ULA untuk ID node 10 adalah FD00:0:1:1::A.

Detail
Parameter
[in] interfaceId
ID antarmuka 64 bit.
Hasil
pengenal node Weave 64 bit yang dipetakan.

IsCASEAuthMode

bool IsCASEAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada protokol Weave CASE.

IsCertAuthMode

bool IsCertAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada kepemilikan kunci pribadi yang terkait dengan sertifikat.

IsGroupKeyAuthMode

bool IsGroupKeyAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada kepemilikan kunci grup bersama.

IsPASEAuthMode

bool IsPASEAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada protokol Weave PASE.

IsPasswordAuthMode

bool IsPasswordAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada kepemilikan sandi bersama.

IsTAKEAuthMode

bool IsTAKEAuthMode(
  WeaveAuthMode authMode
)

True jika mode autentikasi didasarkan pada protokol Weave TAKE.

IsWRMPControlMessage

bool IsWRMPControlMessage(
  uint32_t profileId,
  uint8_t msgType
)

J2N_ByteArray

WEAVE_ERROR J2N_ByteArray(
  JNIEnv *env,
  jbyteArray inArray,
  uint8_t *& outArray,
  uint32_t & outArrayLen
)

J2N_ByteArrayFieldVal

WEAVE_ERROR J2N_ByteArrayFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  uint8_t *& outArray,
  uint32_t & outArrayLen
)

J2N_ByteArrayInPlace

WEAVE_ERROR J2N_ByteArrayInPlace(
  JNIEnv *env,
  jbyteArray inArray,
  uint8_t *outArray,
  uint32_t maxArrayLen
)

J2N_EnumFieldVal

WEAVE_ERROR J2N_EnumFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  const char *fieldType,
  int & outVal
)

J2N_EnumVal

WEAVE_ERROR J2N_EnumVal(
  JNIEnv *env,
  jobject enumObj,
  int & outVal
)

J2N_IntFieldVal

WEAVE_ERROR J2N_IntFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jint & outVal
)

J2N_LongFieldVal

WEAVE_ERROR J2N_LongFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jlong & outVal
)

J2N_ShortFieldVal

WEAVE_ERROR J2N_ShortFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jshort & outVal
)

J2N_StringFieldVal

WEAVE_ERROR J2N_StringFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  char *& outVal
)

MakeClassName

WEAVE_ERROR MakeClassName(
  const char *basePackageName,
  const char *relativeClassName,
  char *& classNameBuf
)

PASEAuthMode

WeaveAuthMode PASEAuthMode(
  uint8_t pwSource
)

Menampilkan mode autentikasi PASE yang sesuai untuk sumber sandi tertentu.

PasswordSourceFromAuthMode

uint8_t PasswordSourceFromAuthMode(
  WeaveAuthMode authMode
)

Menampilkan sumber sandi untuk mode autentikasi yang ditentukan.

PrintTunnelInfo

void PrintTunnelInfo(
  const WeaveConnectionTunnel & tun,
  const TCPEndPoint & fromEndPoint,
  const TCPEndPoint & toEndPoint,
  const PacketBuffer & data
)

ToHex

char ToHex(
  const uint8_t data
)

ToHexString

void ToHexString(
  const uint8_t *data,
  size_t dataLen,
  char *& outBuf,
  size_t & outBufSize
)

WeaveEncryptionKeyToString

void WeaveEncryptionKeyToString(
  uint8_t encType,
  const WeaveEncryptionKey & key,
  char *buf,
  size_t bufSize
)

WeaveFabricIdToIPv6GlobalId

uint64_t WeaveFabricIdToIPv6GlobalId(
  uint64_t fabricId
)

Konversikan ID kain Weave ke ID global ULA IPv6.

ID global ULA untuk alamat kain adalah 40 bit yang lebih rendah dari ID kain 64-bit kain.

Detail
Parameter
[in] fabricId
ID kain Weave.
Hasil
pengenal global IPv6 yang dipetakan.

WeaveMessageSourceToStr

void WeaveMessageSourceToStr(
  char *buf,
  uint32_t bufSize,
  const WeaveMessageInfo *msgInfo
)

TIDAK DIGUNAKAN LAGI Gunakan WeaveMessageLayer::GetPeerDescription() sebagai gantinya.

WeaveNodeAddrToStr

void WeaveNodeAddrToStr(
  char *buf,
  uint32_t bufSize,
  uint64_t nodeId,
  const IPAddress *addr,
  uint16_t port,
  WeaveConnection *con
)

TIDAK DIGUNAKAN LAGI Gunakan WeaveMessageLayer::GetPeerDescription() sebagai gantinya.

WeaveNodeIdToIPv6InterfaceId

uint64_t WeaveNodeIdToIPv6InterfaceId(
  uint64_t nodeId
)

Konversikan ID node Weave menjadi ID antarmuka alamat IPv6.

ID node Weave adalah Universal/Local EUI-64s, yang per RFC-3513 dikonversi ke pengidentifikasi antarmuka dengan membalik bit universal/lokal (bit 57 menghitung LSB sebagai 0).

Untuk memudahkan pengujian, ID node yang kurang atau sama dengan #kMaxAlwaysLocalWeaveNodeId (65535) dianggap 'local', dan bit universal/lokalnya disetel ke nol. Ini menyederhanakan representasi string dari alamat IPv6 yang sesuai. Misalnya, ULA untuk ID node 10 adalah FD00:0:1:1::A.

Detail
Parameter
[in] nodeId
ID node Weave 64-bit.
Hasil
pengenal antarmuka IPv6.

maks

const _T & max(
  const _T & a,
  const _T & b
)

mnt

const _T & min(
  const _T & a,
  const _T & b
)