12d43be4eSopenharmony_ci/* 22d43be4eSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 32d43be4eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 42d43be4eSopenharmony_ci * you may not use this file except in compliance with the License. 52d43be4eSopenharmony_ci * You may obtain a copy of the License at 62d43be4eSopenharmony_ci * 72d43be4eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 82d43be4eSopenharmony_ci * 92d43be4eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 102d43be4eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 112d43be4eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122d43be4eSopenharmony_ci * See the License for the specific language governing permissions and 132d43be4eSopenharmony_ci * limitations under the License. 142d43be4eSopenharmony_ci */ 152d43be4eSopenharmony_ci 162d43be4eSopenharmony_ci#ifndef DEFAULT_H 172d43be4eSopenharmony_ci#define DEFAULT_H 182d43be4eSopenharmony_ci 192d43be4eSopenharmony_ci#include <memory> 202d43be4eSopenharmony_ci#include <string> 212d43be4eSopenharmony_ci 222d43be4eSopenharmony_ci#include "cellular_data_event_code.h" 232d43be4eSopenharmony_ci#include "cellular_data_state_machine.h" 242d43be4eSopenharmony_ci#include "inner_event.h" 252d43be4eSopenharmony_ci 262d43be4eSopenharmony_cinamespace OHOS { 272d43be4eSopenharmony_cinamespace Telephony { 282d43be4eSopenharmony_ciclass Default : public State { 292d43be4eSopenharmony_cipublic: 302d43be4eSopenharmony_ci Default(std::weak_ptr<CellularDataStateMachine> &&cellularService, std::string &&name) 312d43be4eSopenharmony_ci : State(std::move(name)), stateMachine_(std::move(cellularService)) 322d43be4eSopenharmony_ci {} 332d43be4eSopenharmony_ci virtual ~Default() = default; 342d43be4eSopenharmony_ci virtual void StateBegin(); 352d43be4eSopenharmony_ci virtual void StateEnd(); 362d43be4eSopenharmony_ci virtual bool StateProcess(const AppExecFwk::InnerEvent::Pointer &event); 372d43be4eSopenharmony_ci 382d43be4eSopenharmony_ciprivate: 392d43be4eSopenharmony_ci bool ProcessConnectDone(const AppExecFwk::InnerEvent::Pointer &event); 402d43be4eSopenharmony_ci bool ProcessDisconnectDone(const AppExecFwk::InnerEvent::Pointer &event); 412d43be4eSopenharmony_ci bool ProcessDisconnectAllDone(const AppExecFwk::InnerEvent::Pointer &event); 422d43be4eSopenharmony_ci bool ProcessDataConnectionDrsOrRatChanged(const AppExecFwk::InnerEvent::Pointer &event); 432d43be4eSopenharmony_ci bool ProcessDataConnectionRoamOn(const AppExecFwk::InnerEvent::Pointer &event); 442d43be4eSopenharmony_ci bool ProcessDataConnectionRoamOff(const AppExecFwk::InnerEvent::Pointer &event); 452d43be4eSopenharmony_ci bool ProcessUpdateNetworkInfo(const AppExecFwk::InnerEvent::Pointer &event); 462d43be4eSopenharmony_ci 472d43be4eSopenharmony_ciprivate: 482d43be4eSopenharmony_ci using Fun = std::function<bool(const AppExecFwk::InnerEvent::Pointer &data)>; 492d43be4eSopenharmony_ci std::map<uint32_t, Fun> eventIdFunMap_ { 502d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_CONNECT, 512d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessConnectDone(data); } }, 522d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_DISCONNECT, 532d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessDisconnectDone(data); } }, 542d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_DISCONNECT_ALL, 552d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessDisconnectAllDone(data); } }, 562d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_DRS_OR_RAT_CHANGED, 572d43be4eSopenharmony_ci [this]( 582d43be4eSopenharmony_ci const AppExecFwk::InnerEvent::Pointer &data) { return ProcessDataConnectionDrsOrRatChanged(data); } }, 592d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_DATA_ROAM_ON, 602d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessDataConnectionRoamOn(data); } }, 612d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_DATA_ROAM_OFF, 622d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessDataConnectionRoamOff(data); } }, 632d43be4eSopenharmony_ci { CellularDataEventCode::MSG_SM_UPDATE_NETWORK_INFO, 642d43be4eSopenharmony_ci [this](const AppExecFwk::InnerEvent::Pointer &data) { return ProcessUpdateNetworkInfo(data); }}, 652d43be4eSopenharmony_ci }; 662d43be4eSopenharmony_ci std::weak_ptr<CellularDataStateMachine> stateMachine_; 672d43be4eSopenharmony_ci}; 682d43be4eSopenharmony_ci} // namespace Telephony 692d43be4eSopenharmony_ci} // namespace OHOS 702d43be4eSopenharmony_ci#endif // DEFAULT_H 71