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 Joshi
171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshipackage android.hardware.location;
181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.annotation.SystemApi;
201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.os.Parcel;
211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport android.os.Parcelable;
22b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshiimport android.util.Log;
231d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
241d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshiimport java.util.Arrays;
251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
261d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi/**
271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi * @hide
281d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi */
291d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi@SystemApi
301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshipublic class ContextHubMessage {
311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mType;
321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private int mVersion;
331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private byte[]mData;
341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
35b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi    private static final String TAG = "ContextHubMessage";
36b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi
37b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi
381d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
391d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * Get the message type
401d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
411d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - message type
421d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
431d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getMsgType() {
441d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mType;
451d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
461d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
471d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
481d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get message version
491d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
501d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return int - message version
511d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
521d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int getVersion() {
531d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return mVersion;
541d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
551d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
561d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
571d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * get message data
581d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
591d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @return byte[] - message data buffer
601d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
611d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public byte[] getData() {
621d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return Arrays.copyOf(mData, mData.length);
631d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
641d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
651d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
661d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set message type
671d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
681d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param msgType - message type
691d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
701d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setMsgType(int msgType) {
711d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mType = msgType;
721d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
731d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
741d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
751d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * Set message version
761d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
771d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param version - message version
781d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
791d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setVersion(int version) {
801d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mVersion = version;
811d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
821d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
831d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
841d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * set message data
851d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
861d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param data - message buffer
871d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
881d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void setMsgData(byte[] data) {
891d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mData = Arrays.copyOf(data, data.length);
901d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
911d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
921d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    /**
931d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * Constructor for a context hub message
941d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     *
951d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param msgType - message type
961d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param version - version
971d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     * @param data    - message buffer
981d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi     */
991d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public ContextHubMessage(int msgType, int version, byte[] data) {
1001d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mType = msgType;
1011d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mVersion = version;
1021d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mData = Arrays.copyOf(data, data.length);
1031d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1041d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1051d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public int describeContents() {
1061d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        return 0;
1071d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1081d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1091d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    private ContextHubMessage(Parcel in) {
1101d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mType = in.readInt();
1111d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        mVersion = in.readInt();
112b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi        int bufferLength = in.readInt();
113b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi        mData = new byte[bufferLength];
114b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi        in.readByteArray(mData);
1151d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
116b741e3b374e7eebf96e2104dec5caccf723b2a39Ashutosh Joshi
1171d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public void writeToParcel(Parcel out, int flags) {
1181d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mType);
1191d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mVersion);
1201d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeInt(mData.length);
1211d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        out.writeByteArray(mData);
1221d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    }
1231d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1241d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    public static final Parcelable.Creator<ContextHubMessage> CREATOR
1251d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            = new Parcelable.Creator<ContextHubMessage>() {
1261d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        public ContextHubMessage createFromParcel(Parcel in) {
1271d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            return new ContextHubMessage(in);
1281d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        }
1291d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi
1301d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        public ContextHubMessage[] newArray(int size) {
1311d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi            return new ContextHubMessage[size];
1321d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi        }
1331d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi    };
1341d1ac5409597ef668e52c6f27293eaf9af575e33Ashutosh Joshi}
135