CdmaCellLocation.java revision 1b90def3c683afaea528a0ee705b14df6ce2e2c7
104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville/* 204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Copyright (C) 2006 The Android Open Source Project 304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * you may not use this file except in compliance with the License. 604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * You may obtain a copy of the License at 704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * http://www.apache.org/licenses/LICENSE-2.0 904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 1004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Unless required by applicable law or agreed to in writing, software 1104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 1204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * See the License for the specific language governing permissions and 1404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * limitations under the License. 1504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 1604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 1704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepackage android.telephony.cdma; 1804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 1904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport android.os.Bundle; 2004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport android.telephony.CellLocation; 2104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 2204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville/** 231b90def3c683afaea528a0ee705b14df6ce2e2c7Mike Lockwood * Represents the cell location on a CDMA phone. 2404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 2504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepublic class CdmaCellLocation extends CellLocation { 2604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville private int mBaseStationId = -1; 2704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville private int mBaseStationLatitude = -1; 2804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville private int mBaseStationLongitude = -1; 29a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood private int mSystemId = -1; 30a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood private int mNetworkId = -1; 3104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 3204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 331b90def3c683afaea528a0ee705b14df6ce2e2c7Mike Lockwood * Empty constructor. 341b90def3c683afaea528a0ee705b14df6ce2e2c7Mike Lockwood * Initializes the BID, SID, NID and base station latitude and longitude to -1. 3504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 3604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public CdmaCellLocation() { 3704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationId = -1; 3804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLatitude = -1; 3904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLongitude = -1; 40a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mSystemId = -1; 41a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mNetworkId = -1; 4204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 4304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 4404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 4504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Initialize the object from a bundle. 4604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 4704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public CdmaCellLocation(Bundle bundleWithValues) { 4804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationId = bundleWithValues.getInt("baseStationId"); 4904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLatitude = bundleWithValues.getInt("baseStationLatitude"); 5004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLongitude = bundleWithValues.getInt("baseStationLongitude"); 51a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mSystemId = bundleWithValues.getInt("systemId"); 52a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mNetworkId = bundleWithValues.getInt("networkId"); 5304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 5404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 5504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 5604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @return cdma base station identification number, -1 if unknown 5704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 5804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public int getBaseStationId() { 5904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return this.mBaseStationId; 6004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 6104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 6204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 6304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @return cdma base station latitude, -1 if unknown 6404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 6504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public int getBaseStationLatitude() { 6604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return this.mBaseStationLatitude; 6704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 6804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 6904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 7004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @return cdma base station longitude, -1 if unknown 7104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 7204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public int getBaseStationLongitude() { 7304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return this.mBaseStationLongitude; 7404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 7504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 7604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 77a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood * @return cdma system identification number, -1 if unknown 78a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood */ 79a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood public int getSystemId() { 80a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood return this.mSystemId; 81a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood } 82a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood 83a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood /** 84a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood * @return cdma network identification number, -1 if unknown 85a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood */ 86a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood public int getNetworkId() { 87a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood return this.mNetworkId; 88a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood } 89a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood 90a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood /** 9104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Invalidate this object. The cell location data is set to -1. 9204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 9304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public void setStateInvalid() { 9404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationId = -1; 9504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLatitude = -1; 9604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLongitude = -1; 97a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mSystemId = -1; 98a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mNetworkId = -1; 9904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 10004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 10104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 10204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Set the cell location data. 10304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 10404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public void setCellLocationData(int baseStationId, int baseStationLatitude, 10504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville int baseStationLongitude) { 10604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville // The following values have to be written in the correct sequence 10704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationId = baseStationId; 10804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLatitude = baseStationLatitude; //values[2]; 10904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville this.mBaseStationLongitude = baseStationLongitude; //values[3]; 11004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 11104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 112a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood /** 113a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood * Set the cell location data. 114a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood */ 115a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood public void setCellLocationData(int baseStationId, int baseStationLatitude, 116a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood int baseStationLongitude, int systemId, int networkId) { 117a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood // The following values have to be written in the correct sequence 118a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mBaseStationId = baseStationId; 119a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mBaseStationLatitude = baseStationLatitude; //values[2]; 120a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mBaseStationLongitude = baseStationLongitude; //values[3]; 121a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mSystemId = systemId; 122a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood this.mNetworkId = networkId; 123a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood } 124a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood 12504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville @Override 12604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public int hashCode() { 127a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood return this.mBaseStationId ^ this.mBaseStationLatitude ^ this.mBaseStationLongitude 128a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood ^ this.mSystemId ^ this.mNetworkId; 12904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 13004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 13104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville @Override 13204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public boolean equals(Object o) { 13304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville CdmaCellLocation s; 13404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 13504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville try { 13604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville s = (CdmaCellLocation)o; 13704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } catch (ClassCastException ex) { 13804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return false; 13904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 14004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 14104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville if (o == null) { 14204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return false; 14304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 14404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 14504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return (equalsHandlesNulls(this.mBaseStationId, s.mBaseStationId) && 14604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville equalsHandlesNulls(this.mBaseStationLatitude, s.mBaseStationLatitude) && 147a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood equalsHandlesNulls(this.mBaseStationLongitude, s.mBaseStationLongitude) && 148a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood equalsHandlesNulls(this.mSystemId, s.mSystemId) && 149a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood equalsHandlesNulls(this.mNetworkId, s.mNetworkId) 15004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville ); 15104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 15204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 15304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville @Override 15404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public String toString() { 15504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return "[" + this.mBaseStationId + "," 15604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville + this.mBaseStationLatitude + "," 157a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood + this.mBaseStationLongitude + "," 158a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood + this.mSystemId + "," 159a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood + this.mNetworkId + "]"; 16004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 16104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 16204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 16304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Test whether two objects hold the same data values or both are null 16404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 16504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @param a first obj 16604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @param b second obj 16704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @return true if two objects equal or both are null 16804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 16904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville private static boolean equalsHandlesNulls(Object a, Object b) { 17004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return (a == null) ? (b == null) : a.equals (b); 17104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 17204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 17304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville /** 17404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Fill the cell location data into the intent notifier Bundle based on service state 17504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * 17604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * @param bundleToFill intent notifier Bundle 17704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */ 17804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public void fillInNotifierBundle(Bundle bundleToFill) { 17904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville bundleToFill.putInt("baseStationId", this.mBaseStationId); 18004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville bundleToFill.putInt("baseStationLatitude", this.mBaseStationLatitude); 18104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville bundleToFill.putInt("baseStationLongitude", this.mBaseStationLongitude); 182a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood bundleToFill.putInt("systemId", this.mSystemId); 183a4d2fb5ef6bb5dfb6e26ac6a139de389984db5d3Mike Lockwood bundleToFill.putInt("networkId", this.mNetworkId); 18404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville } 18504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 18604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville} 18704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 18804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 189