Skip to content
This repository was archived by the owner on Dec 20, 2023. It is now read-only.

Commit 66ef902

Browse files
authored
Merge pull request #272 from robszewczyk/bug/missing-pairing-versions
Expose pairing compatibility major and minor versions in Java code
2 parents aac9efd + 1b1eab7 commit 66ef902

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

src/device-manager/WeaveDeviceManager-JNI.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3214,7 +3214,7 @@ WEAVE_ERROR N2J_DeviceDescriptor(JNIEnv *env, const WeaveDeviceDescriptor& inDev
32143214
SuccessOrExit(err);
32153215
}
32163216

3217-
constructor = env->GetMethodID(sWeaveDeviceDescriptorCls, "<init>", "(IIIIII[B[BLjava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLjava/lang/String;II)V");
3217+
constructor = env->GetMethodID(sWeaveDeviceDescriptorCls, "<init>", "(IIIIII[B[BLjava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLjava/lang/String;IIII)V");
32183218
VerifyOrExit(constructor != NULL, err = WDM_JNI_ERROR_METHOD_NOT_FOUND);
32193219

32203220
env->ExceptionClear();
@@ -3224,6 +3224,8 @@ WEAVE_ERROR N2J_DeviceDescriptor(JNIEnv *env, const WeaveDeviceDescriptor& inDev
32243224
primary802154MACAddress, primaryWiFiMACAddress,
32253225
serialNumber, rendezvousWiFiESSID, pairingCode,
32263226
(jlong)inDeviceDesc.DeviceId, (jlong)inDeviceDesc.FabricId, softwareVersion,
3227+
(jint)inDeviceDesc.PairingCompatibilityVersionMajor,
3228+
(jint)inDeviceDesc.PairingCompatibilityVersionMinor,
32273229
(jint)inDeviceDesc.DeviceFeatures, (jint)inDeviceDesc.Flags);
32283230
VerifyOrExit(!env->ExceptionCheck(), err = WDM_JNI_ERROR_EXCEPTION_THROWN);
32293231

src/device-manager/java/src/nl/Weave/DeviceManager/WeaveDeviceDescriptor.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/*
22
3-
Copyright (c) 013-2017 Nest Labs, Inc.
3+
Copyright (c) 2019 Google LLC.
4+
Copyright (c) 2013-2017 Nest Labs, Inc.
45
All rights reserved.
56
67
Licensed under the Apache License, Version 2.0 (the "License");
@@ -58,10 +59,18 @@ public class WeaveDeviceDescriptor
5859
*/
5960
public String softwareVersion;
6061

62+
/** Pairing compatibility major version (0 = not specified)
63+
*/
64+
public int pairingCompatibilityVersionMajor;
65+
66+
/** Pairing compatibility minor version (0 = not specified)
67+
*/
68+
public int pairingCompatibilityVersionMinor;
69+
6170
/** ESSID or ESSID suffix for device's rendezvous WiFi network (null = not present).
6271
*/
6372
public String rendezvousWiFiESSID;
64-
73+
6574
/** True if the rendezvousWiFiESSID field contains a suffix string.
6675
*/
6776
public boolean isRendezvousWiFiESSIDSuffix;
@@ -88,6 +97,19 @@ public WeaveDeviceDescriptor(int vendorCode, int productCode, int productRevisio
8897
String serialNumber, String rendezvousWiFiESSID, String pairingCode,
8998
long deviceId, long fabricId, String softwareVersion, int deviceFeatures,
9099
int flags)
100+
{
101+
this(vendorCode, productCode, productRevision, manufacturingYear, manufacturingMonth, manufacturingDay,
102+
primary802154MACAddress, primaryWiFiMACAddress, serialNumber, rendezvousWiFiESSID, pairingCode,
103+
deviceId, fabricId, softwareVersion, 0, 0, deviceFeatures, flags);
104+
}
105+
106+
public WeaveDeviceDescriptor(int vendorCode, int productCode, int productRevision,
107+
int manufacturingYear, int manufacturingMonth, int manufacturingDay,
108+
byte[] primary802154MACAddress, byte[] primaryWiFiMACAddress,
109+
String serialNumber, String rendezvousWiFiESSID, String pairingCode,
110+
long deviceId, long fabricId, String softwareVersion,
111+
int pairingCompatibilityVersionMajor, int pairingCompatibilityVersionMinor,
112+
int deviceFeatures, int flags)
91113
{
92114
this.vendorCode = vendorCode;
93115
this.productCode = productCode;
@@ -109,6 +131,8 @@ public WeaveDeviceDescriptor(int vendorCode, int productCode, int productRevisio
109131
this.deviceId = deviceId;
110132
this.fabricId = fabricId;
111133
this.softwareVersion = softwareVersion;
134+
this.pairingCompatibilityVersionMajor = pairingCompatibilityVersionMajor;
135+
this.pairingCompatibilityVersionMinor = pairingCompatibilityVersionMinor;
112136
this.deviceFeatures = DeviceFeatures.fromFlags(deviceFeatures);
113137
this.isRendezvousWiFiESSIDSuffix = ((flags & FLAG_IS_RENDEZVOUS_WIFI_ESSID_SUFFIX) != 0);
114138
}
@@ -118,6 +142,6 @@ public WeaveDeviceDescriptor(int vendorCode, int productCode, int productRevisio
118142
static {
119143
System.loadLibrary("WeaveDeviceManager");
120144
}
121-
145+
122146
static final int FLAG_IS_RENDEZVOUS_WIFI_ESSID_SUFFIX = 0x01;
123147
}

src/lib/profiles/device-description/DeviceDescription.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,8 @@ WEAVE_ERROR WeaveDeviceDescriptor::DecodeText(const char *data, uint32_t dataLen
708708
bool mfgDateIncluded = false;
709709
bool serialNumIncluded = false;
710710

711+
outDesc.Clear();
712+
711713
if (reader.Version != kEncodingVersion)
712714
return WEAVE_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION;
713715

@@ -823,6 +825,8 @@ WEAVE_ERROR WeaveDeviceDescriptor::DecodeTLV(const uint8_t *data, uint32_t dataL
823825
WEAVE_ERROR err;
824826
TLVReader reader;
825827

828+
outDesc.Clear();
829+
826830
reader.Init(data, dataLen);
827831

828832
// Treat an implicit profile tag as specifying the Device Description profile.

0 commit comments

Comments
 (0)