11d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi/*
21d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * Copyright (C) 2016 The Android Open Source Project
31d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi *
41d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * Licensed under the Apache License, Version 2.0 (the "License");
51d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * you may not use this file except in compliance with the License.
61d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * You may obtain a copy of the License at
71d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi *
81d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi *      http://www.apache.org/licenses/LICENSE-2.0
91d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi *
101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * Unless required by applicable law or agreed to in writing, software
111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * distributed under the License is distributed on an "AS IS" BASIS,
121d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * See the License for the specific language governing permissions and
141d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * limitations under the License.
151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi */
161d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshipackage android.hardware.location;
171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.annotation.SystemApi;
191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.os.Parcel;
201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.os.Parcelable;
211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
221d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport java.util.Arrays;
231d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
241d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi/**
251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * @hide
269ff7d2235427b211344fa58b608424805a21aa24Peng Xu */
271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi@SystemApi
281d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshipublic class ContextHubInfo {
291d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mId;
301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private String mName;
311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private String mVendor;
321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private String mToolchain;
331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mPlatformVersion;
341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mStaticSwVersion;
351d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mToolchainVersion;
361d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private float mPeakMips;
371d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private float mStoppedPowerDrawMw;
381d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private float mSleepPowerDrawMw;
391d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private float mPeakPowerDrawMw;
40b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    private int mMaxPacketLengthBytes;
411d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
421d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int[] mSupportedSensors;
431d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
441d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private MemoryRegion[] mMemoryRegions;
451d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
461d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public ContextHubInfo() {
471d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
481d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
491d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
50b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     * returns the maximum number of bytes that can be sent per message to the hub
51b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     *
52b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     * @return int - maximum bytes that can be transmitted in a
53b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     *         single packet
54b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     */
55b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    public int getMaxPacketLengthBytes() {
56b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi        return mMaxPacketLengthBytes;
57b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    }
58b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi
59b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    /**
60b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     * set the context hub unique identifer
61b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     *
62b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     * @param bytes - Maximum number of bytes per message
63b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     *
64b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     * @hide
65b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi     */
66b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    public void setMaxPacketLenBytes(int bytes) {
67b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi        mMaxPacketLengthBytes = bytes;
68b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    }
69b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi
70b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    /**
711d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the context hub unique identifer
721d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
731d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - unique system wide identifier
741d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
751d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getId() {
761d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mId;
771d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
781d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
791d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
801d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set the context hub unique identifer
811d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
821d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param id - unique system wide identifier for the hub
839ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
849ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
851d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
861d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setId(int id) {
871d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mId = id;
881d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
891d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
901d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
911d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get a string as a hub name
921d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
931d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return String - a name for the hub
941d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
951d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public String getName() {
961d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mName;
971d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
981d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
991d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1001d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set a string as the hub name
1011d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1029ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @param name - the name for the hub
1039ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
1049ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
1051d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1061d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setName(String name) {
1071d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mName = name;
1081d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1091d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get a string as the vendor name
1121d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1131d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return String - a name for the vendor
1141d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public String getVendor() {
1161d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mVendor;
1171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set a string as the vendor name
1211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1229ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @param vendor - a name for the vendor
1239ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
1249ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
1251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1261d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setVendor(String vendor) {
1271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mVendor = vendor;
1281d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1291d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get tool chain string
1321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return String - description of the tool chain
1341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1351d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public String getToolchain() {
1361d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mToolchain;
1371d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1381d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1391d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1401d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set tool chain string
1411d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1429ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @param toolchain - description of the tool chain
1439ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
1449ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
1451d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1461d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setToolchain(String toolchain) {
1471d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mToolchain = toolchain;
1481d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1491d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1501d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1511d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get platform version
1521d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1531d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - platform version number
1541d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1551d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getPlatformVersion() {
1561d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mPlatformVersion;
1571d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1581d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1591d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1601d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set platform version
1611d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1621d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param platformVersion - platform version number
1639ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
1649ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
1651d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1661d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setPlatformVersion(int platformVersion) {
1671d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPlatformVersion = platformVersion;
1681d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1691d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1701d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1711d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get static platform version number
1721d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1731d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - platform version number
1741d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1751d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getStaticSwVersion() {
1761d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mStaticSwVersion;
1771d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1781d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1791d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1801d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set platform software version
1811d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1821d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param staticSwVersion - platform static s/w version number
1839ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
1849ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
1851d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1861d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setStaticSwVersion(int staticSwVersion) {
1871d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mStaticSwVersion = staticSwVersion;
1881d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1891d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1901d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
1911d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the tool chain version
1921d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
1931d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - the tool chain version
1941d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
1951d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getToolchainVersion() {
1961d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mToolchainVersion;
1971d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1981d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1991d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2001d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set the tool chain version number
2011d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2021d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param toolchainVersion - tool chain version number
2039ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
2049ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
2051d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2061d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setToolchainVersion(int toolchainVersion) {
2071d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mToolchainVersion = toolchainVersion;
2081d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2091d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the peak processing mips the hub can support
2121d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2131d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return float - peak MIPS that this hub can deliver
2141d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public float getPeakMips() {
2161d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mPeakMips;
2171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set the peak mips that this hub can support
2211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2221d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param peakMips - peak mips this hub can deliver
2239ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
2249ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
2251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2261d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setPeakMips(float peakMips) {
2271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPeakMips = peakMips;
2281d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2291d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the stopped power draw in milliwatts
2321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * This assumes that the hub enter a stopped state - which is
2331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * different from the sleep state. Latencies on exiting the
2341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * sleep state are typically higher and expect to be in multiple
2351d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * milliseconds.
2361d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2371d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return float - power draw by the hub in stopped state
2381d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2391d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public float getStoppedPowerDrawMw() {
2401d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mStoppedPowerDrawMw;
2411d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2421d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2431d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2441d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * Set the power consumed by the hub in stopped state
2451d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2461d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param stoppedPowerDrawMw - stopped power in milli watts
2479ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
2489ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
2491d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2501d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setStoppedPowerDrawMw(float stoppedPowerDrawMw) {
2511d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mStoppedPowerDrawMw = stoppedPowerDrawMw;
2521d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2531d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2541d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2551d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the power draw of the hub in sleep mode. This assumes
2561d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * that the hub supports a sleep mode in which the power draw is
2571d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * lower than the power consumed when the hub is actively
2581d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * processing. As a guideline, assume that the hub should be
2591d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * able to enter sleep mode if it knows reliably on completion
2601d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * of some task that the next interrupt/scheduled work item is
2611d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * at least 250 milliseconds later.
2621d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2631d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return float - sleep power draw in milli watts
2641d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2651d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public float getSleepPowerDrawMw() {
2661d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mSleepPowerDrawMw;
2671d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2681d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2691d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2701d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * Set the sleep power draw in milliwatts
2711d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2721d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param sleepPowerDrawMw - sleep power draw in milliwatts.
2739ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
2749ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
2751d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2761d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setSleepPowerDrawMw(float sleepPowerDrawMw) {
2771d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mSleepPowerDrawMw = sleepPowerDrawMw;
2781d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2791d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2801d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2811d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the peak powe draw of the hub. This is the power consumed
2821d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * by the hub at maximum load.
2831d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2841d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return float - peak power draw
2851d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2861d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public float getPeakPowerDrawMw() {
2871d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mPeakPowerDrawMw;
2881d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
2891d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
2901d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
2911d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set the peak power draw of the hub
2921d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
2931d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param peakPowerDrawMw - peak power draw of the hub in
2941d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *                        milliwatts.
2959ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
2969ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
2971d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
2981d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setPeakPowerDrawMw(float peakPowerDrawMw) {
2991d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPeakPowerDrawMw = peakPowerDrawMw;
3001d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3011d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3021d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
3031d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the sensors supported by this hub
3041d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3051d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int[] - all the supported sensors on this hub
3061d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3071d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @see ContextHubManager
3081d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
3091d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int[] getSupportedSensors() {
3101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return Arrays.copyOf(mSupportedSensors, mSupportedSensors.length);
3111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3121d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3131d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
3141d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get the various memory regions on this hub
3151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3161d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return MemoryRegion[] - all the memory regions on this hub
3171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @see MemoryRegion
3191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
3201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public MemoryRegion[] getMemoryRegions() {
3211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return Arrays.copyOf(mMemoryRegions, mMemoryRegions.length);
3221d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3231d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3241d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
3251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set the supported sensors on this hub
3261d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param supportedSensors - supported sensors on this hub
3289ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
3299ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
3301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
3311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setSupportedSensors(int[] supportedSensors) {
3321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mSupportedSensors = Arrays.copyOf(supportedSensors, supportedSensors.length);
3331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3351d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
3361d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set memory regions for this hub
3371d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3381d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param memoryRegions - memory regions information
3391d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
3401d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @see MemoryRegion
3419ff7d2235427b211344fa58b608424805a21aa24Peng Xu     *
3429ff7d2235427b211344fa58b608424805a21aa24Peng Xu     * @hide
3431d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
3441d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setMemoryRegions(MemoryRegion[] memoryRegions) {
3451d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mMemoryRegions = Arrays.copyOf(memoryRegions, memoryRegions.length);
3461d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3471d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3486239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi    @Override
3496239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi    public String toString() {
3506239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      String retVal = "";
3516239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "Id : " + mId;
3526239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += ", Name : " + mName;
3536239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "\n\tVendor : " + mVendor;
3546239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += ", ToolChain : " + mToolchain;
3556239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "\n\tPlatformVersion : " + mPlatformVersion;
3566239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += ", StaticSwVersion : " + mStaticSwVersion;
3576239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "\n\tPeakMips : " + mPeakMips;
3586239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += ", StoppedPowerDraw : " + mStoppedPowerDrawMw + " mW";
3596239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += ", PeakPowerDraw : " + mPeakPowerDrawMw + " mW";
3606469c233fb9f7e617a5bc8b5d8348d7241d279c7destradaa      retVal += ", MaxPacketLength : " + mMaxPacketLengthBytes + " Bytes";
3616239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "\n\tSupported sensors : " + Arrays.toString(mSupportedSensors);
3626239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      retVal += "\n\tMemory Regions : " + Arrays.toString(mMemoryRegions);
3636239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi
3646239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi      return retVal;
3656239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi    }
3666239cc6fe1d18ce4365c56346a09c7963dfa8f10Ashutosh Joshi
3671d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private ContextHubInfo(Parcel in) {
3681d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mId = in.readInt();
3691d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mName = in.readString();
3701d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mVendor = in.readString();
3711d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mToolchain = in.readString();
3721d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPlatformVersion = in.readInt();
3731d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mToolchainVersion = in.readInt();
3741d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mStaticSwVersion = in.readInt();
3751d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPeakMips = in.readFloat();
3761d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mStoppedPowerDrawMw = in.readFloat();
3771d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mSleepPowerDrawMw = in.readFloat();
3781d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mPeakPowerDrawMw = in.readFloat();
3796469c233fb9f7e617a5bc8b5d8348d7241d279c7destradaa        mMaxPacketLengthBytes = in.readInt();
3801d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3811d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        int numSupportedSensors = in.readInt();
3821d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mSupportedSensors = new int[numSupportedSensors];
3831d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        in.readIntArray(mSupportedSensors);
3841d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mMemoryRegions = in.createTypedArray(MemoryRegion.CREATOR);
3851d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3861d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3871d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int describeContents() {
3881d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return 0;
3891d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
3901d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
3911d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void writeToParcel(Parcel out, int flags) {
3921d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mId);
3931d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeString(mName);
3941d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeString(mVendor);
3951d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeString(mToolchain);
3961d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mPlatformVersion);
3971d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mToolchainVersion);
3981d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mStaticSwVersion);
3991d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeFloat(mPeakMips);
4001d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeFloat(mStoppedPowerDrawMw);
4011d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeFloat(mSleepPowerDrawMw);
4021d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeFloat(mPeakPowerDrawMw);
4036469c233fb9f7e617a5bc8b5d8348d7241d279c7destradaa        out.writeInt(mMaxPacketLengthBytes);
4041d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
4051d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mSupportedSensors.length);
4061d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeIntArray(mSupportedSensors);
4071d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeTypedArray(mMemoryRegions, flags);
4081d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
4091d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
4101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public static final Parcelable.Creator<ContextHubInfo> CREATOR
4111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            = new Parcelable.Creator<ContextHubInfo>() {
4121d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        public ContextHubInfo createFromParcel(Parcel in) {
4131d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            return new ContextHubInfo(in);
4141d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        }
4151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
4161d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        public ContextHubInfo[] newArray(int size) {
4171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            return new ContextHubInfo[size];
4181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        }
4191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    };
4206469c233fb9f7e617a5bc8b5d8348d7241d279c7destradaa}
421