| /* |
| |
| Copyright (c) 013-2017 Nest Labs, Inc. |
| All rights reserved. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| package nl.Weave.DeviceManager; |
| |
| import java.util.Calendar; |
| import java.util.EnumSet; |
| |
| public class WeaveDeviceDescriptor |
| { |
| /** Weave device id (0 = not present). |
| */ |
| public long deviceId; |
| |
| /** Device vendor code (0 = not present). |
| */ |
| public int vendorCode; |
| |
| /** Device product code (0 = not present). |
| */ |
| public int productCode; |
| |
| /** Device product revision (0 = not present). |
| */ |
| public int productRevision; |
| |
| /** Date of device manufacture (null = not present). |
| */ |
| public Calendar manufacturingDate; |
| |
| /** MAC address for primary 802.15.4 interface (big-endian, null = not present). |
| */ |
| public byte[] primary802154MACAddress; |
| |
| /** MAC address for primary WiFi interface (big-endian, null = not present). |
| */ |
| public byte[] primaryWiFiMACAddress; |
| |
| /** Device serial number (null = not present). |
| */ |
| public String serialNumber; |
| |
| /** Installed software version (null = not present). |
| */ |
| public String softwareVersion; |
| |
| /** ESSID for pairing WiFi network (null = not present). |
| */ |
| public String rendezvousWiFiESSID; |
| |
| /** Device pairing code (null = not present). |
| */ |
| public String pairingCode; |
| |
| /** Weave fabric to which the device belongs (0 = not present). |
| */ |
| public long fabricId; |
| |
| /** Set of flags identifying features supported by the device. |
| */ |
| public EnumSet<DeviceFeatures> deviceFeatures; |
| |
| public WeaveDeviceDescriptor() |
| { |
| } |
| |
| public WeaveDeviceDescriptor(int vendorCode, int productCode, int productRevision, |
| int manufacturingYear, int manufacturingMonth, int manufacturingDay, |
| byte[] primary802154MACAddress, byte[] primaryWiFiMACAddress, |
| String serialNumber, String rendezvousWiFiESSID, String pairingCode, |
| long deviceId, long fabricId, String softwareVersion, int deviceFeatures) |
| { |
| this.vendorCode = vendorCode; |
| this.productCode = productCode; |
| this.productRevision = productRevision; |
| if (manufacturingYear != 0 || manufacturingMonth != 0 || manufacturingDay != 0) { |
| this.manufacturingDate = Calendar.getInstance(); |
| if (manufacturingYear != 0) |
| this.manufacturingDate.set(Calendar.YEAR, manufacturingYear); |
| if (manufacturingMonth != 0) |
| this.manufacturingDate.set(Calendar.MONTH, manufacturingMonth - 1); |
| if (manufacturingDay != 0) |
| this.manufacturingDate.set(Calendar.DAY_OF_MONTH, manufacturingDay); |
| } |
| this.primary802154MACAddress = primary802154MACAddress; |
| this.primaryWiFiMACAddress = primaryWiFiMACAddress; |
| this.serialNumber = serialNumber; |
| this.rendezvousWiFiESSID = rendezvousWiFiESSID; |
| this.pairingCode = pairingCode; |
| this.deviceId = deviceId; |
| this.fabricId = fabricId; |
| this.softwareVersion = softwareVersion; |
| this.deviceFeatures = DeviceFeatures.fromFlags(deviceFeatures); |
| |
| } |
| |
| public static native WeaveDeviceDescriptor decode(byte[] encodedDeviceDesc); |
| |
| static { |
| System.loadLibrary("WeaveDeviceManager"); |
| } |
| } |