aboutsummaryrefslogtreecommitdiff
path: root/host/commands/modem_simulator/sim_service.h
diff options
context:
space:
mode:
Diffstat (limited to 'host/commands/modem_simulator/sim_service.h')
-rw-r--r--host/commands/modem_simulator/sim_service.h271
1 files changed, 0 insertions, 271 deletions
diff --git a/host/commands/modem_simulator/sim_service.h b/host/commands/modem_simulator/sim_service.h
deleted file mode 100644
index 7cccfcb51..000000000
--- a/host/commands/modem_simulator/sim_service.h
+++ /dev/null
@@ -1,271 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma once
-
-#include <tinyxml2.h>
-
-#include "host/commands/modem_simulator/modem_service.h"
-
-namespace cuttlefish {
-
-using namespace tinyxml2;
-
-class NetworkService;
-
-class SimService : public ModemService, public std::enable_shared_from_this<SimService> {
- public:
- SimService(int32_t service_id, ChannelMonitor* channel_monitor,
- ThreadLooper* thread_looper);
- ~SimService() = default;
-
- SimService(const SimService &) = delete;
- SimService &operator=(const SimService &) = delete;
-
- void SetupDependency(NetworkService* net);
-
- void HandleSIMStatusReq(const Client& client);
- void HandleChangeOrEnterPIN(const Client& client, const std::string& command);
- void HandleSIM_IO(const Client& client, const std::string& command);
- void HandleCSIM_IO(const Client& client, const std::string& command);
- void HandleGetIMSI(const Client& client);
- void HandleGetIccId(const Client& client);
- void HandleFacilityLock(const Client& client, const std::string& command);
- void HandleOpenLogicalChannel(const Client& client,
- const std::string& command);
- void HandleCloseLogicalChannel(const Client& client,
- const std::string& command);
- void HandleTransmitLogicalChannel(const Client& client,
- const std::string& command);
- void HandleChangePassword(const Client& client, const std::string& command);
- void HandleQueryRemainTimes(const Client& client, const std::string& command);
- void HandleCdmaSubscriptionSource(const Client& client,
- const std::string& command);
- void HandleCdmaRoamingPreference(const Client& client,
- const std::string& command);
- void HandleSimAuthentication(const Client& client,
- const std::string& command);
-
- void SavePinStateToIccProfile();
- void SaveFacilityLockToIccProfile();
- bool IsFDNEnabled();
- bool IsFixedDialNumber(std::string_view number);
- XMLElement* GetIccProfile();
- std::string GetPhoneNumber();
-
- enum SimStatus {
- SIM_STATUS_ABSENT = 0,
- SIM_STATUS_NOT_READY,
- SIM_STATUS_READY,
- SIM_STATUS_PIN,
- SIM_STATUS_PUK,
- };
-
- SimStatus GetSimStatus() const;
- std::string GetSimOperator();
-
- private:
- void InitializeServiceState();
- std::vector<CommandHandler> InitializeCommandHandlers();
- void InitializeSimFileSystemAndSimState();
- void InitializeFacilityLock();
- void OnSimStatusChanged();
-
- NetworkService* network_service_;
-
- /* SimStatus */
- SimStatus sim_status_;
-
- /* SimFileSystem */
- struct SimFileSystem {
- enum EFId: int32_t {
- EF_ADN = 0x6F3A,
- EF_FDN = 0x6F3B,
- EF_GID1 = 0x6F3E,
- EF_GID2 = 0x6F3F,
- EF_SDN = 0x6F49,
- EF_EXT1 = 0x6F4A,
- EF_EXT2 = 0x6F4B,
- EF_EXT3 = 0x6F4C,
- EF_EXT5 = 0x6F4E,
- EF_EXT6 = 0x6FC8, // Ext record for EF[MBDN]
- EF_MWIS = 0x6FCA,
- EF_MBDN = 0x6FC7,
- EF_PNN = 0x6FC5,
- EF_OPL = 0x6FC6,
- EF_SPN = 0x6F46,
- EF_SMS = 0x6F3C,
- EF_ICCID = 0x2FE2,
- EF_AD = 0x6FAD,
- EF_MBI = 0x6FC9,
- EF_MSISDN = 0x6F40,
- EF_SPDI = 0x6FCD,
- EF_SST = 0x6F38,
- EF_CFIS = 0x6FCB,
- EF_IMG = 0x4F20,
-
- // USIM SIM file ids from TS 131.102
- EF_PBR = 0x4F30,
- EF_LI = 0x6F05,
-
- // GSM SIM file ids from CPHS (phase 2, version 4.2) CPHS4_2.WW6
- EF_MAILBOX_CPHS = 0x6F17,
- EF_VOICE_MAIL_INDICATOR_CPHS = 0x6F11,
- EF_CFF_CPHS = 0x6F13,
- EF_SPN_CPHS = 0x6F14,
- EF_SPN_SHORT_CPHS = 0x6F18,
- EF_INFO_CPHS = 0x6F16,
- EF_CSP_CPHS = 0x6F15,
-
- // CDMA RUIM file ids from 3GPP2 C.S0023-0
- EF_CST = 0x6F32,
- EF_RUIM_SPN =0x6F41,
-
- // ETSI TS.102.221
- EF_PL = 0x2F05,
- // 3GPP2 C.S0065
- EF_CSIM_LI = 0x6F3A,
- EF_CSIM_SPN =0x6F41,
- EF_CSIM_MDN = 0x6F44,
- EF_CSIM_IMSIM = 0x6F22,
- EF_CSIM_CDMAHOME = 0x6F28,
- EF_CSIM_EPRL = 0x6F5A,
- EF_CSIM_MIPUPP = 0x6F4D,
-
- //ISIM access
- EF_IMPU = 0x6F04,
- EF_IMPI = 0x6F02,
- EF_DOMAIN = 0x6F03,
- EF_IST = 0x6F07,
- EF_PCSCF = 0x6F09,
- EF_PSI = 0x6FE5,
-
- //PLMN Selection Information w/ Access Technology TS 131.102
- EF_PLMN_W_ACT = 0x6F60,
- EF_OPLMN_W_ACT = 0x6F61,
- EF_HPLMN_W_ACT = 0x6F62,
-
- //Equivalent Home and Forbidden PLMN Lists TS 131.102
- EF_EHPLMN = 0x6FD9,
- EF_FPLMN = 0x6F7B,
-
- // Last Roaming Selection Indicator
- EF_LRPLMNSI = 0x6FDC,
-
- //Search interval for higher priority PLMNs
- EF_HPPLMN = 0x6F31,
- };
-
- XMLElement* GetRootElement();
-
- static std::string GetCommonIccEFPath(EFId efid);
- static std::string GetUsimEFPath(EFId efid);
-
- static XMLElement *FindAttribute(XMLElement* parent,
- const std::string& attr_name,
- const std::string& attr_value);
-
- XMLElement* AppendNewElement(XMLElement* parent, const char* name);
- XMLElement* AppendNewElementWithText(XMLElement* parent, const char* name,
- const char* text);
-
- XMLDocument doc;
- std::string file_path;
- };
- SimFileSystem sim_file_system_;
-
-
- /* PinStatus */
- struct PinStatus {
- enum ChangeMode {WITH_PIN, WITH_PUK};
-
- std::string pin_;
- std::string puk_;
- int pin_remaining_times_;
- int puk_remaining_times_;
-
- bool CheckPasswordValid(std::string_view password);
-
- bool VerifyPIN(const std::string_view pin);
- bool VerifyPUK(const std::string_view puk);
- bool ChangePIN(ChangeMode mode, const std::string_view pin_or_puk,
- const std::string_view new_pin);
- bool ChangePUK(const std::string_view puk, const std::string_view new_puk);
- };
- PinStatus pin1_status_;
- PinStatus pin2_status_;
-
- bool checkPin1AndAdjustSimStatus(std::string_view password);
- bool ChangePin1AndAdjustSimStatus(PinStatus::ChangeMode mode,
- std::string_view pin,
- std::string_view new_pin);
-
- /* FacilityLock */
- struct FacilityLock {
- enum LockType {
- AO = 1, // Barr all outgoing calls
- OI = 2, // Barr all outgoing international calls
- OX = 3, // Barr all outgoing international calls, except to Home Country
- AI = 4, // Barr all incoming calls
- IR = 5, // Barr all call, when roaming outside Home Country
- AB = 6, // All barring services
- AG = 7, // All outgoing barring services
- AC = 8, // All incoming barring services
- SC = 9, // PIN enable/disable
- FD = 10, // SIM fixed FDN dialing lock, PIN2 is required as a password
- };
-
- enum Mode {
- UNLOCK = 0,
- LOCK = 1,
- QUERY = 2,
- };
-
- enum Class : int32_t {
- DEFAULT = 7, // all classes
- VOICE = 1 << 0, // telephony
- DATA = 1 << 1, // to all bear service
- FAX = 1 << 2, // facsimile services
- SMS = 1 << 3, // short message services
- };
-
- enum LockStatus {
- DISABLE,
- ENABLE,
- };
-
- LockStatus lock_status; // Ignore class
-
- FacilityLock(LockStatus status) : lock_status(status) {}
- };
- std::map<std::string, FacilityLock> facility_lock_;
-
- /* LogicalChannel */
- struct LogicalChannel {
- std::string df_name;
- bool is_open;
- int session_id;
-
- LogicalChannel(int session_id) :
- df_name(""), is_open(false), session_id(session_id) {};
- };
- std::vector<LogicalChannel> logical_channels_;
- std::string last_file_id_;
-
- int cdma_subscription_source_;
- int cdma_roaming_preference_;
-};
-
-} // namespace cuttlefish