1a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen/* 2a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Copyright (c) 2013 The Android Open Source Project 3a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 4a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Licensed under the Apache License, Version 2.0 (the "License"); 5a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * you may not use this file except in compliance with the License. 6a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * You may obtain a copy of the License at 7a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 8a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * http://www.apache.org/licenses/LICENSE-2.0 9a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 10a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Unless required by applicable law or agreed to in writing, software 11a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * distributed under the License is distributed on an "AS IS" BASIS, 12a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * See the License for the specific language governing permissions and 14a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * limitations under the License. 15a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 16a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 17a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 18a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohenpackage com.android.ims.internal; 19a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 20a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohenimport com.android.ims.ImsConfigListener; 21a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 22a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen/** 23a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Provides APIs to get/set the IMS service capability/parameters. 24a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * The parameters can be configured by operator and/or user. 25a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * We define 4 storage locations for the IMS config items: 26a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 1) Default config:For factory out device or device after factory data reset, 27a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * the default config is used to build the initial state of the master config value. 28a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 2) Provisioned value: as the parameters provisioned by operator need to be preserved 29a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * across FDR(factory data reset)/BOTA(over the air software upgrade), the operator 30a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * provisioned items should be stored in memory location preserved across FDR/BOTA. 31a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 3) Master value: as the provisioned value can override the user setting, 32a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * and the master config are used by IMS stack. They should be stored in the 33a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * storage based on IMS vendor implementations. 34a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 4) User setting: For items can be changed by both user/operator, the user 35a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * setting should take effect in some cases. So the user setting should be stored in 36a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * database like setting.db. 37a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 38a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Priority consideration if both operator/user can config the same item: 39a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 1) For feature config items, the master value is obtained from the provisioned value 40a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * masks with the user setting. Specifically the provisioned values overrides 41a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * the user setting if feature is provisioned off. Otherwise, user setting takes 42a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * effect. 43a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 2) For non-feature config item: to be implemented based on cases. 44a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Special cases considered as below: 45a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 1) Factory out device, the master configuration is built from default config. 46a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 2) For Factory data reset/SW upgrade device, the master config is built by 47a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * taking provisioned value overriding default config. 48a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * {@hide} 49a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 50a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Coheninterface IImsConfig { 51a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 522cdac3bd53a1e8e8342a3cff9d53bb7c5b27b1c9Libin.Tang@motorola.com * Gets the value for ims service/capabilities parameters from the provisioned 53a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * value storage. Synchronous blocking call. 54a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 55a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 56a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @return value in Integer format. 57a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 582cdac3bd53a1e8e8342a3cff9d53bb7c5b27b1c9Libin.Tang@motorola.com int getProvisionedValue(int item); 59a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 60a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 612cdac3bd53a1e8e8342a3cff9d53bb7c5b27b1c9Libin.Tang@motorola.com * Gets the value for ims service/capabilities parameters from the provisioned 62a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * value storage. Synchronous blocking call. 63a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 64a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 65a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @return value in String format. 66a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 672cdac3bd53a1e8e8342a3cff9d53bb7c5b27b1c9Libin.Tang@motorola.com String getProvisionedStringValue(int item); 68a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 69a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 70a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Sets the value for IMS service/capabilities parameters by the operator device 71a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * management entity. It sets the config item value in the provisioned storage 72a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * from which the master value is derived. Synchronous blocking call. 73a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 74a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 75a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param value in Integer format. 76846b71daaf4468c01e5371ee64e19327f7c094f1Libin.Tang@motorola.com * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants. 77a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 78846b71daaf4468c01e5371ee64e19327f7c094f1Libin.Tang@motorola.com int setProvisionedValue(int item, int value); 79a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 80a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 81a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Sets the value for IMS service/capabilities parameters by the operator device 82a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * management entity. It sets the config item value in the provisioned storage 83a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * from which the master value is derived. Synchronous blocking call. 84a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 85a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 86a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param value in String format. 87846b71daaf4468c01e5371ee64e19327f7c094f1Libin.Tang@motorola.com * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants. 88a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 89846b71daaf4468c01e5371ee64e19327f7c094f1Libin.Tang@motorola.com int setProvisionedStringValue(int item, String value); 90a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 91a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 92a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Gets the value of the specified IMS feature item for specified network type. 93a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * This operation gets the feature config value from the master storage (i.e. final 94a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * value). Asynchronous non-blocking call. 95a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 96a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param feature. as defined in com.android.ims.ImsConfig#FeatureConstants. 97a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param network. as defined in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. 98a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param listener. feature value returned asynchronously through listener. 99a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @return void 100a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 101a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen oneway void getFeatureValue(int feature, int network, ImsConfigListener listener); 102a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen 103a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen /** 104a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * Sets the value for IMS feature item for specified network type. 105a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * This operation stores the user setting in setting db from which master db 106a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * is dervied. 107a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * 108a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param feature. as defined in com.android.ims.ImsConfig#FeatureConstants. 109a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param network. as defined in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. 110a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param value. as defined in com.android.ims.ImsConfig#FeatureValueConstants. 111a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @param listener, provided if caller needs to be notified for set result. 112a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen * @return void 113a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen */ 114a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen oneway void setFeatureValue(int feature, int network, int value, ImsConfigListener listener); 115bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com 116bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com /** 117bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com * Gets the value for IMS volte provisioned. 118bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com * This should be the same as the operator provisioned value if applies. 119bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com * 120bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com * @return void 121bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com */ 122bec2c3e25124552c6c86a1c1723ce3562edcaaffLibin.Tang@motorola.com boolean getVolteProvisioned(); 123a4d88d1e6e0af284b5ecccc5d55bfcdaa2f784a8Etan Cohen} 124