1 /*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "incall_data_state_machine.h"
17
18 #include "cellular_data_settings_rdb_helper.h"
19 #include "core_manager_inner.h"
20 #include "telephony_log_wrapper.h"
21 #include "telephony_types.h"
22
23 namespace OHOS {
24 namespace Telephony {
UpdateCallState(int32_t state)25 void IncallDataStateMachine::UpdateCallState(int32_t state)
26 {
27 callState_ = state;
28 }
29
GetCallState() const30 int32_t IncallDataStateMachine::GetCallState() const
31 {
32 return callState_;
33 }
34
HasAnyConnectedState() const35 bool IncallDataStateMachine::HasAnyConnectedState() const
36 {
37 if (apnManager_ != nullptr) {
38 return apnManager_->HasAnyConnectedState();
39 }
40 return false;
41 }
42
GetSlotId() const43 int32_t IncallDataStateMachine::GetSlotId() const
44 {
45 return slotId_;
46 }
47
IsIncallDataSwitchOn()48 bool IncallDataStateMachine::IsIncallDataSwitchOn()
49 {
50 std::shared_ptr<CellularDataSettingsRdbHelper> settingHelper = CellularDataSettingsRdbHelper::GetInstance();
51 if (settingHelper == nullptr) {
52 TELEPHONY_LOGE("settingHelper null!");
53 return false;
54 }
55 int32_t value = static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_DISABLED);
56 int32_t intelligenceNetworkValue = static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_DISABLED);
57 Uri intelligenceNetworkUri(CELLULAR_DATA_SETTING_INTELLIGENCE_NETWORK_URI);
58 if (settingHelper->GetValue(
59 intelligenceNetworkUri, INTELLIGENCE_NETWORK_COLUMN_ENABLE,
60 intelligenceNetworkValue) != TELEPHONY_SUCCESS) {
61 TELEPHONY_LOGE("GetValue failed!");
62 return false;
63 }
64 int32_t smartDualCardValue = static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_DISABLED);
65 Uri smartDualCardUri(CELLULAR_DATA_SETTING_INTELLIGENCE_SWITCH_URI);
66 if (settingHelper->GetValue(
67 smartDualCardUri, INTELLIGENCE_SWITCH_COLUMN_ENABLE, smartDualCardValue) != TELEPHONY_SUCCESS) {
68 TELEPHONY_LOGE("GetValue failed!");
69 return false;
70 }
71 value = (intelligenceNetworkValue == static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_ENABLED) &&
72 smartDualCardValue == static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_ENABLED)) ?
73 static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_ENABLED) :
74 static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_DISABLED);
75 TELEPHONY_LOGI("Slot%{public}d: value=%{public}d", slotId_, value);
76 return value == static_cast<int32_t>(DataSwitchCode::CELLULAR_DATA_ENABLED);
77 }
78
IsSecondaryCanActiveData()79 bool IncallDataStateMachine::IsSecondaryCanActiveData()
80 {
81 int32_t dsdsMode = DSDS_MODE_V2;
82 CoreManagerInner::GetInstance().GetDsdsMode(dsdsMode);
83 if (dsdsMode >= DSDS_MODE_V3) {
84 TELEPHONY_LOGI("Slot%{public}d: not dsds 2.0", slotId_);
85 return false;
86 }
87 int32_t primarySlotId = INVALID_SLOT_ID;
88 CoreManagerInner::GetInstance().GetPrimarySlotId(primarySlotId);
89 if (primarySlotId == INVALID_SLOT_ID || primarySlotId == slotId_) {
90 TELEPHONY_LOGI("Slot%{public}d: not secondary sim card", slotId_);
91 return false;
92 }
93 bool hasPrimarySimCard = false;
94 CoreManagerInner::GetInstance().HasSimCard(primarySlotId, hasPrimarySimCard);
95 if (!hasPrimarySimCard) {
96 TELEPHONY_LOGI("Slot%{public}d: no primary sim card", slotId_);
97 return false;
98 }
99 ImsRegInfo voiceInfo;
100 CoreManagerInner::GetInstance().GetImsRegStatus(slotId_, ImsServiceType::TYPE_VOICE, voiceInfo);
101 ImsRegInfo videoInfo;
102 CoreManagerInner::GetInstance().GetImsRegStatus(slotId_, ImsServiceType::TYPE_VIDEO, videoInfo);
103 if (voiceInfo.imsRegState != ImsRegState::IMS_REGISTERED && videoInfo.imsRegState != ImsRegState::IMS_REGISTERED) {
104 TELEPHONY_LOGI("Slot%{public}d: not ims call", slotId_);
105 return false;
106 }
107 if (callState_ == static_cast<int32_t>(TelCallStatus::CALL_STATUS_IDLE) ||
108 callState_ == static_cast<int32_t>(TelCallStatus::CALL_STATUS_DISCONNECTED)) {
109 TELEPHONY_LOGI("Slot%{public}d: not in call", slotId_);
110 return false;
111 }
112 return CanActiveDataByRadioTech();
113 }
114
CanActiveDataByRadioTech()115 bool IncallDataStateMachine::CanActiveDataByRadioTech()
116 {
117 int32_t radioTech = static_cast<int32_t>(RadioTech::RADIO_TECHNOLOGY_INVALID);
118 CoreManagerInner::GetInstance().GetPsRadioTech(slotId_, radioTech);
119 switch (static_cast<RadioTech>(radioTech)) {
120 case RadioTech::RADIO_TECHNOLOGY_WCDMA:
121 // fall_through
122 case RadioTech::RADIO_TECHNOLOGY_HSPA:
123 // fall_through
124 case RadioTech::RADIO_TECHNOLOGY_HSPAP:
125 // fall_through
126 case RadioTech::RADIO_TECHNOLOGY_LTE:
127 // fall_through
128 case RadioTech::RADIO_TECHNOLOGY_LTE_CA:
129 // fall_through
130 case RadioTech::RADIO_TECHNOLOGY_NR:
131 return true;
132 default:
133 return false;
134 }
135 }
136
Init(int32_t callState)137 void IncallDataStateMachine::Init(int32_t callState)
138 {
139 idleState_ = new (std::nothrow) IdleState(std::weak_ptr<IncallDataStateMachine>(shared_from_this()), "IdleState");
140 secondaryActiveState_ = new (std::nothrow)
141 SecondaryActiveState(std::weak_ptr<IncallDataStateMachine>(shared_from_this()), "SecondaryActiveState");
142 activatingSecondaryState_ = new (std::nothrow)
143 ActivatingSecondaryState(std::weak_ptr<IncallDataStateMachine>(shared_from_this()), "ActivatingSecondaryState");
144 activatedSecondaryState_ = new (std::nothrow)
145 ActivatedSecondaryState(std::weak_ptr<IncallDataStateMachine>(shared_from_this()), "ActivatedSecondaryState");
146 deactivatingSecondaryState_ = new (std::nothrow) DeactivatingSecondaryState(
147 std::weak_ptr<IncallDataStateMachine>(shared_from_this()), "DeactivatingSecondaryState");
148 if (idleState_ == nullptr || secondaryActiveState_ == nullptr || activatingSecondaryState_ == nullptr ||
149 activatedSecondaryState_ == nullptr || deactivatingSecondaryState_ == nullptr) {
150 TELEPHONY_LOGE("memory allocation failed");
151 return;
152 }
153 activatingSecondaryState_->SetParentState(secondaryActiveState_);
154 activatedSecondaryState_->SetParentState(secondaryActiveState_);
155 callState_ = callState;
156 StateMachine::SetOriginalState(idleState_);
157 StateMachine::Start();
158 }
159
SetCurrentState(const sptr<State> && state)160 void IncallDataStateMachine::SetCurrentState(const sptr<State> &&state)
161 {
162 currentState_ = std::move(state);
163 }
164
GetCurrentState() const165 sptr<State> IncallDataStateMachine::GetCurrentState() const
166 {
167 return currentState_;
168 }
169
IsSecondaryActiveState() const170 bool IncallDataStateMachine::IsSecondaryActiveState() const
171 {
172 return currentState_ == activatingSecondaryState_ || currentState_ == activatedSecondaryState_;
173 }
174
StateBegin()175 void IdleState::StateBegin()
176 {
177 TELEPHONY_LOGI("Enter Idle State");
178 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
179 if (stateMachine == nullptr) {
180 TELEPHONY_LOGE("stateMachine is null");
181 return;
182 }
183 isActive_ = true;
184 stateMachine->SetCurrentState(sptr<State>(this));
185 if (stateMachine->GetCallState() == static_cast<int32_t>(TelCallStatus::CALL_STATUS_IDLE) ||
186 stateMachine->GetCallState() == static_cast<int32_t>(TelCallStatus::CALL_STATUS_DISCONNECTED)) {
187 std::shared_ptr<TelEventHandler> eventHandler = stateMachine->cellularDataHandler_.lock();
188 if (eventHandler != nullptr) {
189 eventHandler->SendEvent(CellularDataEventCode::MSG_INCALL_DATA_COMPLETE);
190 }
191 }
192 }
193
StateEnd()194 void IdleState::StateEnd()
195 {
196 TELEPHONY_LOGI("Exit Idle State");
197 isActive_ = false;
198 }
199
StateProcess(const AppExecFwk::InnerEvent::Pointer & event)200 bool IdleState::StateProcess(const AppExecFwk::InnerEvent::Pointer &event)
201 {
202 if (event == nullptr) {
203 TELEPHONY_LOGE("event is null");
204 return NOT_PROCESSED;
205 }
206 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
207 if (stateMachine == nullptr) {
208 TELEPHONY_LOGE("stateMachine is null");
209 return NOT_PROCESSED;
210 }
211 uint32_t eventCode = event->GetInnerEventId();
212 std::map<uint32_t, Fun>::iterator it = eventIdFunMap_.find(eventCode);
213 if (it != eventIdFunMap_.end()) {
214 return it->second(event);
215 }
216 return NOT_PROCESSED;
217 }
218
ProcessCallStarted(const AppExecFwk::InnerEvent::Pointer & event)219 bool IdleState::ProcessCallStarted(const AppExecFwk::InnerEvent::Pointer &event)
220 {
221 TELEPHONY_LOGI("IdleState::MSG_SM_INCALL_DATA_CALL_STARTED");
222 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
223 if (stateMachine == nullptr) {
224 TELEPHONY_LOGE("stateMachine is null");
225 return NOT_PROCESSED;
226 }
227 if (stateMachine->IsIncallDataSwitchOn() && stateMachine->IsSecondaryCanActiveData()) {
228 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
229 if (defaultSlotId != stateMachine->GetSlotId()) {
230 stateMachine->TransitionTo(stateMachine->activatingSecondaryState_);
231 CoreManagerInner::GetInstance().SetDefaultCellularDataSlotId(stateMachine->GetSlotId());
232 }
233 }
234 return PROCESSED;
235 }
236
ProcessCallEnded(const AppExecFwk::InnerEvent::Pointer & event)237 bool IdleState::ProcessCallEnded(const AppExecFwk::InnerEvent::Pointer &event)
238 {
239 TELEPHONY_LOGI("IdleState::MSG_SM_INCALL_DATA_CALL_ENDED");
240 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
241 if (stateMachine == nullptr) {
242 TELEPHONY_LOGE("stateMachine is null");
243 return NOT_PROCESSED;
244 }
245 if (stateMachine->stateMachineEventHandler_ == nullptr) {
246 TELEPHONY_LOGE("stateMachineEventHandler_ is null");
247 return NOT_PROCESSED;
248 }
249 if (stateMachine->stateMachineEventHandler_->HasInnerEvent(
250 CellularDataEventCode::MSG_SM_INCALL_DATA_DSDS_CHANGED)) {
251 stateMachine->stateMachineEventHandler_->RemoveEvent(CellularDataEventCode::MSG_SM_INCALL_DATA_DSDS_CHANGED);
252 }
253 std::shared_ptr<TelEventHandler> eventHandler = stateMachine->cellularDataHandler_.lock();
254 if (eventHandler != nullptr) {
255 eventHandler->SendEvent(CellularDataEventCode::MSG_INCALL_DATA_COMPLETE);
256 }
257 return PROCESSED;
258 }
259
ProcessSettingsOn(const AppExecFwk::InnerEvent::Pointer & event)260 bool IdleState::ProcessSettingsOn(const AppExecFwk::InnerEvent::Pointer &event)
261 {
262 TELEPHONY_LOGI("IdleState::MSG_SM_INCALL_DATA_SETTINGS_ON");
263 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
264 if (stateMachine == nullptr) {
265 TELEPHONY_LOGE("stateMachine is null");
266 return NOT_PROCESSED;
267 }
268 if (stateMachine->IsIncallDataSwitchOn() && stateMachine->IsSecondaryCanActiveData()) {
269 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
270 if (defaultSlotId != stateMachine->GetSlotId()) {
271 stateMachine->TransitionTo(stateMachine->activatingSecondaryState_);
272 CoreManagerInner::GetInstance().SetDefaultCellularDataSlotId(stateMachine->GetSlotId());
273 }
274 }
275 return PROCESSED;
276 }
277
ProcessDsdsChanged(const AppExecFwk::InnerEvent::Pointer & event)278 bool IdleState::ProcessDsdsChanged(const AppExecFwk::InnerEvent::Pointer &event)
279 {
280 TELEPHONY_LOGI("IdleState::MSG_SM_INCALL_DATA_DSDS_CHANGED");
281 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
282 if (stateMachine == nullptr) {
283 TELEPHONY_LOGE("stateMachine is null");
284 return NOT_PROCESSED;
285 }
286 if (stateMachine->IsIncallDataSwitchOn() && stateMachine->IsSecondaryCanActiveData()) {
287 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
288 if (defaultSlotId != stateMachine->GetSlotId()) {
289 stateMachine->TransitionTo(stateMachine->activatingSecondaryState_);
290 CoreManagerInner::GetInstance().SetDefaultCellularDataSlotId(stateMachine->GetSlotId());
291 }
292 }
293 return PROCESSED;
294 }
295
StateBegin()296 void SecondaryActiveState::StateBegin()
297 {
298 TELEPHONY_LOGI("Enter SecondaryActive State");
299 isActive_ = true;
300 }
301
StateEnd()302 void SecondaryActiveState::StateEnd()
303 {
304 TELEPHONY_LOGI("Exit SecondaryActive State");
305 isActive_ = false;
306 }
307
StateProcess(const AppExecFwk::InnerEvent::Pointer & event)308 bool SecondaryActiveState::StateProcess(const AppExecFwk::InnerEvent::Pointer &event)
309 {
310 if (event == nullptr) {
311 TELEPHONY_LOGE("event is null");
312 return NOT_PROCESSED;
313 }
314 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
315 if (stateMachine == nullptr) {
316 TELEPHONY_LOGE("stateMachine is null");
317 return NOT_PROCESSED;
318 }
319 uint32_t eventCode = event->GetInnerEventId();
320 std::map<uint32_t, Fun>::iterator it = eventIdFunMap_.find(eventCode);
321 if (it != eventIdFunMap_.end()) {
322 return it->second(event);
323 }
324 return NOT_PROCESSED;
325 }
326
ProcessSettingsOn(const AppExecFwk::InnerEvent::Pointer & event)327 bool SecondaryActiveState::ProcessSettingsOn(const AppExecFwk::InnerEvent::Pointer &event)
328 {
329 TELEPHONY_LOGI("SecondaryActiveState::MSG_SM_INCALL_DATA_SETTINGS_ON");
330 return PROCESSED;
331 }
332
ProcessCallEnded(const AppExecFwk::InnerEvent::Pointer & event)333 bool SecondaryActiveState::ProcessCallEnded(const AppExecFwk::InnerEvent::Pointer &event)
334 {
335 TELEPHONY_LOGI("SecondaryActiveState::MSG_SM_INCALL_DATA_CALL_ENDED");
336 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
337 if (stateMachine == nullptr) {
338 TELEPHONY_LOGE("stateMachine is null");
339 return NOT_PROCESSED;
340 }
341 if (stateMachine->GetCallState() == static_cast<int32_t>(TelCallStatus::CALL_STATUS_IDLE) ||
342 stateMachine->GetCallState() == static_cast<int32_t>(TelCallStatus::CALL_STATUS_DISCONNECTED)) {
343 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
344 int32_t primarySlotId = INVALID_SLOT_ID;
345 CoreManagerInner::GetInstance().GetPrimarySlotId(primarySlotId);
346 if (defaultSlotId != primarySlotId) {
347 stateMachine->TransitionTo(stateMachine->deactivatingSecondaryState_);
348 } else {
349 stateMachine->TransitionTo(stateMachine->idleState_);
350 }
351 }
352 return PROCESSED;
353 }
354
ProcessSettingsOff(const AppExecFwk::InnerEvent::Pointer & event)355 bool SecondaryActiveState::ProcessSettingsOff(const AppExecFwk::InnerEvent::Pointer &event)
356 {
357 TELEPHONY_LOGI("SecondaryActiveState::MSG_SM_INCALL_DATA_SETTINGS_OFF");
358 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
359 if (stateMachine == nullptr) {
360 TELEPHONY_LOGE("stateMachine is null");
361 return NOT_PROCESSED;
362 }
363 if (!stateMachine->IsIncallDataSwitchOn()) {
364 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
365 int32_t primarySlotId = INVALID_SLOT_ID;
366 CoreManagerInner::GetInstance().GetPrimarySlotId(primarySlotId);
367 if (defaultSlotId != primarySlotId) {
368 stateMachine->TransitionTo(stateMachine->deactivatingSecondaryState_);
369 } else {
370 stateMachine->TransitionTo(stateMachine->idleState_);
371 }
372 }
373 return PROCESSED;
374 }
375
ProcessDsdsChanged(const AppExecFwk::InnerEvent::Pointer & event)376 bool SecondaryActiveState::ProcessDsdsChanged(const AppExecFwk::InnerEvent::Pointer &event)
377 {
378 TELEPHONY_LOGI("SecondaryActiveState::MSG_SM_INCALL_DATA_DSDS_CHANGED");
379 return PROCESSED;
380 }
381
StateBegin()382 void ActivatingSecondaryState::StateBegin()
383 {
384 TELEPHONY_LOGI("Enter ActivatingSecondary State");
385 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
386 if (stateMachine == nullptr) {
387 TELEPHONY_LOGE("stateMachine is null");
388 return;
389 }
390 isActive_ = true;
391 stateMachine->SetCurrentState(sptr<State>(this));
392 }
393
StateEnd()394 void ActivatingSecondaryState::StateEnd()
395 {
396 TELEPHONY_LOGI("Exit ActivatingSecondary State");
397 isActive_ = false;
398 }
399
StateProcess(const AppExecFwk::InnerEvent::Pointer & event)400 bool ActivatingSecondaryState::StateProcess(const AppExecFwk::InnerEvent::Pointer &event)
401 {
402 if (event == nullptr) {
403 TELEPHONY_LOGE("event is null");
404 return NOT_PROCESSED;
405 }
406 uint32_t eventCode = event->GetInnerEventId();
407 if (eventCode == CellularDataEventCode::MSG_SM_INCALL_DATA_DATA_CONNECTED) {
408 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
409 if (stateMachine == nullptr) {
410 TELEPHONY_LOGE("stateMachine is null");
411 return NOT_PROCESSED;
412 }
413 stateMachine->TransitionTo(stateMachine->activatedSecondaryState_);
414 return PROCESSED;
415 }
416 return NOT_PROCESSED;
417 }
418
StateBegin()419 void ActivatedSecondaryState::StateBegin()
420 {
421 TELEPHONY_LOGI("Enter ActivatedSecondary State");
422 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
423 if (stateMachine == nullptr) {
424 TELEPHONY_LOGE("stateMachine is null");
425 return;
426 }
427 isActive_ = true;
428 stateMachine->SetCurrentState(sptr<State>(this));
429 }
430
StateEnd()431 void ActivatedSecondaryState::StateEnd()
432 {
433 TELEPHONY_LOGI("Exit ActivatedSecondary State");
434 isActive_ = false;
435 }
436
StateProcess(const AppExecFwk::InnerEvent::Pointer & event)437 bool ActivatedSecondaryState::StateProcess(const AppExecFwk::InnerEvent::Pointer &event)
438 {
439 return NOT_PROCESSED;
440 }
441
StateBegin()442 void DeactivatingSecondaryState::StateBegin()
443 {
444 TELEPHONY_LOGI("Enter DeactivatingSecondary State");
445 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
446 if (stateMachine == nullptr) {
447 TELEPHONY_LOGE("stateMachine is null");
448 return;
449 }
450 isActive_ = true;
451 stateMachine->SetCurrentState(sptr<State>(this));
452 int32_t defaultSlotId = CoreManagerInner::GetInstance().GetDefaultCellularDataSlotId();
453 int32_t primarySlotId = INVALID_SLOT_ID;
454 CoreManagerInner::GetInstance().GetPrimarySlotId(primarySlotId);
455 if (defaultSlotId != primarySlotId) {
456 CoreManagerInner::GetInstance().SetDefaultCellularDataSlotId(primarySlotId);
457 } else {
458 stateMachine->TransitionTo(stateMachine->idleState_);
459 }
460 if (!stateMachine->HasAnyConnectedState()) {
461 stateMachine->TransitionTo(stateMachine->idleState_);
462 }
463 }
464
StateEnd()465 void DeactivatingSecondaryState::StateEnd()
466 {
467 TELEPHONY_LOGI("Exit DeactivatingSecondary State");
468 isActive_ = false;
469 }
470
StateProcess(const AppExecFwk::InnerEvent::Pointer & event)471 bool DeactivatingSecondaryState::StateProcess(const AppExecFwk::InnerEvent::Pointer &event)
472 {
473 if (event == nullptr) {
474 TELEPHONY_LOGE("event is null");
475 return NOT_PROCESSED;
476 }
477 uint32_t eventCode = event->GetInnerEventId();
478 if (eventCode == CellularDataEventCode::MSG_SM_INCALL_DATA_DATA_DISCONNECTED) {
479 std::shared_ptr<IncallDataStateMachine> stateMachine = stateMachine_.lock();
480 if (stateMachine == nullptr) {
481 TELEPHONY_LOGE("stateMachine is null");
482 return NOT_PROCESSED;
483 }
484 int32_t primarySlotId = INVALID_SLOT_ID;
485 CoreManagerInner::GetInstance().GetPrimarySlotId(primarySlotId);
486 if (stateMachine->GetSlotId() != primarySlotId) {
487 stateMachine->TransitionTo(stateMachine->idleState_);
488 }
489 return PROCESSED;
490 }
491 if (eventCode == CellularDataEventCode::MSG_SM_INCALL_DATA_SETTINGS_ON) {
492 return PROCESSED;
493 }
494 return NOT_PROCESSED;
495 }
496 } // namespace Telephony
497 } // namespace OHOS
498