1*7eba2f3bSAndroid Build Coastguard Worker /* 2*7eba2f3bSAndroid Build Coastguard Worker * Copyright 2017 The Android Open Source Project 3*7eba2f3bSAndroid Build Coastguard Worker * 4*7eba2f3bSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*7eba2f3bSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*7eba2f3bSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*7eba2f3bSAndroid Build Coastguard Worker * 8*7eba2f3bSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*7eba2f3bSAndroid Build Coastguard Worker * 10*7eba2f3bSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*7eba2f3bSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*7eba2f3bSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*7eba2f3bSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*7eba2f3bSAndroid Build Coastguard Worker * limitations under the License. 15*7eba2f3bSAndroid Build Coastguard Worker */ 16*7eba2f3bSAndroid Build Coastguard Worker #pragma once 17*7eba2f3bSAndroid Build Coastguard Worker 18*7eba2f3bSAndroid Build Coastguard Worker #include <config.h> 19*7eba2f3bSAndroid Build Coastguard Worker 20*7eba2f3bSAndroid Build Coastguard Worker #include <string> 21*7eba2f3bSAndroid Build Coastguard Worker #include <vector> 22*7eba2f3bSAndroid Build Coastguard Worker 23*7eba2f3bSAndroid Build Coastguard Worker /* Configs from libnfc-nci.conf */ 24*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFC_DEBUG_ENABLED "NFC_DEBUG_ENABLED" 25*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_STORAGE "NFA_STORAGE" 26*7eba2f3bSAndroid Build Coastguard Worker #define NAME_PRESERVE_STORAGE "PRESERVE_STORAGE" 27*7eba2f3bSAndroid Build Coastguard Worker #define NAME_POLLING_TECH_MASK "POLLING_TECH_MASK" 28*7eba2f3bSAndroid Build Coastguard Worker #define NAME_UICC_LISTEN_TECH_MASK "UICC_LISTEN_TECH_MASK" 29*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFFHOST_LISTEN_TECH_MASK "OFFHOST_LISTEN_TECH_MASK" 30*7eba2f3bSAndroid Build Coastguard Worker #define NAME_HOST_LISTEN_TECH_MASK "HOST_LISTEN_TECH_MASK" 31*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_DM_CFG "NFA_DM_CFG" 32*7eba2f3bSAndroid Build Coastguard Worker #define NAME_SCREEN_OFF_POWER_STATE "SCREEN_OFF_POWER_STATE" 33*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_MAX_EE_SUPPORTED "NFA_MAX_EE_SUPPORTED" 34*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_DM_DISC_DURATION_POLL "NFA_DM_DISC_DURATION_POLL" 35*7eba2f3bSAndroid Build Coastguard Worker #define NAME_POLL_FREQUENCY "POLL_FREQUENCY" 36*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_AID_BLOCK_ROUTE "NFA_AID_BLOCK_ROUTE" 37*7eba2f3bSAndroid Build Coastguard Worker #define NAME_AID_FOR_EMPTY_SELECT "AID_FOR_EMPTY_SELECT" 38*7eba2f3bSAndroid Build Coastguard Worker #define NAME_AID_MATCHING_MODE "AID_MATCHING_MODE" 39*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFFHOST_AID_ROUTE_PWR_STATE "OFFHOST_AID_ROUTE_PWR_STATE" 40*7eba2f3bSAndroid Build Coastguard Worker #define NAME_RECOVERY_OPTION "RECOVERY_OPTION" 41*7eba2f3bSAndroid Build Coastguard Worker #define NAME_ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF \ 42*7eba2f3bSAndroid Build Coastguard Worker "ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF" 43*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DISABLE_ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF \ 44*7eba2f3bSAndroid Build Coastguard Worker "DISABLE_ALWAYS_ON_SET_EE_POWER_AND_LINK_CONF" 45*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NCI_RESET_TYPE "NCI_RESET_TYPE" 46*7eba2f3bSAndroid Build Coastguard Worker #define NAME_MUTE_TECH_ROUTE_OPTION "MUTE_TECH_ROUTE_OPTION" 47*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_DM_LISTEN_ACTIVE_DEACT_NTF_TIMEOUT \ 48*7eba2f3bSAndroid Build Coastguard Worker "NFA_DM_LISTEN_ACTIVE_DEACT_NTF_TIMEOUT" 49*7eba2f3bSAndroid Build Coastguard Worker /* Configs from vendor interface */ 50*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE" 51*7eba2f3bSAndroid Build Coastguard Worker #define NAME_PRESENCE_CHECK_ALGORITHM "PRESENCE_CHECK_ALGORITHM" 52*7eba2f3bSAndroid Build Coastguard Worker #define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG" 53*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_OFFHOST_ROUTE "DEFAULT_OFFHOST_ROUTE" 54*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFFHOST_ROUTE_ESE "OFFHOST_ROUTE_ESE" 55*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFFHOST_ROUTE_UICC "OFFHOST_ROUTE_UICC" 56*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_NFCF_ROUTE "DEFAULT_NFCF_ROUTE" 57*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_SYS_CODE "DEFAULT_SYS_CODE" 58*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_SYS_CODE_ROUTE "DEFAULT_SYS_CODE_ROUTE" 59*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_SYS_CODE_PWR_STATE "DEFAULT_SYS_CODE_PWR_STATE" 60*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_ROUTE "DEFAULT_ROUTE" 61*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFF_HOST_ESE_PIPE_ID "OFF_HOST_ESE_PIPE_ID" 62*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFF_HOST_SIM_PIPE_ID "OFF_HOST_SIM_PIPE_ID" 63*7eba2f3bSAndroid Build Coastguard Worker #define NAME_OFF_HOST_SIM_PIPE_IDS "OFF_HOST_SIM_PIPE_IDS" 64*7eba2f3bSAndroid Build Coastguard Worker #define NAME_ISO_DEP_MAX_TRANSCEIVE "ISO_DEP_MAX_TRANSCEIVE" 65*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEVICE_HOST_ALLOW_LIST "DEVICE_HOST_ALLOW_LIST" 66*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_ISODEP_ROUTE "DEFAULT_ISODEP_ROUTE" 67*7eba2f3bSAndroid Build Coastguard Worker #define NAME_PRESENCE_CHECK_RETRY_COUNT "PRESENCE_CHECK_RETRY_COUNT" 68*7eba2f3bSAndroid Build Coastguard Worker #define NAME_ISO15693_SKIP_GET_SYS_INFO_CMD "ISO15693_SKIP_GET_SYS_INFO_CMD" 69*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_T4TNFCEE_AID_POWER_STATE "DEFAULT_T4TNFCEE_AID_POWER_STATE" 70*7eba2f3bSAndroid Build Coastguard Worker #define NAME_T4T_NDEF_NFCEE_AID "T4T_NDEF_NFCEE_AID" 71*7eba2f3bSAndroid Build Coastguard Worker #define NAME_DEFAULT_NDEF_NFCEE_ROUTE "DEFAULT_NDEF_NFCEE_ROUTE" 72*7eba2f3bSAndroid Build Coastguard Worker #define NAME_T4T_NFCEE_ENABLE "T4T_NFCEE_ENABLE" 73*7eba2f3bSAndroid Build Coastguard Worker 74*7eba2f3bSAndroid Build Coastguard Worker class NfcConfig { 75*7eba2f3bSAndroid Build Coastguard Worker public: 76*7eba2f3bSAndroid Build Coastguard Worker static bool hasKey(const std::string& key); 77*7eba2f3bSAndroid Build Coastguard Worker static std::string getString(const std::string& key); 78*7eba2f3bSAndroid Build Coastguard Worker static std::string getString(const std::string& key, 79*7eba2f3bSAndroid Build Coastguard Worker std::string default_value); 80*7eba2f3bSAndroid Build Coastguard Worker static unsigned getUnsigned(const std::string& key); 81*7eba2f3bSAndroid Build Coastguard Worker static unsigned getUnsigned(const std::string& key, unsigned default_value); 82*7eba2f3bSAndroid Build Coastguard Worker static std::vector<uint8_t> getBytes(const std::string& key); 83*7eba2f3bSAndroid Build Coastguard Worker static void clear(); 84*7eba2f3bSAndroid Build Coastguard Worker 85*7eba2f3bSAndroid Build Coastguard Worker private: 86*7eba2f3bSAndroid Build Coastguard Worker void loadConfig(); 87*7eba2f3bSAndroid Build Coastguard Worker static NfcConfig& getInstance(); 88*7eba2f3bSAndroid Build Coastguard Worker NfcConfig(); 89*7eba2f3bSAndroid Build Coastguard Worker 90*7eba2f3bSAndroid Build Coastguard Worker ConfigFile config_; 91*7eba2f3bSAndroid Build Coastguard Worker }; 92