Signed-off-by: zhf <zhanghaifeng11@huawei.com>
This commit is contained in:
zhf 2021-09-05 20:23:43 -07:00
parent 387f476e74
commit e904077611
249 changed files with 26011 additions and 10751 deletions

15
.gitattributes vendored
View File

@ -1,15 +0,0 @@
*.tgz filter=lfs diff=lfs merge=lfs -text
*.trp filter=lfs diff=lfs merge=lfs -text
*.apk filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.asm filter=lfs diff=lfs merge=lfs -text
*.8svn filter=lfs diff=lfs merge=lfs -text
*.9svn filter=lfs diff=lfs merge=lfs -text
*.dylib filter=lfs diff=lfs merge=lfs -text
*.exe filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text

View File

@ -21,18 +21,14 @@ TELEPHONY_SIM_ROOT = "//base/telephony/core_service/sim"
ohos_shared_library("tel_core_service") {
install_enable = true
sources = [
"$TELEPHONY_CORE_SERVICE_ROOT/interfaces/innerkits/proxy/network_search_callback_proxy.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/interfaces/innerkits/state_registry/proxy/telephony_state_registry_proxy.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/core.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/core_manager.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/core_service.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/core_service_stub.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/observer_handler.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/phone.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/services/src/phone_manager.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hdf_death_recipient.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_call_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_data_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_modem_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_network_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_sim_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/hril_sms_parcel.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_base.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_call.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_data.cpp",
@ -41,28 +37,35 @@ ohos_shared_library("tel_core_service") {
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_network.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_sim.cpp",
"$TELEPHONY_CORE_SERVICE_ROOT/tel_ril/src/tel_ril_sms.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_information.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_register.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_search_handler.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_search_manager.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_search_notify.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_search_result.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_search_state.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_selection.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/network_state.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/operator_name.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/radio_info_state.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/radio_info.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/signal_info.cpp",
"$TELEPHONY_NETWORK_SEARCH_ROOT/src/signal_information.cpp",
"$TELEPHONY_SIM_ROOT/src/icc_file.cpp",
"$TELEPHONY_SIM_ROOT/src/icc_file_controller.cpp",
"$TELEPHONY_SIM_ROOT/src/icc_state.cpp",
"$TELEPHONY_SIM_ROOT/src/mcc_pool.cpp",
"$TELEPHONY_SIM_ROOT/src/multi_sim_controller.cpp",
"$TELEPHONY_SIM_ROOT/src/plmn_file.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_file.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_file_controller.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_file_manager.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_manager.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_sms_controller.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_sms_manager.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_state_handle.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_state_manager.cpp",
"$TELEPHONY_SIM_ROOT/src/sim_utils.cpp",
"//base/telephony/core_service/interfaces/innerkits/state_registry/proxy/telephony_state_registry_proxy.cpp",
"$TELEPHONY_SIM_ROOT/src/usim_file_controller.cpp",
]
include_dirs = [
@ -71,10 +74,15 @@ ohos_shared_library("tel_core_service") {
"$TELEPHONY_NETWORK_SEARCH_ROOT/include",
"$TELEPHONY_CORE_SERVICE_ROOT/interfaces/innerkits/common",
"$TELEPHONY_CORE_SERVICE_ROOT/interfaces/innerkits/proxy",
"//base/telephony/core_service/interfaces/innerkits/state_registry/proxy",
"$TELEPHONY_CORE_SERVICE_ROOT/interfaces/innerkits/state_registry/proxy",
"$TELEPHONY_CORE_SERVICE_ROOT/common/log/include",
"$TELEPHONY_SIM_ROOT/include",
"//utils/native/base/include",
"//utils/system/safwk/native/include",
"//base/notification/ces_standard/cesfwk/kits/native/include",
"//foundation/distributedschedule/dmsfwk/services/dtbschedmgr/include",
"//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_base/include",
"//foundation/aafwk/standard/interfaces/innerkits/want/include/ohos/aafwk/content/",
]
defines = [
@ -84,17 +92,20 @@ ohos_shared_library("tel_core_service") {
deps = [
"$hdf_uhdf_path/hdi:libhdi",
"//base/telephony/core_service/common:libtelephony_common",
"//drivers/adapter/uhdf2/osal:libhdf_utils",
"//utils/native/base:utils",
]
external_deps = [
"aafwk_standard:ability_manager",
"aafwk_standard:want",
"appexecfwk_standard:libeventhandler",
"ces_standard:cesfwk_innerkits",
"ces_standard:cesfwk_core",
"ces_standard:cesfwk_innerkits",
"ces_standard:cesfwk_services",
"ipc:ipc_core",
"ril_adapter:hril",
"safwk:system_ability_fwk",
"samgr_L2:samgr_proxy",
]

147
README.md Executable file → Normal file
View File

@ -38,17 +38,33 @@ As shown in the preceding figure, the telephony core service consists of the SIM
│ ├── innerkits # Internal APIs
│ └── kits # External APIs (such as JS APIs)
├── services # Implementation of the telephony core service
│ ├── include
│ └── src
├── etc # Telephony core service driver scripts
│ └── init
├── sa_profile # SA profile
├── tel_ril # RIL Manager service code
│ ├── include
│ ├── src
│ └── test
├── network_search # Network search service code
│ ├── include
│ ├── src
│ └── test
├── sim # SIM card service code
└── common
│ ├── include
│ ├── src
│ └── test
├── common
│ ├── log # Core service log print directory
│ ├── preferences
│ ├── utils
│ └── test
```
## Constraints<a name="section133mcpsimp"></a>
- Programming language: JavaScript
- Programming language: C++、JavaScript
- In terms of software, this module needs to work with the RIL adapter service \(ril\_adapter\) and status registration service \(state\_registry\).
- In terms of hardware, the accommodating device must be equipped with a modem and a SIM card capable of independent cellular communication.
@ -59,6 +75,7 @@ The telephony core service module needs to provide APIs for related modules, inc
### APIs for the SIM Card Service<a name="section142mcpsimp"></a>
<a name="table144mcpsimp"></a>
<table><thead align="left"><tr id="row150mcpsimp"><th class="cellrowborder" valign="top" width="33.406659334066596%" id="mcps1.1.4.1.1"><p id="entry151mcpsimpp0"><a name="entry151mcpsimpp0"></a><a name="entry151mcpsimpp0"></a>API</p>
</th>
<th class="cellrowborder" valign="top" width="33.266673332666734%" id="mcps1.1.4.1.2"><p id="entry152mcpsimpp0"><a name="entry152mcpsimpp0"></a><a name="entry152mcpsimpp0"></a>Description</p>
@ -67,37 +84,54 @@ The telephony core service module needs to provide APIs for related modules, inc
</th>
</tr>
</thead>
<tbody><tr id="row162mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p109592823314"><a name="p109592823314"></a><a name="p109592823314"></a>function getSimState(slotId: number, callback: AsyncCallback&lt;SimState&gt;): void;</p>
<tbody><tr id="row162mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p109592823314"><a name="p109592823314"></a><a name="p109592823314"></a>function GetSimStatus(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry164mcpsimpp0"><a name="entry164mcpsimpp0"></a><a name="entry164mcpsimpp0"></a>Obtains the SIM card status.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry165mcpsimpp0"><a name="entry165mcpsimpp0"></a><a name="entry165mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row178mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="entry179mcpsimpp0"><a name="entry179mcpsimpp0"></a><a name="entry179mcpsimpp0"></a>function getISOCountryCodeForSim(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row178mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="entry179mcpsimpp0"><a name="entry179mcpsimpp0"></a><a name="entry179mcpsimpp0"></a>function GetIsoCountryCode(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry180mcpsimpp0"><a name="entry180mcpsimpp0"></a><a name="entry180mcpsimpp0"></a>Obtains the country code.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry181mcpsimpp0"><a name="entry181mcpsimpp0"></a><a name="entry181mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row182mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1441115133518"><a name="p1441115133518"></a><a name="p1441115133518"></a>function getSimOperatorNumeric(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row182mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1441115133518"><a name="p1441115133518"></a><a name="p1441115133518"></a>function GetSimOperator(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry184mcpsimpp0"><a name="entry184mcpsimpp0"></a><a name="entry184mcpsimpp0"></a>Obtains the carrier code.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry185mcpsimpp0"><a name="entry185mcpsimpp0"></a><a name="entry185mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function getSimSpn(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function GetSpn(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>Obtains the SPN information.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function SimStateUpdated(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>SIM Card state update</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function UnlockSimPin(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>Unlock SIM Card</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tbody>
</table>
### APIs for the Network Search Service<a name="section198mcpsimp"></a>
<a name="table200mcpsimp"></a>
@ -109,27 +143,106 @@ The telephony core service module needs to provide APIs for related modules, inc
</th>
</tr>
</thead>
<tbody><tr id="row210mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p611934143612"><a name="p611934143612"></a><a name="p611934143612"></a>function getRadioTech(slotId: number, callback: AsyncCallback&lt;{psRadioTech: RadioTechnology, csRadioTech: RadioTechnology}&gt;): void;</p>
<tbody><tr id="row210mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p611934143612"><a name="p611934143612"></a><a name="p611934143612"></a>function GetPsRadioTech(int32_t slotId): void;</p>function GetCsRadioTech(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry212mcpsimpp0"><a name="entry212mcpsimpp0"></a><a name="entry212mcpsimpp0"></a>Obtains the current radio access technology.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry213mcpsimpp0"><a name="entry213mcpsimpp0"></a><a name="entry213mcpsimpp0"></a>ohos.permission.GET_NETWORK_INFO</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getSignalInformation(slotId: number, callback: AsyncCallback&lt;Array&lt;SignalInformation&gt;&gt;): void;</p>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetSignalInfoList(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Obtains the signal information.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row230mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p22372373611"><a name="p22372373611"></a><a name="p22372373611"></a>function getNetworkState(slotId: number, callback: AsyncCallback&lt;NetworkState&gt;): void;</p>
<tr id="row230mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p22372373611"><a name="p22372373611"></a><a name="p22372373611"></a>function GetNetworkStatus(slotId: number, callback: AsyncCallback&lt;GetNetworkStatus&gt;): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry232mcpsimpp0"><a name="entry232mcpsimpp0"></a><a name="entry232mcpsimpp0"></a>Obtains the network status.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry233mcpsimpp0"><a name="entry233mcpsimpp0"></a><a name="entry233mcpsimpp0"></a>ohos.permission.GET_NETWORK_INFO</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getNetworkSelectionMode(slotId: number, callback: AsyncCallback<NetworkSelectionMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Obtains the current network mode.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function setNetworkSelectionMode(options: NetworkSelectionModeOptions, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Set the current network mode.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getNetworkSearchInformation(slotId: number, callback: AsyncCallback<NetworkSearchResult>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Obtains the results of manual networksearch.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function isRadioOn(slotId: number, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Determine that the radio is on.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function turnOnRadio(callback: AsyncCallback<void>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Open the radio.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function turnOffRadio(callback: AsyncCallback<void>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Close the radio.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getISOCountryCodeForNetwork(slotId: number, callback: AsyncCallback<string>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Obtains the ISOCountryCode.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function setPreferredNetworkPara(slotId: number, networkMode: NetworkMode, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Set the Preferred Network Mode.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getPreferredNetworkPara(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Obtains the Preferred Network Mode.</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetSignalStrength(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Get signal strength </p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetOperatorInfo(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>Get operator information </p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
</tbody>
</table>
@ -143,8 +256,8 @@ The telephony core service module needs to provide APIs for related modules, inc
The function of obtaining the network status is used as an example. The process is as follows:
1. Query the SIM card in the slot specified by **slotId**. If **slotId** is not set, information about the primary card is queried by default.
2. Call the **getNetworkState** method in callback or Promise mode.
3. Obtain the network status information. The **getNetworkState** method works in asynchronous mode. The execution result is returned through the callback.
2. Call the **GetNetworkStatus** method in callback or Promise mode.
3. Obtain the network status information. The **GetNetworkStatus** method works in asynchronous mode. The execution result is returned through the callback.
```
import radio from "@ohos.telephony.radio";
@ -153,24 +266,24 @@ The function of obtaining the network status is used as an example. The process
let slotId = 1;
// Call the API in callback mode.
radio.getNetworkState(slotId, (err, value) => {
radio.GetNetworkStatus(slotId, (err, value) => {
if (err) {
// If the API call failed, err is not empty.
console.error(`failed to getNetworkState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
return;
}
// If the API call succeeded, err is empty.
console.log(`success to getNetworkState: ${value}`);
console.log(`success to GetNetworkStatus: ${value}`);
});
// Call the API in Promise mode.
let promise = radio.getNetworkState(slotId);
let promise = radio.GetNetworkStatus(slotId);
promise.then((value) => {
// The API call succeeded.
console.log(`success to getNetworkState: ${value}`);
console.log(`success to GetNetworkStatus: ${value}`);
}).catch((err) => {
// The API call failed.
console.error(`failed to getNetworkState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
});
```

180
README_zh.md Executable file → Normal file
View File

@ -38,17 +38,33 @@
│ ├── innerkits # 部件间的内部接口
│ └── kits # 对应用提供的接口例如JS接口
├── services # 核心服务实现代码目录
│ ├── include
│ └── src
├── etc # 核心服务的驱动脚本目录
│ └── init
├── sa_profile # 核心服务的启动文件目录
├── tel_ril # 核心服务与RIL Adapter通信代码目录
│ ├── include
│ ├── src
│ └── test
├── network_search # 搜网服务代码目录
│ ├── include
│ ├── src
│ └── test
├── sim # SIM卡服务代码目录
└── common
│ ├── include
│ ├── src
│ └── test
├── common
│ ├── log # 核心服务日志打印目录
│ ├── preferences
│ ├── utils
│ ├── test
```
## 约束<a name="section133mcpsimp"></a>
- 开发语言Java Script。
- 开发语言:C++ 、Java Script。
- 软件上需要与以下服务配合使用RIL适配ril\_adapter状态注册服务state\_registry
- 硬件上需要搭载的设备支持以下硬件可以进行独立蜂窝通信的Modem以及SIM卡。
@ -59,48 +75,68 @@
### 获取SIM卡信息相关接口<a name="section142mcpsimp"></a>
<a name="table144mcpsimp"></a>
<table><thead align="left"><tr id="row150mcpsimp"><th class="cellrowborder" valign="top" width="33.406659334066596%" id="mcps1.1.4.1.1"><p id="entry151mcpsimpp0"><a name="entry151mcpsimpp0"></a><a name="entry151mcpsimpp0"></a>接口名称</p>
<table><thead align="left"><tr id="row150mcpsimp"><th class="cellrowborder" valign="top" width="33.406659334066596%" id="mcps1.1.4.1.1"><p id="entry151mcpsimpp0"><a name="entry151mcpsimpp0"></a><a name="entry151mcpsimpp0"></a>API</p>
</th>
<th class="cellrowborder" valign="top" width="33.266673332666734%" id="mcps1.1.4.1.2"><p id="entry152mcpsimpp0"><a name="entry152mcpsimpp0"></a><a name="entry152mcpsimpp0"></a>接口描述</p>
<th class="cellrowborder" valign="top" width="33.266673332666734%" id="mcps1.1.4.1.2"><p id="entry152mcpsimpp0"><a name="entry152mcpsimpp0"></a><a name="entry152mcpsimpp0"></a>Description</p>
</th>
<th class="cellrowborder" valign="top" width="33.32666733326668%" id="mcps1.1.4.1.3"><p id="entry153mcpsimpp0"><a name="entry153mcpsimpp0"></a><a name="entry153mcpsimpp0"></a>所需权限</p>
<th class="cellrowborder" valign="top" width="33.32666733326668%" id="mcps1.1.4.1.3"><p id="entry153mcpsimpp0"><a name="entry153mcpsimpp0"></a><a name="entry153mcpsimpp0"></a>Required Permission</p>
</th>
</tr>
</thead>
<tbody><tr id="row162mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p109592823314"><a name="p109592823314"></a><a name="p109592823314"></a>function getSimState(slotId: number, callback: AsyncCallback&lt;SimState&gt;): void;</p>
<tbody><tr id="row162mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p109592823314"><a name="p109592823314"></a><a name="p109592823314"></a>function GetSimStatus(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry164mcpsimpp0"><a name="entry164mcpsimpp0"></a><a name="entry164mcpsimpp0"></a>获取卡状态</p>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry164mcpsimpp0"><a name="entry164mcpsimpp0"></a><a name="entry164mcpsimpp0"></a>Obtains the SIM card status.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry165mcpsimpp0"><a name="entry165mcpsimpp0"></a><a name="entry165mcpsimpp0"></a></p>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry165mcpsimpp0"><a name="entry165mcpsimpp0"></a><a name="entry165mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row178mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="entry179mcpsimpp0"><a name="entry179mcpsimpp0"></a><a name="entry179mcpsimpp0"></a>function getISOCountryCodeForSim(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row178mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="entry179mcpsimpp0"><a name="entry179mcpsimpp0"></a><a name="entry179mcpsimpp0"></a>function GetIsoCountryCode(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry180mcpsimpp0"><a name="entry180mcpsimpp0"></a><a name="entry180mcpsimpp0"></a>获取国家码</p>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry180mcpsimpp0"><a name="entry180mcpsimpp0"></a><a name="entry180mcpsimpp0"></a>Obtains the country code.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry181mcpsimpp0"><a name="entry181mcpsimpp0"></a><a name="entry181mcpsimpp0"></a></p>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry181mcpsimpp0"><a name="entry181mcpsimpp0"></a><a name="entry181mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row182mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1441115133518"><a name="p1441115133518"></a><a name="p1441115133518"></a>function getSimOperatorNumeric(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row182mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1441115133518"><a name="p1441115133518"></a><a name="p1441115133518"></a>function GetSimOperator(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry184mcpsimpp0"><a name="entry184mcpsimpp0"></a><a name="entry184mcpsimpp0"></a>获取运营商数字码</p>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry184mcpsimpp0"><a name="entry184mcpsimpp0"></a><a name="entry184mcpsimpp0"></a>Obtains the carrier code.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry185mcpsimpp0"><a name="entry185mcpsimpp0"></a><a name="entry185mcpsimpp0"></a></p>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry185mcpsimpp0"><a name="entry185mcpsimpp0"></a><a name="entry185mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function getSimSpn(slotId: number, callback: AsyncCallback&lt;string&gt;): void;</p>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function GetSpn(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>获取SPN信息</p>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>Obtains the SPN information.</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a></p>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function SimStateUpdated(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>SIM Card state update</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row186mcpsimp"><td class="cellrowborder" valign="top" width="33.406659334066596%" headers="mcps1.1.4.1.1 "><p id="p1818291010352"><a name="p1818291010352"></a><a name="p1818291010352"></a>function UnlockSimPin(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.266673332666734%" headers="mcps1.1.4.1.2 "><p id="entry188mcpsimpp0"><a name="entry188mcpsimpp0"></a><a name="entry188mcpsimpp0"></a>Unlock SIM Card</p>
</td>
<td class="cellrowborder" valign="top" width="33.32666733326668%" headers="mcps1.1.4.1.3 "><p id="entry189mcpsimpp0"><a name="entry189mcpsimpp0"></a><a name="entry189mcpsimpp0"></a>None</p>
</td>
</tr>
</tbody>
</table>
### 搜网服务相关接口<a name="section198mcpsimp"></a>
<a name="table200mcpsimp"></a>
<table><thead align="left"><tr id="row206mcpsimp"><th class="cellrowborder" valign="top" width="33.33333333333333%" id="mcps1.1.4.1.1"><p id="entry207mcpsimpp0"><a name="entry207mcpsimpp0"></a><a name="entry207mcpsimpp0"></a>接口名称</p>
</th>
<th class="cellrowborder" valign="top" width="33.33333333333333%" id="mcps1.1.4.1.2"><p id="entry208mcpsimpp0"><a name="entry208mcpsimpp0"></a><a name="entry208mcpsimpp0"></a>接口描述</p>
@ -109,27 +145,105 @@
</th>
</tr>
</thead>
<tbody><tr id="row210mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p611934143612"><a name="p611934143612"></a><a name="p611934143612"></a>function getRadioTech(slotId: number, callback: AsyncCallback&lt;{psRadioTech: RadioTechnology, csRadioTech: RadioTechnology}&gt;): void;</p>
<tbody><tr id="row210mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p611934143612"><a name="p611934143612"></a><a name="p611934143612"></a>function GetPsRadioTech(int32_t slotId): void;</p>function GetCsRadioTech(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry212mcpsimpp0"><a name="entry212mcpsimpp0"></a><a name="entry212mcpsimpp0"></a>获取当前接入技术</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry213mcpsimpp0"><a name="entry213mcpsimpp0"></a><a name="entry213mcpsimpp0"></a>ohos.permission.GET_NETWORK_INFO</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function getSignalInformation(slotId: number, callback: AsyncCallback&lt;Array&lt;SignalInformation&gt;&gt;): void;</p>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetSignalInfoList(int32_t slotId): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获取信号列表</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a></p>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row230mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p22372373611"><a name="p22372373611"></a><a name="p22372373611"></a>function getNetworkState(slotId: number, callback: AsyncCallback&lt;NetworkState&gt;): void;</p>
<tr id="row230mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p22372373611"><a name="p22372373611"></a><a name="p22372373611"></a>function GetNetworkStatus(slotId: number, callback: AsyncCallback&lt;GetNetworkStatus&gt;): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry232mcpsimpp0"><a name="entry232mcpsimpp0"></a><a name="entry232mcpsimpp0"></a>获取网络状态</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry233mcpsimpp0"><a name="entry233mcpsimpp0"></a><a name="entry233mcpsimpp0"></a>ohos.permission.GET_NETWORK_INFO</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetNetworkSelectionMode(slotId: number, callback: AsyncCallback<NetworkSelectionMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获取当前选网模式</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function SetNetworkSelectionMode(options: NetworkSelectionModeOptions, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>设置当前选网模式</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetNetworkSearchInformation(slotId: number, callback: AsyncCallback<NetworkSearchResult>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获得手动搜网的结果</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function IsRadioOn(slotId: number, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>判断radio是否为开</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function TurnOnRadio(callback: AsyncCallback<void>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>打开radio</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function TurnOffRadio(callback: AsyncCallback<void>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>关闭radio</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetISOCountryCodeForNetwork(slotId: number, callback: AsyncCallback<string>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获得国家码</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function SetPreferredNetworkPara(slotId: number, networkMode: NetworkMode, callback: AsyncCallback<boolean>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>设置优选网络模式</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetPreferredNetworkPara(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获取优选网络模式</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetSignalStrength(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获取信号强度</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
</tr>
<tr id="row226mcpsimp"><td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.1 "><p id="p924781783614"><a name="p924781783614"></a><a name="p924781783614"></a>function GetOperatorInfo(slotId: number, callback: AsyncCallback<NetworkMode>): void;</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.2 "><p id="entry228mcpsimpp0"><a name="entry228mcpsimpp0"></a><a name="entry228mcpsimpp0"></a>获取运营商信息</p>
</td>
<td class="cellrowborder" valign="top" width="33.33333333333333%" headers="mcps1.1.4.1.3 "><p id="entry229mcpsimpp0"><a name="entry229mcpsimpp0"></a><a name="entry229mcpsimpp0"></a>None</p>
</td>
</tr>
</tbody>
</table>
@ -143,7 +257,7 @@
以获取网络状态为例,相关流程如下:
1. 指定查询的slotId若不指定默认查询主卡信息。
2. 可以通过callback或者Promise的方式调用getNetworkState方法,返回网络状态信息。
2. 可以通过callback或者Promise的方式调用GetNetworkStatus方法,返回网络状态信息。
3. 该接口为异步接口相关执行结果会从callback中返回。
```
@ -153,24 +267,24 @@
let slotId = 1;
// 调用接口【callback方式】
radio.getNetworkState(slotId, (err, value) => {
radio.GetNetworkStatus(slotId, (err, value) => {
if (err) {
// 接口调用失败err非空
console.error(`failed to getNetworkState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
return;
}
// 接口调用成功err为空
console.log(`success to getNetworkState: ${value}`);
console.log(`success to GetNetworkStatus: ${value}`);
});
// 调用接口【Promise方式】
let promise = radio.getNetworkState(slotId);
let promise = radio.GetNetworkStatus(slotId);
promise.then((value) => {
// 接口调用成功,此处可以实现成功场景分支代码。
console.log(`success to getNetworkState: ${value}`);
console.log(`success to GetNetworkStatus: ${value}`);
}).catch((err) => {
// 接口调用失败,此处可以实现失败场景分支代码。
console.error(`failed to getNetworkState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
});
```
@ -190,24 +304,24 @@
let slotId = 1;
// 调用接口【callback方式】
sim.getSimState(slotId, (err, value) => {
sim.GetNetworkStatus(slotId, (err, value) => {
if (err) {
// 接口调用失败err非空
console.error(`failed to getSimState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
return;
}
// 接口调用成功err为空
console.log(`success to getSimState: ${value}`);
console.log(`success to GetNetworkStatus: ${value}`);
});
// 调用接口【Promise方式】
let promise = sim.getSimState(slotId);
let promise = sim.GetNetworkStatus(slotId);
promise.then((value) => {
// 接口调用成功,此处可以实现成功场景分支代码。
console.log(`success to getSimState: ${value}`);
}).catch((err) => {
// 接口调用失败,此处可以实现失败场景分支代码。
console.error(`failed to getSimState because ${err.message}`);
console.error(`failed to GetNetworkStatus because ${err.message}`);
});
```

3
common/BUILD.gn Executable file → Normal file
View File

@ -36,6 +36,7 @@ ohos_shared_library("libtelephony_common") {
"TELEPHONY_LOG_TAG = \"TELEPHONY_COMMON\"",
"LOG_DOMAIN = 0xD002B01",
]
if (is_standard_system) {
defines += [ "STANDARD_SYSTEM_ENABLE" ]
}
@ -60,6 +61,8 @@ ohos_shared_library("libtelephony_common") {
external_deps = [ "hilog:libhilog" ]
}
external_deps += [ "native_appdatamgr:native_preferences" ]
part_name = "core_service"
subsystem_name = "telephony"
}

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef TELEPHONY_LOG_C_H
#define TELEPHONY_LOG_C_H
#include "hilog/log.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef LOG_DOMAIN
#define LOG_DOMAIN 0xD002B01
#endif
#ifndef LOG_TAG
#define LOG_TAG "TelephonySubsystem"
#endif
#define __TEL_FILENAME__ (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
#define OHOS_DEBUG
#ifndef OHOS_DEBUG
#define DECORATOR_HILOG(op, fmt, args...) \
do { \
op(LOG_CORE, fmt, ##args); \
} while (0)
#else
#define DECORATOR_HILOG(op, fmt, args...) \
do { \
op(LOG_CORE, "[%{public}s-(%{public}s:%{public}d)] " fmt, __FUNCTION__, __TEL_FILENAME__, __LINE__, \
##args); \
} while (0)
#endif
#define TELEPHONY_LOGD(fmt, args...) DECORATOR_HILOG(HILOG_DEBUG, fmt, ##args)
#define TELEPHONY_LOGE(fmt, args...) DECORATOR_HILOG(HILOG_ERROR, fmt, ##args)
#define TELEPHONY_LOGW(fmt, args...) DECORATOR_HILOG(HILOG_WARN, fmt, ##args)
#define TELEPHONY_LOGI(fmt, args...) DECORATOR_HILOG(HILOG_INFO, fmt, ##args)
#define TELEPHONY_LOGF(fmt, args...) DECORATOR_HILOG(HILOG_FATAL, fmt, ##args)
#ifdef __cplusplus
}
#endif
#endif // TELEPHONY_LOG_C_H

43
common/log/include/telephony_log_wrapper.h Executable file → Normal file
View File

@ -16,10 +16,11 @@
#ifndef OHOS_TELEPHONY_LOG_WRAPPER_H
#define OHOS_TELEPHONY_LOG_WRAPPER_H
#include "hilog/log.h"
#include <string>
#include "hilog/log.h"
namespace OHOS {
namespace Telephony {
enum class TelephonyLogLevel {
DEBUG = 0,
INFO,
@ -28,8 +29,6 @@ enum class TelephonyLogLevel {
FATAL,
};
static constexpr OHOS::HiviewDFX::HiLogLabel TELEPHONY_LABEL = {LOG_CORE, LOG_DOMAIN, TELEPHONY_LOG_TAG};
class TelephonyLogWrapper {
public:
static bool JudgeLevel(const TelephonyLogLevel &level);
@ -50,15 +49,35 @@ private:
static TelephonyLogLevel level_;
};
#define PRINT_LOG(LEVEL, Level, fmt, ...) \
if (TelephonyLogWrapper::JudgeLevel(TelephonyLogLevel::LEVEL)) \
OHOS::HiviewDFX::HiLog::Level(TELEPHONY_LABEL, "[%{public}s(%{public}s)] " fmt, \
TelephonyLogWrapper::GetBriefFileName(std::string(__FILE__)).c_str(), __FUNCTION__, ##__VA_ARGS__)
#define CONFIG_HILOG
#ifdef CONFIG_HILOG
#define TELEPHONY_LOGD(fmt, ...) PRINT_LOG(DEBUG, Debug, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGI(fmt, ...) PRINT_LOG(INFO, Info, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGW(fmt, ...) PRINT_LOG(WARN, Warn, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGE(fmt, ...) PRINT_LOG(ERROR, Error, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGF(fmt, ...) PRINT_LOG(FATAL, Fatal, fmt, ##__VA_ARGS__)
#ifndef TELEPHONY_LOG_TAG
#define TELEPHONY_LOG_TAG "TelephonySubsystem"
#endif
static constexpr OHOS::HiviewDFX::HiLogLabel TELEPHONY_LABEL = {LOG_CORE, LOG_DOMAIN, TELEPHONY_LOG_TAG};
#define __TEL_FILENAME__ (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
#define OHOS_DEBUG
#ifndef OHOS_DEBUG
#define PRINT_LOG(op, fmt, ...) (void)OHOS::HiviewDFX::HiLog::op(TELEPHONY_LABEL, fmt, ##__VA_ARGS__)
#else
#define PRINT_LOG(op, fmt, ...) \
(void)OHOS::HiviewDFX::HiLog::op(TELEPHONY_LABEL, "[%{public}s-(%{public}s:%{public}d)] " fmt, __FUNCTION__, \
__TEL_FILENAME__, __LINE__, ##__VA_ARGS__)
#endif
#define TELEPHONY_LOGD(fmt, ...) PRINT_LOG(Debug, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGE(fmt, ...) PRINT_LOG(Error, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGW(fmt, ...) PRINT_LOG(Warn, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGI(fmt, ...) PRINT_LOG(Info, fmt, ##__VA_ARGS__)
#define TELEPHONY_LOGF(fmt, ...) PRINT_LOG(Fatal, fmt, ##__VA_ARGS__)
#else
#define TELEPHONY_LOGD(...)
#endif // CONFIG_HILOG
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_TELEPHONY_LOG_WRAPPER_H

View File

@ -14,9 +14,9 @@
*/
#include "telephony_log_wrapper.h"
#include <iostream>
namespace OHOS {
namespace Telephony {
// initial static member object
TelephonyLogLevel TelephonyLogWrapper::level_ = TelephonyLogLevel::DEBUG;
@ -43,4 +43,5 @@ std::string TelephonyLogWrapper::GetBriefFileName(const std::string &file)
return file;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -16,18 +16,16 @@
#ifndef DATA_STORAGE_PREFERENCES_UTILS_H
#define DATA_STORAGE_PREFERENCES_UTILS_H
#include <memory>
#include <string>
#include <vector>
#include "singleton.h"
#include "preferences.h"
#include "preferences_errno.h"
#include "preferences_observer.h"
namespace OHOS {
namespace TelephonyCommon {
namespace Telephony {
class TelProfileUtil {
DECLARE_DELAYED_SINGLETON(TelProfileUtil);
@ -59,6 +57,6 @@ private:
int errCode_ = NativePreferences::E_OK;
const std::string error_ = "error";
};
} // namespace TelephonyCommon
} // namespace Telephony
} // namespace OHOS
#endif // DATA_STORAGE_PREFERENCES_UTILS_H

View File

@ -12,11 +12,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "tel_profile_util.h"
#include "preferences_helper.h"
namespace OHOS {
namespace TelephonyCommon {
namespace Telephony {
TelProfileUtil::TelProfileUtil() {}
TelProfileUtil::~TelProfileUtil() {}
@ -179,5 +180,5 @@ void TelProfileUtil::UnRegisterObserver(std::shared_ptr<NativePreferences::Prefe
ptr->UnRegisterObserver(preferencesObserver);
}
}
} // namespace TelephonyCommon
} // namespace Telephony
} // namespace OHOS

View File

@ -1,48 +0,0 @@
# Copyright (c) 2021 Huawei Device Co., Ltd.
# 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.
import("//build/ohos.gni")
import("//build/test.gni")
module_output_path = "//base/telephony/core_service/common/telephonydfx"
ohos_unittest("TelephonySAPreferencesTest") {
module_out_path = module_output_path
sources = [ "//base/telephony/core_service/common/preferences/src/preferences_utils.cpp" ]
sources += [ "telephony_preferences_test.cpp" ]
configs = [
"//base/telephony/core_service/common:telephony_common_config",
"//base/telephony/core_service/common/test:common_test_config",
]
deps = [
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences",
"//third_party/googletest:gtest_main",
]
if (is_standard_system) {
external_deps = [ "hiviewdfx_hilog_native:libhilog" ]
} else {
external_deps = [ "hilog:libhilog" ]
}
part_name = "core_service"
}
group("unittest") {
testonly = true
deps = [ ":TelephonySAPreferencesTest" ]
}

View File

@ -17,17 +17,15 @@
#define STR_CONVERT_H
#include <codecvt>
#include <cstdio>
#include <locale>
#include <string>
namespace OHOS {
namespace CellularData {
namespace Telephony {
std::u16string ToUtf16(std::string str);
std::string ToUtf8(std::u16string str16);
std::u32string ToUtf32(std::string str);
std::string ToUtf8(std::u32string str32);
std::string ToUtf8(std::wstring wstr);
} // namespace CellularData
} // namespace Telephony
} // namespace OHOS
#endif // STR_CONVERT_H

View File

@ -16,7 +16,7 @@
#include "str_convert.h"
namespace OHOS {
namespace CellularData {
namespace Telephony {
std::u16string ToUtf16(std::string str)
{
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(str);
@ -41,5 +41,5 @@ std::string ToUtf8(std::wstring wstr)
{
return std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> {}.to_bytes(wstr);
}
} // namespace CellularData
} // namespace Telephony
} // namespace OHOS

View File

@ -14,7 +14,12 @@ import("//build/ohos.gni")
## Install telephony.rc to /system/etc/init/telephony.rc
ohos_prebuilt_etc("telephony.rc") {
if (use_musl) {
source = "telephony.cfg"
} else {
source = "telephony.rc"
}
relative_install_dir = "init"
part_name = "core_service"
subsystem_name = "telephony"

17
etc/init/telephony.cfg Normal file
View File

@ -0,0 +1,17 @@
{
"jobs" : [{
"name" : "boot",
"cmds" : [
"exec /system/bin/sleep 4",
"start telephony_sa"
]
}
],
"services" : [{
"name" : "telephony_sa",
"path" : ["/system/bin/sa_main", "/system/profile/telephony.xml"],
"uid" : "system",
"gid" : ["system", "shell"]
}
]
}

View File

@ -12,27 +12,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef OHOS_RIL_NOTIFICATION_H
#define OHOS_RIL_NOTIFICATION_H
typedef enum {
HNOTI_CALL_BASE = 1000,
HNOTI_CALL_STATE_UPDATED,
HNOTI_SMS_BASE = 1100,
HNOTI_SMS_NEW_SMS,
HNOTI_SMS_STATUS_REPORT,
HNOTI_SMS_NEW_SMS_STORED_ON_SIM,
#ifndef BASE_TELEPHONY_NAPI_BASE_CONTEXT_H
#define BASE_TELEPHONY_NAPI_BASE_CONTEXT_H
HNOTI_SIM_BASE = 1200,
#include "napi/native_api.h"
#include "napi/native_node_api.h"
HNOTI_DATA_BASE = 1300,
HNOTI_DATA_PDP_CONTEXT_LIST_UPDATED,
HNOTI_NETWORK_BASE = 1400,
HNOTI_NETWORK_CS_REG_STATUS_UPDATED,
HNOTI_NETWORK_SIGNAL_STRENGTH_UPDATED,
HNOTI_COMMON_BASE = 1500,
HNOTI_MODEM_RADIO_STATE_UPDATED,
} HRilNotification;
#endif // OHOS_RIL_NOTIFICATION_H
namespace OHOS {
namespace Telephony {
struct BaseContext {
napi_async_work work = nullptr;
napi_deferred deferred = nullptr;
napi_ref callbackRef = nullptr;
bool resolved = false;
};
} // namespace Telephony
} // namespace OHOS
#endif // BASE_CONTEXT_H

View File

@ -0,0 +1,245 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "napi_util.h"
#include <codecvt>
#include <cstdio>
#include <locale>
#include <vector>
#include <cstring>
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace Telephony {
std::string NapiUtil::ToUtf8(std::u16string str16)
{
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(str16);
}
std::u16string NapiUtil::ToUtf16(std::string str)
{
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(str);
}
napi_value NapiUtil::CreateErrorMessage(napi_env env, std::string msg, int32_t errorCode)
{
napi_value result = nullptr;
napi_value message = nullptr;
NAPI_CALL(env, napi_create_string_utf8(env, msg.c_str(), msg.length(), &message));
napi_value codeValue = nullptr;
std::string errCode = std::to_string(errorCode);
NAPI_CALL(env, napi_create_string_utf8(env, errCode.c_str(), errCode.length(), &codeValue));
NAPI_CALL(env, napi_create_error(env, codeValue, message, &result));
return result;
}
napi_value NapiUtil::CreateUndefined(napi_env env)
{
napi_value result = nullptr;
napi_get_undefined(env, &result);
return result;
}
bool NapiUtil::MatchValueType(napi_env env, napi_value value, napi_valuetype targetType)
{
napi_valuetype valueType = napi_undefined;
napi_typeof(env, value, &valueType);
return valueType == targetType;
}
bool NapiUtil::MatchParameters(
napi_env env, const napi_value parameters[], std::initializer_list<napi_valuetype> valueTypes)
{
if (parameters == nullptr) {
return false;
}
int i = 0;
for (auto beg = valueTypes.begin(); beg != valueTypes.end(); ++beg) {
if (!MatchValueType(env, parameters[i], *beg)) {
return false;
}
++i;
}
return true;
}
void NapiUtil::SetPropertyInt32(napi_env env, napi_value object, std::string name, int32_t value)
{
napi_value propertyValue = nullptr;
napi_create_int32(env, value, &propertyValue);
napi_set_named_property(env, object, name.c_str(), propertyValue);
}
void NapiUtil::SetPropertyStringUtf8(napi_env env, napi_value object, std::string name, std::string value)
{
napi_value propertyValue = nullptr;
napi_create_string_utf8(env, value.c_str(), name.length(), &propertyValue);
napi_set_named_property(env, object, name.c_str(), propertyValue);
}
void NapiUtil::SetPropertyBoolean(napi_env env, napi_value object, std::string name, bool value)
{
napi_value propertyValue = nullptr;
napi_get_boolean(env, value, &propertyValue);
napi_set_named_property(env, object, name.c_str(), propertyValue);
}
napi_value NapiUtil::ToInt32Value(napi_env env, int32_t value)
{
napi_value staticValue = nullptr;
NAPI_CALL(env, napi_create_int32(env, value, &staticValue));
return staticValue;
}
bool NapiUtil::HasNamedProperty(napi_env env, napi_value object, std::string propertyName)
{
bool hasProperty = false;
napi_has_named_property(env, object, propertyName.data(), &hasProperty);
return hasProperty;
}
bool NapiUtil::HasNamedTypeProperty(napi_env env, napi_value object, napi_valuetype type, std::string propertyName)
{
bool hasProperty = false;
napi_has_named_property(env, object, propertyName.data(), &hasProperty);
if (hasProperty) {
napi_value value = nullptr;
napi_get_named_property(env, object, propertyName.data(), &value);
return MatchValueType(env, value, type);
}
return false;
}
bool NapiUtil::MatchObjectProperty(
napi_env env, napi_value object, std::initializer_list<std::pair<std::string, napi_valuetype>> pairList)
{
if (object == nullptr) {
return false;
}
for (auto beg = pairList.begin(); beg != pairList.end(); ++beg) {
if (!HasNamedTypeProperty(env, object, beg->second, beg->first)) {
return false;
}
}
return true;
}
bool NapiUtil::MatchOptionPropertyType(
napi_env env, napi_value object, napi_valuetype type, std::string propertyName)
{
bool hasProperty = false;
napi_has_named_property(env, object, propertyName.data(), &hasProperty);
if (hasProperty) {
napi_value value = nullptr;
napi_get_named_property(env, object, propertyName.data(), &value);
return MatchValueType(env, value, type);
}
return true;
}
std::string NapiUtil::GetStringFromValue(napi_env env, napi_value value)
{
char msgChars[MAX_TEXT_LENGTH] = {0};
size_t msgLength = 0;
napi_get_value_string_utf8(env, value, msgChars, MAX_TEXT_LENGTH, &msgLength);
TELEPHONY_LOGD("NapiUtil GetStringFromValue msgLength = %{public}zu", msgLength);
if (msgLength > 0) {
return std::string(msgChars, 0, msgLength);
} else {
return "";
}
}
napi_value NapiUtil::GetNamedProperty(napi_env env, napi_value object, std::string propertyName)
{
napi_value value = nullptr;
napi_get_named_property(env, object, propertyName.data(), &value);
return value;
}
napi_value NapiUtil::HandleAsyncWork(napi_env env, BaseContext *context, std::string workName,
napi_async_execute_callback execute, napi_async_complete_callback complete)
{
TELEPHONY_LOGD("NapiUtil HandleAsyncWork start workName = %{public}s", workName.c_str());
napi_value result = nullptr;
bool noCallback = context->callbackRef == nullptr;
TELEPHONY_LOGD("NapiUtil HandleAsyncWork noCallback = %{public}d", noCallback);
if (noCallback) {
napi_status createStatus = napi_create_promise(env, &context->deferred, &result);
TELEPHONY_LOGD("NapiUtil HandleAsyncWork napi_create_promise createStatus %{public}d", createStatus);
} else {
napi_get_undefined(env, &result);
}
napi_value resource = CreateUndefined(env);
napi_value resourceName = nullptr;
napi_create_string_utf8(env, workName.data(), NAPI_AUTO_LENGTH, &resourceName);
napi_create_async_work(env, resource, resourceName, execute, complete, (void *)context, &context->work);
napi_queue_async_work(env, context->work);
return result;
}
void NapiUtil::Handle1ValueCallback(napi_env env, BaseContext *baseContext, napi_value callbackValue)
{
std::unique_ptr<BaseContext> context(baseContext);
if (context == nullptr) {
std::string errorCode = std::to_string(napi_invalid_arg);
std::string errorMessage = "error at baseContext is nullptr";
NAPI_CALL_RETURN_VOID(env, napi_throw_error(env, errorCode.c_str(), errorMessage.c_str()));
}
if (context->callbackRef != nullptr) {
napi_value recv = CreateUndefined(env);
napi_value callbackFunc = nullptr;
NAPI_CALL_RETURN_VOID(env, napi_get_reference_value(env, context->callbackRef, &callbackFunc));
napi_value callbackValues[] = {callbackValue};
napi_value result = nullptr;
NAPI_CALL_RETURN_VOID(
env, napi_call_function(env, recv, callbackFunc, std::size(callbackValues), callbackValues, &result));
NAPI_CALL_RETURN_VOID(env, napi_delete_reference(env, context->callbackRef));
} else if (context->deferred != nullptr) {
if (context->resolved) {
NAPI_CALL_RETURN_VOID(env, napi_resolve_deferred(env, context->deferred, callbackValue));
} else {
NAPI_CALL_RETURN_VOID(env, napi_reject_deferred(env, context->deferred, callbackValue));
}
}
NAPI_CALL_RETURN_VOID(env, napi_delete_async_work(env, context->work));
}
void NapiUtil::Handle2ValueCallback(napi_env env, BaseContext *context, napi_value callbackValue)
{
if (context->callbackRef != nullptr) {
TELEPHONY_LOGD("Handle2ValueCallback normal callback resolved = %{public}d", context->resolved);
napi_value recv = CreateUndefined(env);
napi_value callbackFunc = nullptr;
napi_get_reference_value(env, context->callbackRef, &callbackFunc);
napi_value callbackValues[] = {nullptr, nullptr};
callbackValues[0] = context->resolved ? CreateUndefined(env) : callbackValue;
callbackValues[1] = context->resolved ? callbackValue : CreateUndefined(env);
napi_value result = nullptr;
napi_call_function(env, recv, callbackFunc, std::size(callbackValues), callbackValues, &result);
napi_delete_reference(env, context->callbackRef);
} else if (context->deferred != nullptr) {
TELEPHONY_LOGD("Handle2ValueCallback promise callback resolved = %{public}d", context->resolved);
if (context->resolved) {
napi_resolve_deferred(env, context->deferred, callbackValue);
} else {
napi_reject_deferred(env, context->deferred, callbackValue);
}
}
napi_delete_async_work(env, context->work);
delete context;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -0,0 +1,140 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef BASE_TELEPHONY_NAPI_NAPI_UTIL_H
#define BASE_TELEPHONY_NAPI_NAPI_UTIL_H
#include <string>
#include <tuple>
#include <type_traits>
#include <vector>
#include "telephony_napi_common_error.h"
#include "base_context.h"
#include "napi/native_api.h"
#include "napi/native_node_api.h"
namespace OHOS {
namespace Telephony {
using vecNapiType = std::vector<napi_valuetype>;
class NapiUtil {
public:
static const int32_t MAX_TEXT_LENGTH = 4096;
static std::string ToUtf8(std::u16string str16);
static std::u16string ToUtf16(std::string str);
static napi_value CreateErrorMessage(napi_env env, std::string message, int32_t errorCode = ERROR_DEFAULT);
static napi_value CreateUndefined(napi_env env);
static bool MatchValueType(napi_env env, napi_value value, napi_valuetype targetType);
static bool MatchParameters(
napi_env env, const napi_value parameters[], std::initializer_list<napi_valuetype> valueTypes);
static void SetPropertyInt32(napi_env env, napi_value object, std::string name, int32_t value);
static void SetPropertyStringUtf8(napi_env env, napi_value object, std::string name, std::string value);
static void SetPropertyBoolean(napi_env env, napi_value object, std::string name, bool value);
static napi_value ToInt32Value(napi_env env, int value);
static bool HasNamedProperty(napi_env env, napi_value object, std::string propertyName);
static bool HasNamedTypeProperty(
napi_env env, napi_value object, napi_valuetype type, std::string propertyName);
static bool MatchObjectProperty(
napi_env env, napi_value object, std::initializer_list<std::pair<std::string, napi_valuetype>> pairList);
static bool MatchOptionPropertyType(
napi_env env, napi_value object, napi_valuetype type, std::string propertyName);
static std::string GetStringFromValue(napi_env env, napi_value value);
static napi_value GetNamedProperty(napi_env env, napi_value object, std::string propertyName);
static napi_value HandleAsyncWork(napi_env env, BaseContext *context, std::string workName,
napi_async_execute_callback execute, napi_async_complete_callback complete);
static void Handle1ValueCallback(napi_env env, BaseContext *context, napi_value callbackValue);
static void Handle2ValueCallback(napi_env env, BaseContext *context, napi_value callbackValue);
};
template<typename T, std::enable_if_t<std::is_same_v<T, bool>, int32_t> = 0>
napi_value GetNapiValue(napi_env env, T val)
{
napi_value result = nullptr;
napi_get_boolean(env, val, &result);
return result;
}
template<typename T, std::enable_if_t<std::is_same_v<T, int32_t>, int32_t> = 0>
napi_value GetNapiValue(napi_env env, T val)
{
napi_value result = nullptr;
napi_create_int32(env, val, &result);
return result;
}
template<typename T, std::enable_if_t<std::is_same_v<T, std::string>, int32_t> = 0>
napi_value GetNapiValue(napi_env env, T val)
{
napi_value result = nullptr;
napi_create_string_utf8(env, val.c_str(), val.length(), &result);
return result;
}
template<typename T, std::enable_if_t<std::is_same_v<T, napi_value>, int32_t> = 0>
napi_value GetNapiValue(napi_env env, T val)
{
return val;
}
template<typename T, std::enable_if_t<std::is_same_v<T, int32_t>, int32_t> = 0>
napi_status NapiValueConverted(napi_env env, napi_value arg, T *val)
{
return napi_get_value_int32(env, arg, val);
}
template<typename T, std::enable_if_t<std::is_same_v<T, napi_ref>, int32_t> = 0>
napi_status NapiValueConverted(napi_env env, napi_value arg, T *ref)
{
return napi_create_reference(env, arg, 1, ref);
}
template<typename T, std::enable_if_t<std::is_same_v<T, char>, int32_t> = 0>
napi_status NapiValueConverted(napi_env env, napi_value arg, T *buf)
{
constexpr size_t bufSize = 32;
size_t result {0};
return napi_get_value_string_utf8(env, arg, buf, bufSize, &result);
}
template<typename... Ts>
bool MatchParameters(
napi_env env, const napi_value argv[], size_t argc, std::tuple<Ts...> &theTuple, const vecNapiType &typeStd)
{
bool typeMatched = false;
if (argc == typeStd.size()) {
vecNapiType paraType;
paraType.reserve(argc);
for (size_t i = 0; i < argc; i++) {
napi_valuetype valueType = napi_undefined;
napi_typeof(env, argv[i], &valueType);
paraType.emplace_back(valueType);
}
if (paraType == typeStd) {
std::apply(
[env, argc, &argv](Ts &...tupleArgs) {
size_t index {0};
((index < argc ? NapiValueConverted(env, argv[index++], tupleArgs) : napi_ok), ...);
},
theTuple);
typeMatched = true;
}
}
return typeMatched;
}
} // namespace Telephony
} // namespace OHOS
#endif // NAPI_UTIL_H

View File

@ -0,0 +1,28 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef TELEPHONY_NAPI_COMMON_ERROR_H
#define TELEPHONY_NAPI_COMMON_ERROR_H
#include <cstdint>
namespace OHOS {
namespace Telephony {
const int32_t ERROR_NONE = 0;
const int32_t ERROR_DEFAULT = -1;
const int32_t ERROR_SERVICE_UNAVAILABLE = -2;
const int32_t ERROR_PARAMETER_VALUE_INVALID = -3;
} // namespace Telephony
} // namespace OHOS
#endif // TELEPHONY_NAPI_COMMON_ERROR_H

View File

@ -15,13 +15,15 @@
#ifndef CALL_MANAGER_ERRORS_H
#define CALL_MANAGER_ERRORS_H
#include "../../../core_service/interfaces/innerkits/common/telephony_errors.h"
#include "../../common/telephony_errors.h"
namespace OHOS {
namespace TelephonyCallManager {
enum {
CALL_MANAGER_PHONENUM_NULL = CALL_MANAGER_ERR_OFFSET,
namespace Telephony {
enum CallManagerErrorCode {
CALL_MANAGER_PHONE_NUMBER_NULL = CALL_ERR_OFFSET,
CALL_MANAGER_DIAL_FAILED,
CALL_MANAGER_ACCPET_FAILED,
CALL_MANAGER_ACCEPT_FAILED,
CALL_MANAGER_REJECT_FAILED,
CALL_MANAGER_HOLD_FAILED,
CALL_MANAGER_UNHOLD_FAILED,
@ -31,14 +33,64 @@ enum {
CALL_MANAGER_CREATE_CALL_OBJECT_FAIL,
CALL_MANAGER_SETAUDIO_FAILED,
CALL_MANAGER_CALL_NULL,
CALL_MANAGER_CALL_EXIST,
CALL_MANAGER_CALL_EXIST, // already exists and needs to be deleted
CALL_MANAGER_CALL_DISCONNECTED,
CALL_MANAGER_PHONE_BEYOND,
CALL_MANAGER_HAS_NEW_CALL,
CALL_MANAGER_VIDEO_MODE_ERR,
CALL_MANAGER_PHONENUM_INVALID,
CALL_MANAGER_PHONE_NUMBER_INVALID,
CALL_MANAGER_CALLID_INVALID,
CALL_MANAGER_CURRENT_RINGING,
CALL_MANAGER_SWAP_FAILED,
CALL_MANAGER_CALL_IS_NOT_ACTIVATED,
CALL_MANAGER_CALL_IS_NOT_ON_HOLDING,
CALL_MANAGER_SET_MUTE_FAILED,
CALL_MANAGER_MUTE_RINGER_FAILED,
CALL_MANAGER_SET_AUDIO_DEVICE_FAILED,
CALL_MANAGER_GET_IS_RINGING_FAILED,
CALL_MANAGER_UPDATE_CALL_STATE_FAILED,
CALL_MANAGER_UPDATE_CALL_EVENT_FAILED,
CALL_MANAGER_ILLEGAL_CALL_OPERATION,
CALL_MANAGER_CALL_STATE_MISMATCH_OPERATION,
CALL_MANAGER_START_DTMF_FAILED,
CALL_MANAGER_SEND_DTMF_FAILED,
CALL_MANAGER_SEND_DTMF_BUNCH_FAILED,
CALL_MANAGER_STOP_DTMF_FAILED,
CALL_MANAGER_SEND_DTMF_INPUT_IS_EMPTY,
CALL_MANAGER_DTMF_PARAMETER_INVALID,
CALL_MANAGER_FORMATTING_FAILED,
CALL_MANAGER_CONFERENCE_NOT_EXISTS,
CALL_MANAGER_CONFERENCE_CALL_EXCEED_LIMIT,
CALL_MANAGER_UNKNOW_DIAL_TYPE,
CALL_MANAGER_HAS_CALLBACK,
// cellular call
ERR_PARAMETER_INVALID, // parameter error or invalid
ERR_CALL_STATE, // call state error
ERR_CALL_NUMBER_LIMIT, // call number limit
ERR_MMI_TYPE, // includeSupplementary Service、USSD
ERR_SYSTEM_INVOKE, // Error calling standard system library function, such as: strcpy_s、 memset_s
ERR_CONNECTION, // Connection is null
ERR_GET_RADIO_STATE, // radio state error
ERR_REPORT_CALLS_INFO, // report calls info error
ERR_NETWORK_TYPE, // Network type error
ERR_NULL_POINTER, // pointer is nullptr
ERR_PHONE_NUMBER_EMPTY, // phone number is empty
ERR_INVALID_SLOT_ID, // invalid slot id
};
} // namespace TelephonyCallManager
// 3GPP TS 24.008 V3.9.0 (2001-09) 10.5.4.11 Cause
enum PROTOCOL_ERROR_TYPE {
ERR_PARAMETER_OUT_OF_RANGE = PROTOCOL_ERR_OFFSET, // (e.g. parameter out of range)
ERR_CALL_ALREADY_EXISTS, // Call completed elsewhere
ERR_RADIO_STATE, // Radio state error, Network out of order
ERR_MANDATORY_INFO_INVALID, // Invalid mandatory information
ERR_RESOURCE_UNAVAILABLE, // Resources unavailable, unspecified
ERR_OPTION_NOT_AVAILABLE, // service or option not available
ERR_OPTION_NOT_IMPLEMENTED, // service or option not implemented
ERR_DESCRIPTOR_INVALID, // descriptor checked fail, Invalid transaction identifier value
};
} // namespace Telephony
} // namespace OHOS
#endif // CALLMANAGER_ERRORS_H
#endif // CALL_MANAGER_ERRORS_H

View File

@ -0,0 +1,300 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef CALL_MANAGER_INNER_TYPE_H
#define CALL_MANAGER_INNER_TYPE_H
#include <cstdio>
#include <string>
#include <vector>
namespace OHOS {
namespace Telephony {
const int kMaxNumberLen = 30;
const int kMaxSchemeNumberLen = 4;
const uint32_t REJECT_CALL_MSG_MAX_LEN = 300;
constexpr uint32_t MAX_CALL_COUNT = 15;
constexpr uint32_t ACCOUNT_NUMBER_MAX_LENGTH = 100;
constexpr uint32_t CONNECT_SERVICE_WAIT_TIME = 1000; // ms
constexpr int32_t ERR_ID = -1;
// call type
enum CallType {
TYPE_CS = 0, // CS
TYPE_IMS = 1, // IMS
TYPE_OTT = 2, // OTT
TYPE_ERR_CALL = 3, // OTHER
};
// call state
enum TelCallState {
CALL_STATUS_ACTIVE = 0,
CALL_STATUS_HOLDING,
CALL_STATUS_DIALING,
CALL_STATUS_ALERTING,
CALL_STATUS_INCOMING,
CALL_STATUS_WAITING,
CALL_STATUS_DISCONNECTED,
CALL_STATUS_DISCONNECTING,
CALL_STATUS_IDLE,
};
enum TelConferenceState {
TEL_CONFERENCE_IDLE = 0,
TEL_CONFERENCE_ACTIVE,
TEL_CONFERENCE_DISCONNECTING,
TEL_CONFERENCE_DISCONNECTED,
};
// phone type
enum PhoneNetType {
PHONE_TYPE_GSM = 1, // gsm
PHONE_TYPE_CDMA = 2, // cdma
};
// call mode
enum VideoStateType {
TYPE_VOICE = 0, // Voice
TYPE_VIDEO, // Video
};
enum DialScene {
CALL_NORMAL = 0,
CALL_PRIVILEGED,
CALL_EMERGENCY,
};
enum CallDirection {
CALL_DIRECTION_OUT = 0,
CALL_DIRECTION_IN,
CALL_DIRECTION_UNKNOW,
};
enum class CallRunningState {
CALL_RUNNING_STATE_CREATE = 0, // A new session
CALL_RUNNING_STATE_CONNECTING,
CALL_RUNNING_STATE_DIALING,
CALL_RUNNING_STATE_RINGING,
CALL_RUNNING_STATE_ACTIVE,
CALL_RUNNING_STATE_HOLD,
CALL_RUNNING_STATE_ENDED,
CALL_RUNNING_STATE_ENDING,
};
enum class CallEndedType {
UNKNOWN = 0,
PHONE_IS_BUSY,
INVALID_NUMBER,
CALL_ENDED_NORMALLY,
};
struct SIMCardInfo {
int32_t simId; // IccId
int32_t country;
int32_t state; // SIM card active status
PhoneNetType phoneNetType;
};
enum class DialType {
DIAL_CARRIER_TYPE = 0,
DIAL_VOICE_MAIL_TYPE,
DIAL_OTT_TYPE,
DIAL_UNKNOW_TYPE,
};
enum class CallStateToApp {
/**
* Indicates an invalid state, which is used when the call state fails to be obtained.
*/
CALL_STATE_UNKNOWN = -1,
/**
* Indicates that there is no ongoing call.
*/
CALL_STATE_IDLE = 0,
/**
* Indicates that an incoming call is ringing or waiting.
*/
CALL_STATE_RINGING = 1,
/**
* Indicates that a least one call is in the dialing, active, or hold state, and there is no new incoming call
* ringing or waiting.
*/
CALL_STATE_OFFHOOK = 2
};
struct CallAttributeInfo {
char accountNumber[kMaxNumberLen];
bool speakerphoneOn;
int32_t accountId;
VideoStateType videoState;
int32_t startTime; // Call start time
bool isEcc;
CallType callType;
int32_t callId;
TelCallState callState;
TelConferenceState conferenceState;
};
enum CallAbilityEventId {
EVENT_DIAL_AT_CMD_SEND_FAILED = 0,
EVENT_DIAL_NO_CARRIER,
EVENT_START_DTMF_SUCCESS,
EVENT_START_DTMF_FAILED,
EVENT_STOP_DTMF_SUCCESS,
EVENT_STOP_DTMF_FAILED,
EVENT_SEND_DTMF_SUCCESS,
EVENT_SEND_DTMF_FAILED,
EVENT_SEND_DTMF_STRING_SUCCESS,
EVENT_SEND_DTMF_STRING_FAILED,
EVENT_UNKNOW_ID,
};
struct CallEventInfo {
CallAbilityEventId eventId;
};
struct AccountInfo {
int32_t accountId;
int32_t power;
char bundleName[kMaxNumberLen];
bool isEnabled;
};
struct CallReportInfo {
char accountNum[kMaxNumberLen]; // call phone number
int32_t accountId;
CallType callType; // call type: CS、IMS
VideoStateType callMode; // call mode: video or audio
TelCallState state;
int32_t index;
};
struct CallsReportInfo {
std::vector<CallReportInfo> callVec;
int32_t slotId;
};
enum class DisconnectedDetails {
UNKNOWN = 0,
};
enum AudioDevice {
DEVICE_MIC = 0,
DEVICE_SPEAKER,
DEVICE_WIRED_HEADSET,
DEVICE_BLUETOOTH_SCO,
DEVICE_DISABLE,
DEVICE_UNKNOWN,
};
enum CellularCallEventType {
EVENT_REQUEST_RESULT_TYPE = 0,
};
enum RequestResultEventId {
RESULT_DIAL_SEND_FAILED = 0,
RESULT_DIAL_NO_CARRIER = 1,
RESULT_END_SEND_FAILED = 2,
RESULT_REJECT_SEND_FAILED = 3,
RESULT_ACCEPT_SEND_FAILED = 4,
RESULT_HOLD_SEND_FAILED = 5,
RESULT_ACTIVE_SEND_FAILED = 6,
RESULT_SWAP_SEND_FAILED = 7,
RESULT_JOIN_SEND_FAILED = 8,
RESULT_SPLIT_SEND_FAILED = 9,
RESULT_SUPPLEMENT_SEND_FAILED = 10,
RESULT_INITIATE_DTMF_SUCCESS = 11,
RESULT_INITIATE_DTMF_FAILED = 12,
RESULT_CEASE_DTMF_SUCCESS = 13,
RESULT_CEASE_DTMF_FAILED = 14,
RESULT_TRANSMIT_DTMF_SUCCESS = 15,
RESULT_TRANSMIT_DTMF_FAILED = 16,
RESULT_TRANSMIT_DTMF_STRING_SUCCESS = 17,
RESULT_TRANSMIT_DTMF_STRING_FAILED = 18,
RESULT_GET_CURRENT_CALLS_FAILED = 19,
};
enum CallResultReportId {
GET_CALL_WAITING_REPORT_ID = 0,
SET_CALL_WAITING_REPORT_ID,
GET_CALL_RESTRICTION_REPORT_ID,
SET_CALL_RESTRICTION_REPORT_ID,
GET_CALL_TRANSFER_REPORT_ID,
SET_CALL_TRANSFER_REPORT_ID,
GET_CALL_CLIP_ID,
GET_CALL_CLIR_ID,
SET_CALL_CLIR_ID,
};
struct CellularCallEventInfo {
CellularCallEventType eventType;
RequestResultEventId eventId;
};
struct CallWaitResponse {
int32_t result; // 0: ok 1: error
int32_t status;
int32_t classCw;
};
struct ClipResponse {
int32_t result; // 0: ok 1: error
int32_t action;
int32_t clipStat;
};
struct ClirResponse {
int32_t result; // 0: ok 1: error
int32_t action;
int32_t clirStat;
};
struct CallTransferResponse {
int32_t result; // 0: ok 1: error
int32_t status;
int32_t classx;
std::string number;
int32_t type;
};
struct CallRestrictionResponse {
int32_t result; // 0: ok 1: error
int32_t status; // parameter sets/shows the result code presentation status in the TA
int32_t classCw; // parameter shows the subscriber CLIP service status in the network, <0-4>
};
enum DtmfPlaytime {
DTMF_PLAY_TONE_MSEC_0 = 0, // stop play
DTMF_PLAY_TONE_MSEC_1 = 1,
DTMF_PLAY_TONE_MSEC_2 = 95, // Play time, the length is milliseconds
DTMF_PLAY_TONE_MSEC_3 = 150,
DTMF_PLAY_TONE_MSEC_4 = 200,
DTMF_PLAY_TONE_MSEC_5 = 250,
DTMF_PLAY_TONE_MSEC_6 = 300,
DTMF_PLAY_TONE_MSEC_7 = 350,
DTMF_PLAY_TONE_DEFAULT_MSEC = 60000, // default play time
};
enum DtmfPlayIntervalTime {
DTMF_PLAY_TONE_MIN_INTERVAL_MSEC = 10, // Play interval time, the length is milliseconds
DTMF_PLAY_TONE_MAX_INTERVAL_MSEC = 60000,
DTMF_PLAY_TONE_DEFAULT_INTERVAL_MSEC = 0, // Default parameter
};
} // namespace Telephony
} // namespace OHOS
#endif // CALL_MANAGER_INNER_TYPE_H

View File

@ -1,54 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef TELEPHONY_LOG_H
#define TELEPHONY_LOG_H
#include <stdio.h>
#include "hilog/log.h"
#undef LOG_DOMAIN
#undef LOG_TAG
#define LOG_DOMAIN 0xD002B01
#define LOG_TAG "CallManager"
#define __FILENAME__ (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
#define OHOS_DEBUG
#ifndef OHOS_DEBUG
#define DECORATOR_HILOG(op, fmt, args...) \
do { \
op(LOG_CORE, fmt, ##args); \
} while (0)
#else
#define DECORATOR_HILOG(op, fmt, args...) \
do { \
op(LOG_CORE, "{%{public}s()-%{public}s:%{public}d} " fmt, __FUNCTION__, __FILENAME__, __LINE__, ##args); \
} while (0)
#endif
#define CALLMANAGER_DEBUG_LOG(fmt, ...) DECORATOR_HILOG(HILOG_DEBUG, fmt, ##__VA_ARGS__)
#define CALLMANAGER_ERR_LOG(fmt, ...) DECORATOR_HILOG(HILOG_INFO, fmt, ##__VA_ARGS__)
#define CALLMANAGER_WARNING_LOG(fmt, ...) DECORATOR_HILOG(HILOG_WARN, fmt, ##__VA_ARGS__)
#define CALLMANAGER_INFO_LOG(fmt, ...) DECORATOR_HILOG(HILOG_ERROR, fmt, ##__VA_ARGS__)
#define CALLMANAGER_FATAL_LOG(fmt, ...) DECORATOR_HILOG(HILOG_FATAL, fmt, ##__VA_ARGS__)
#define CALLMANAGER_OK 0
#define CALLMANAGER_INVALID_PARAM (-1)
#define CALLMANAGER_INIT_FAIL (-2)
#define CALLMANAGER_ERR (-3)
#define CALLMANAGER_PERMISSION_DENIED (-4)
#endif // TELEPHONY_LOG_H

View File

@ -1,113 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef CALL_MANAGER_TYPE_H
#define CALL_MANAGER_TYPE_H
#include <cstdio>
#include "call_types.h"
namespace OHOS {
namespace TelephonyCallManager {
const int kMaxSchemeNumberLen = 4;
enum DialScene {
CALL_NORMAL = 0,
CALL_PRIVILEGED,
CALL_EMERGENCY,
};
enum class CallStateType {
CALL_STATE_CREATE_TYPE = 0, // A new session
CALL_STATE_CONNECTING_TYPE,
CALL_STATE_DIALING_TYPE,
CALL_STATE_RINGING_TYPE,
CALL_STATE_ACTIVE_TYPE,
CALL_STATE_HOLD_TYPE,
CALL_STATE_ENDED_TYPE,
CALL_STATE_ENDING_TYPE,
};
enum class CallEndedType {
UNKNOWN = 0,
PHONE_IS_BUSY,
INVALID_NUMBER,
CALL_ENDED_NORMALLY,
};
struct SIMCardInfo {
int32_t simId; // IccId
int32_t country;
int32_t state; // SIM card active status
PhoneNetType phoneNetType;
};
enum class CallStateToApp {
/**
* Indicates an invalid state, which is used when the call state fails to be obtained.
*/
CALL_STATE_UNKNOWN = -1,
/**
* Indicates that there is no ongoing call.
*/
CALL_STATE_IDLE = 0,
/**
* Indicates that an incoming call is ringing or waiting.
*/
CALL_STATE_RINGING = 1,
/**
* Indicates that a least one call is in the dialing, active, or hold state, and there is no new incoming call
* ringing or waiting.
*/
CALL_STATE_OFFHOOK = 2
};
struct AccountInfo {
int32_t slotId;
int32_t power;
char bundleName[kMaxNumberLen];
bool isEnabled;
};
struct CellularCallReportInfo {
char phoneNum[kMaxNumberLen]; // call phone number
int32_t phoneId;
CallType callType; // call type: CS、IMS
VedioStateType callMode; // call mode: video or audio
TelCallStates state;
};
struct CallReportInfo {
char accountNum[kMaxNumberLen]; // call phone number
int32_t accountId;
CallType callType; // call type: CS、IMS
VedioStateType callMode; // call mode: video or audio
TelCallStates state;
};
struct CallsReportInfo {
std::vector<CallReportInfo> callVec;
int32_t slotId;
};
enum class DisconnectedDetails {
UNKNOWN = 0,
};
} // namespace TelephonyCallManager
} // namespace OHOS
#endif // CALL_MANAGER_TYPE_H

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "call_ability_callback_death_recipient.h"
namespace OHOS {
namespace Telephony {
CallAbilityCallbackDeathRecipient::CallAbilityCallbackDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback)
: deathCallback_(deathCallback)
{}
void CallAbilityCallbackDeathRecipient::OnRemoteDied(const OHOS::wptr<OHOS::IRemoteObject> &object)
{
if (deathCallback_) {
deathCallback_(object);
}
}
} // namespace Telephony
} // namespace OHOS

View File

@ -0,0 +1,37 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef CALL_ABILITY_CALLBACK_DEATH_RECIPIENT_H
#define CALL_ABILITY_CALLBACK_DEATH_RECIPIENT_H
#include "iremote_broker.h"
namespace OHOS {
namespace Telephony {
class CallAbilityCallbackDeathRecipient : public IRemoteObject::DeathRecipient {
public:
explicit CallAbilityCallbackDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback);
virtual ~CallAbilityCallbackDeathRecipient() = default;
void OnRemoteDied(const wptr<IRemoteObject> &object) override;
private:
std::function<void(const wptr<IRemoteObject> &object)> deathCallback_;
};
} // namespace Telephony
} // namespace OHOS
#endif // CALL_ABILITY_CALLBACK_DEATH_RECIPIENT_H

View File

@ -0,0 +1,131 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "call_ability_callback_proxy.h"
#include "message_option.h"
#include "message_parcel.h"
#include "call_manager_errors.h"
namespace OHOS {
namespace Telephony {
CallAbilityCallbackProxy::CallAbilityCallbackProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<ICallAbilityCallback>(impl)
{}
int32_t CallAbilityCallbackProxy::OnCallDetailsChange(const CallAttributeInfo &info)
{
TELEPHONY_LOGE("start");
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_UPDATE_CALL_STATE_FAILED;
if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallAttributeInfo);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&info, length);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_CALL_STATE_INFO, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("update call state info failed, error: %{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
TELEPHONY_LOGE("end");
return error;
}
int32_t CallAbilityCallbackProxy::OnCallEventChange(const CallEventInfo &info)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_UPDATE_CALL_EVENT_FAILED;
if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallEventInfo);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&info, length);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_CALL_EVENT, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("update call event failed, error: %{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallAbilityCallbackProxy::OnSupplementResult(CallResultReportId reportId, AppExecFwk::PacMap &resultInfo)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = TELEPHONY_FAIL;
if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(reportId);
dataParcel.WriteInt32(resultInfo.GetIntValue("result"));
switch (reportId) {
case CallResultReportId::GET_CALL_WAITING_REPORT_ID:
case CallResultReportId::GET_CALL_RESTRICTION_REPORT_ID:
dataParcel.WriteInt32(resultInfo.GetIntValue("status"));
dataParcel.WriteInt32(resultInfo.GetIntValue("classCw"));
break;
case CallResultReportId::GET_CALL_TRANSFER_REPORT_ID:
dataParcel.WriteInt32(resultInfo.GetIntValue("status"));
dataParcel.WriteInt32(resultInfo.GetIntValue("classx"));
dataParcel.WriteString(resultInfo.GetStringValue("number"));
dataParcel.WriteInt32(resultInfo.GetIntValue("type"));
break;
case CallResultReportId::GET_CALL_CLIP_ID:
dataParcel.WriteInt32(resultInfo.GetIntValue("action"));
dataParcel.WriteInt32(resultInfo.GetIntValue("clipStat"));
break;
case CallResultReportId::GET_CALL_CLIR_ID:
dataParcel.WriteInt32(resultInfo.GetIntValue("action"));
dataParcel.WriteInt32(resultInfo.GetIntValue("clirStat"));
break;
default:
break;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_CALL_SUPPLEMENT_REQUEST, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("update call event failed, error: %{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -0,0 +1,42 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef CALL_ABILITY_CALLBACK_PROXY_H
#define CALL_ABILITY_CALLBACK_PROXY_H
#include "iremote_proxy.h"
#include "i_call_ability_callback.h"
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace Telephony {
class CallAbilityCallbackProxy : public IRemoteProxy<ICallAbilityCallback> {
public:
explicit CallAbilityCallbackProxy(const sptr<IRemoteObject> &impl);
virtual ~CallAbilityCallbackProxy() = default;
int32_t OnCallDetailsChange(const CallAttributeInfo &info) override;
int32_t OnCallEventChange(const CallEventInfo &info) override;
int32_t OnSupplementResult(CallResultReportId reportId, AppExecFwk::PacMap &resultInfo) override;
private:
static inline BrokerDelegator<CallAbilityCallbackProxy> delegator_;
static constexpr HiviewDFX::HiLogLabel LOG_LABEL = {LOG_CORE, LOG_DOMAIN, "CallManager"};
};
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -16,7 +16,7 @@
#include "call_manager_death_recipient.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
CallManagerDeathRecipient::CallManagerDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback)
: deathCallback_(deathCallback)
@ -28,5 +28,5 @@ void CallManagerDeathRecipient::OnRemoteDied(const OHOS::wptr<OHOS::IRemoteObjec
deathCallback_(object);
}
}
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS

View File

@ -15,10 +15,11 @@
#ifndef CALL_MANAGER_DEATH_RECIPIENT_H
#define CALL_MANAGER_DEATH_RECIPIENT_H
#include "iremote_broker.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
class CallManagerDeathRecipient : public IRemoteObject::DeathRecipient {
public:
explicit CallManagerDeathRecipient(const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback);
@ -28,6 +29,7 @@ public:
private:
std::function<void(const wptr<IRemoteObject> &object)> deathCallback_;
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif // CALL_MANAGER_DEATH_RECIPIENT_H

View File

@ -19,146 +19,644 @@
#include "message_parcel.h"
#include "call_manager_errors.h"
#include "call_manager_log.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
CallManagerServiceProxy::CallManagerServiceProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<ICallManagerService>(impl)
{}
int32_t CallManagerServiceProxy::DialCall(std::u16string number, AppExecFwk::PacMap &extras, int32_t &callId)
int32_t CallManagerServiceProxy::RegisterCallBack(const sptr<ICallAbilityCallback> &callback)
{
int32_t error = TELEPHONY_REGISTER_CALLBACK_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteRemoteObject(callback->AsObject().GetRefPtr());
error = Remote()->SendRequest(INTERFACE_REGISTER_CALLBACK, dataParcel, replyParcel, option);
TELEPHONY_LOGD("error = %{public}d", error);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function RegisterCallBack! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
return replyParcel.ReadInt32();
}
int32_t CallManagerServiceProxy::DialCall(std::u16string number, AppExecFwk::PacMap &extras)
{
CALLMANAGER_DEBUG_LOG("CallManagerServiceProxy::DialCall Enter --> ");
int32_t error = CALL_MANAGER_DIAL_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return TELEPHONY_WRITE_DISCRIPTOR_TOKEN_FAIL;
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
callId = TELEPHONY_NO_ERROR;
dataParcel.WriteString16(number);
int32_t accountId = extras.GetIntValue("accountId");
int32_t videoState = extras.GetIntValue("vedioState");
int32_t videoState = extras.GetIntValue("videoState");
int32_t dialScene = extras.GetIntValue("dialScene");
int32_t dialType = extras.GetIntValue("dialType");
dataParcel.WriteInt32(accountId);
dataParcel.WriteInt32(videoState);
dataParcel.WriteInt32(dialScene);
dataParcel.WriteInt32(dialType);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_DIAL_CALL, dataParcel, replyParcel, option);
CALLMANAGER_DEBUG_LOG("error = %{public}d", error);
if (error != TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function DialCall call failed!");
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function DialCall call failed!");
return error;
}
error = replyParcel.ReadInt32();
callId = replyParcel.ReadInt32();
if (callId == TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function DialCall call failed!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
CALLMANAGER_DEBUG_LOG("get callId from call manager server, callId = %{public}d", callId);
CALLMANAGER_DEBUG_LOG("Leave");
return error;
}
int32_t CallManagerServiceProxy::AcceptCall(int32_t callId, int32_t videoState)
int32_t CallManagerServiceProxy::AnswerCall(int32_t callId, int32_t videoState)
{
CALLMANAGER_DEBUG_LOG("CallManagerServiceProxy::AcceptCall Enter -->");
int32_t error = CALL_MANAGER_ACCPET_FAILED;
int32_t error = CALL_MANAGER_ACCEPT_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return TELEPHONY_WRITE_DISCRIPTOR_TOKEN_FAIL;
}
if (videoState != 0 && videoState != 1) {
return CALL_MANAGER_VIDEO_MODE_ERR;
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
dataParcel.WriteInt32(videoState);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_ANSWER_CALL, dataParcel, replyParcel, option);
CALLMANAGER_DEBUG_LOG("error = %{public}d", error);
if (error != TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function AcceptCall call failed! errCode:%{public}d", error);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function AnswerCall call failed! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
CALLMANAGER_DEBUG_LOG("Leave");
return error;
}
int32_t CallManagerServiceProxy::RejectCall(int32_t callId, bool isSendSms, std::u16string content)
int32_t CallManagerServiceProxy::RejectCall(int32_t callId, bool rejectWithMessage, std::u16string textMessage)
{
CALLMANAGER_DEBUG_LOG("CallManagerServiceProxy::RejectCall Enter --> ");
int32_t error = CALL_MANAGER_REJECT_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return TELEPHONY_WRITE_DISCRIPTOR_TOKEN_FAIL;
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
dataParcel.WriteBool(isSendSms);
dataParcel.WriteString16(content);
dataParcel.WriteBool(rejectWithMessage);
dataParcel.WriteString16(textMessage);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_REJECT_CALL, dataParcel, replyParcel, option);
CALLMANAGER_DEBUG_LOG("error = %{public}d", error);
if (error != TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function RejectCall call failed! errCode:%{public}d", error);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function RejectCall call failed! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
CALLMANAGER_DEBUG_LOG("Leave");
return error;
}
int32_t CallManagerServiceProxy::HangUpCall(int32_t callId)
{
CALLMANAGER_DEBUG_LOG("CallManagerServiceProxy::HangUpCall Enter -->");
int32_t error = CALL_MANAGER_HANGUP_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_DISCONNECT_CALL, dataParcel, replyParcel, option);
CALLMANAGER_DEBUG_LOG("error = %{public}d", error);
if (error != TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function HangUpCall call failed! errCode:%{public}d", error);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function HangUpCall call failed! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
CALLMANAGER_DEBUG_LOG("Leave");
return error;
}
int32_t CallManagerServiceProxy::GetCallState()
{
CALLMANAGER_DEBUG_LOG("CallManagerServiceProxy::GetCallState Enter -->");
int32_t error = CALL_MANAGER_HANGUP_FAILED;
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return TELEPHONY_WRITE_DISCRIPTOR_TOKEN_FAIL;
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
error = Remote()->SendRequest(INTERFACE_GET_CALL_STATE, dataParcel, replyParcel, option);
CALLMANAGER_DEBUG_LOG("error = %{public}d", error);
if (error != TELEPHONY_NO_ERROR) {
CALLMANAGER_DEBUG_LOG("Function GetCallState! errCode:%{public}d", error);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_GET_CALL_STATE, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function GetCallState! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
CALLMANAGER_DEBUG_LOG("Leave");
return replyParcel.ReadInt32();
}
} // namespace TelephonyCallManager
int32_t CallManagerServiceProxy::HoldCall(int32_t callId)
{
int32_t error = CALL_MANAGER_HOLD_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_HOLD_CALL, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function HoldCall call failed! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::UnHoldCall(int32_t callId)
{
int32_t error = CALL_MANAGER_UNHOLD_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_UNHOLD_CALL, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function UnHoldCall call failed! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::SwitchCall(int32_t callId)
{
int32_t error = CALL_MANAGER_SWAP_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_SWAP_CALL, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function UnHoldCall call failed! errCode:%{public}d", error);
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
bool CallManagerServiceProxy::HasCall()
{
int error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return false;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return false;
}
error = Remote()->SendRequest(INTERFACE_HAS_CALL, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function SetAudioDevice! errCode:%{public}d", error);
return false;
}
return replyParcel.ReadBool();
}
bool CallManagerServiceProxy::IsNewCallAllowed()
{
int error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return false;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return false;
}
error = Remote()->SendRequest(INTERFACE_IS_NEW_CALL_ALLOWED, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function SetAudioDevice! errCode:%{public}d", error);
return false;
}
return replyParcel.ReadBool();
}
bool CallManagerServiceProxy::IsRinging()
{
int32_t error = CALL_MANAGER_GET_IS_RINGING_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return false;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return false;
}
error = Remote()->SendRequest(INTERFACE_IS_RINGING, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function IsRinging errCode:%{public}d", error);
return false;
}
return replyParcel.ReadBool();
}
bool CallManagerServiceProxy::IsInEmergencyCall()
{
int32_t error = CALL_MANAGER_GET_IS_RINGING_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return false;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return false;
}
error = Remote()->SendRequest(INTERFACE_IS_EMERGENCY_CALL, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function IsInEmergencyCall errCode:%{public}d", error);
return false;
}
return replyParcel.ReadBool();
}
int32_t CallManagerServiceProxy::StartDtmf(int32_t callId, char str)
{
int32_t error = CALL_MANAGER_START_DTMF_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(callId);
dataParcel.WriteInt8(str);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_START_DTMF, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function StartDtmf! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::SendDtmf(int32_t callId, char str)
{
int32_t error = CALL_MANAGER_SEND_DTMF_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(callId);
dataParcel.WriteInt8(str);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_SEND_DTMF, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function SendDtmf! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::SendBurstDtmf(int32_t callId, std::u16string str, int32_t on, int32_t off)
{
int32_t error = CALL_MANAGER_SEND_DTMF_BUNCH_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(callId);
dataParcel.WriteString16(str);
dataParcel.WriteInt32(on);
dataParcel.WriteInt32(off);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_SEND_DTMF_BUNCH, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function SendBurstDtmf! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::StopDtmf(int32_t callId)
{
int32_t error = CALL_MANAGER_STOP_DTMF_FAILED;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(callId);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_STOP_DTMF, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function StopDtmf! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::GetCallWaiting(int32_t slotId)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(slotId);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_GET_CALL_WAITING, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function GetCallWaiting! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::SetCallWaiting(int32_t slotId, bool activate)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteBool(activate);
error = Remote()->SendRequest(
TelephonyCallManagerSurfaceCode::INTERFACE_SET_CALL_WAITING, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function SetCallWaiting! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallManagerServiceProxy::CombineConference(int32_t mainCallId)
{
TELEPHONY_LOGD("Enter");
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(mainCallId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_COMBINE_CONFERENCE, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function CombineConference failed! errCode:%{public}d", error);
}
TELEPHONY_LOGD("Leave");
error = replyParcel.ReadInt32();
return error;
}
bool CallManagerServiceProxy::IsEmergencyPhoneNumber(std::u16string &number, int32_t slotId)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteString16(number);
dataParcel.WriteInt32(slotId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return false;
}
error = Remote()->SendRequest(INTERFACE_IS_EMERGENCY_NUMBER, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function IsEmergencyPhoneNumber call failed! errCode:%{public}d", error);
}
return replyParcel.ReadBool();
}
int32_t CallManagerServiceProxy::FormatPhoneNumber(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteString16(number);
dataParcel.WriteString16(countryCode);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_IS_FORMAT_NUMBER, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function FormatPhoneNumber call failed! errCode:%{public}d", error);
}
formatNumber = replyParcel.ReadString16();
return replyParcel.ReadInt32();
}
int32_t CallManagerServiceProxy::FormatPhoneNumberToE164(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteString16(number);
dataParcel.WriteString16(countryCode);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_IS_FORMAT_NUMBER_E164, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function FormatPhoneNumberToE164 call failed! errCode:%{public}d", error);
}
formatNumber = replyParcel.ReadString16();
return replyParcel.ReadInt32();
}
int32_t CallManagerServiceProxy::GetMainCallId(int32_t callId)
{
int32_t error = TELEPHONY_FAIL;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(INTERFACE_GET_MAINID, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function StartConference call failed! errCode:%{public}d", error);
}
error = replyParcel.ReadInt32();
if (error == TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("function GetMainCallId call failed!");
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
return error;
}
std::vector<std::u16string> CallManagerServiceProxy::GetSubCallIdList(int32_t callId)
{
int32_t error = TELEPHONY_FAIL;
std::vector<std::u16string> list;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return list;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return list;
}
error = Remote()->SendRequest(INTERFACE_GET_SUBCALL_LIST_ID, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function GetSubCallIdList call failed! errCode:%{public}d", error);
}
replyParcel.ReadString16Vector(&list);
return list;
}
std::vector<std::u16string> CallManagerServiceProxy::GetCallIdListForConference(int32_t callId)
{
int32_t error = TELEPHONY_FAIL;
std::vector<std::u16string> list;
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) {
TELEPHONY_LOGE("write descriptor fail");
return list;
}
dataParcel.WriteInt32(callId);
if (Remote() == nullptr) {
TELEPHONY_LOGE("function Remote() return nullptr!");
return list;
}
error = Remote()->SendRequest(INTERFACE_GET_CALL_LIST_ID_FOR_CONFERENCE, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
TELEPHONY_LOGE("Function GetCallIdListForConference call failed! errCode:%{public}d", error);
}
replyParcel.ReadString16Vector(&list);
return list;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -15,6 +15,7 @@
#ifndef CALL_MANAGER_SERVICE_PROXY_H
#define CALL_MANAGER_SERVICE_PROXY_H
#include <cfloat>
#include <cstdio>
#include <string>
@ -24,12 +25,13 @@
#include "iremote_proxy.h"
#include "pac_map.h"
#include "call_manager_type.h"
#include "call_types.h"
#include "call_manager_inner_type.h"
#include "cellular_call_types.h"
#include "i_call_manager_service.h"
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
class CallManagerServiceProxy : public IRemoteProxy<ICallManagerService> {
public:
/**
@ -41,39 +43,46 @@ public:
virtual ~CallManagerServiceProxy() = default;
/**
* Call diale interface
* register callback
*
* @param callback[in], callback function pointer
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t RegisterCallBack(const sptr<ICallAbilityCallback> &callback) override;
/**
* Call dial interface
*
* @param number[in], dial param.
* @param extras[in], extras date.
* @param callId[out], call id.
* @return Returns callId when the value is greater than zero, others on failure.
*/
int32_t DialCall(std::u16string number, AppExecFwk::PacMap &extras, int32_t &callId) override;
int32_t DialCall(std::u16string number, AppExecFwk::PacMap &extras) override;
/**
* Answer call
*
* @param callId[in], call id
* @param videoState[in], 0: audio, 1: video
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t AcceptCall(int32_t callId, int32_t videoState) override;
int32_t AnswerCall(int32_t callId, int32_t videoState) override;
/**
* Reject call
*
* @param callId[in], call id
* @param isSendSms[in], Whether to enter the reason for rejection,true:yes false:no
* @param content[in], The reason you reject the call
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @param rejectWithMessage[in], Whether to enter the reason for rejection,true:yes false:no
* @param textMessage[in], The reason you reject the call
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t RejectCall(int32_t callId, bool isSendSms, std::u16string content) override;
int32_t RejectCall(int32_t callId, bool rejectWithMessage, std::u16string textMessage) override;
/**
* Disconnect call
*
* @param callId[in], call id
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t HangUpCall(int32_t callId) override;
@ -84,9 +93,132 @@ public:
*/
int32_t GetCallState() override;
/**
* Hold call
*
* @param callId[in], call id
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t HoldCall(int32_t callId) override;
/**
* UnHold call
*
* @param callId[in], call id
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t UnHoldCall(int32_t callId) override;
/**
* Switch call
*
* @param callId[in], call id
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int32_t SwitchCall(int32_t callId) override;
/**
* Is there Call
*
* @return Returns TELEPHONY_SUCCESS on has call, others on there is no call.
*/
bool HasCall() override;
/**
* Can I initiate a call
*
* @return Returns TELEPHONY_SUCCESS on can, others on there is not can.
*/
bool IsNewCallAllowed() override;
/**
* Get ringing state
*
* @return Returns ringing state.
*/
bool IsRinging() override;
/**
* Is there an emergency call
*
* @return Returns ture on Emergency call, false on No emergency call.
*/
bool IsInEmergencyCall() override;
/**
* Start dtmf
*
* @param callId[in], call id
* @param str[in], Characters sent
* @return Returns 0 on success, others on failure.
*/
int32_t StartDtmf(int32_t callId, char str) override;
/**
* Send dtmf
*
* @param callId[in], call id
* @param str[in], Characters sent
* @return Returns 0 on success, others on failure.
*/
int32_t SendDtmf(int32_t callId, char str) override;
/**
* Stop dtmf
*
* @param callId[in], call id
* @return Returns 0 on success, others on failure.
*/
int32_t StopDtmf(int32_t callId) override;
/**
* Send dtmf string
*
* @param callId[in], call id
* @param str[in], String sent
* @param on DTMF pulse width, the unit is milliseconds, default is 0.
* @param off DTMF pulse interval, the unit is milliseconds, default is 0.
* @return Returns 0 on success, others on failure.
*/
int32_t SendBurstDtmf(int32_t callId, std::u16string str, int32_t on, int32_t off) override;
/**
* Get Call Waiting
* @param slotId
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t GetCallWaiting(int32_t slotId) override;
/**
* Set Call Waiting
* @param slotId
* @param activate
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t SetCallWaiting(int32_t slotId, bool activate) override;
/**
* CombineConference
*
* @param callId[in], call id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t CombineConference(int32_t mainCallId) override;
bool IsEmergencyPhoneNumber(std::u16string &number, int32_t slotId) override;
int32_t FormatPhoneNumber(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber) override;
int32_t FormatPhoneNumberToE164(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber) override;
int32_t GetMainCallId(int32_t callId) override;
std::vector<std::u16string> GetSubCallIdList(int32_t callId) override;
std::vector<std::u16string> GetCallIdListForConference(int32_t callId) override;
private:
static inline BrokerDelegator<CallManagerServiceProxy> delegator_;
static constexpr HiviewDFX::HiLogLabel LOG_LABEL = {LOG_CORE, LOG_DOMAIN, "CallManager"};
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif // CALL_MANAGER_SERVICE_PROXY_H

View File

@ -14,36 +14,37 @@
*/
#include "call_status_callback_proxy.h"
#include "call_manager_errors.h"
#include "message_option.h"
#include "message_parcel.h"
#include "call_manager_log.h"
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
CallStatusCallbackProxy::CallStatusCallbackProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<ICallStatusCallback>(impl)
{}
int32_t CallStatusCallbackProxy::OnUpdateCallReportInfo(const CallReportInfo &info)
{
CALLMANAGER_ERR_LOG("CallStatusCallbackProxy::OnUpdateCallReportInfo Enter -->");
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int error = -1;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return -1;
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallReportInfo);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&info, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_CALL_INFO, dataParcel, replyParcel, option);
if (error != 0) {
CALLMANAGER_ERR_LOG("update cellular call info failed, error: %{public}d", error);
return -1;
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
@ -51,37 +52,258 @@ int32_t CallStatusCallbackProxy::OnUpdateCallReportInfo(const CallReportInfo &in
int32_t CallStatusCallbackProxy::OnUpdateCallsReportInfo(const CallsReportInfo &info)
{
CALLMANAGER_ERR_LOG("CallStatusCallbackProxy::OnUpdateCallsReportInfo Enter -->");
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t length = sizeof(CallReportInfo);
int error = -1;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
CALLMANAGER_ERR_LOG("write descriptor fail");
return -1;
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(info.callVec.size());
for (auto &it : info.callVec) {
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&it, length);
CALLMANAGER_DEBUG_LOG(
"accountId:%{public}d,callType:%{public}d,state:%{public}d\n", it.accountId, it.callType, it.state);
}
dataParcel.WriteInt32(info.slotId);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_CALLS_INFO, dataParcel, replyParcel, option);
if (error != 0) {
CALLMANAGER_ERR_LOG("update cellular cs call info failed, error: %{public}d", error);
return -1;
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateDisconnectedCause(const DisconnectedDetails &)
int32_t CallStatusCallbackProxy::OnUpdateDisconnectedCause(const DisconnectedDetails &cause)
{
return 0;
return TELEPHONY_SUCCESS;
}
} // namespace TelephonyCallManager
int32_t CallStatusCallbackProxy::OnUpdateEventResultInfo(const CellularCallEventInfo &info)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CellularCallEventInfo);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&info, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_EVENT_RESULT_INFO, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateGetWaitingResult(const CallWaitResponse &callWaitResponse)
{
TELEPHONY_LOGE("OnUpdateGetWaitingResult on");
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallWaitResponse);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&callWaitResponse, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_GET_WAITING, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateSetWaitingResult(int32_t result)
{
TELEPHONY_LOGE("OnUpdateSetWaitingResult on");
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(result);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_SET_WAITING, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateGetRestrictionResult(const CallRestrictionResponse &callLimitResult)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallRestrictionResponse);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&callLimitResult, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_GET_RESTRICTION, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateSetRestrictionResult(int32_t result)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(result);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_SET_RESTRICTION, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateGetTransferResult(const CallTransferResponse &callTransferResponse)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(CallTransferResponse);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&callTransferResponse, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_GET_TRANSFER, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateSetTransferResult(int32_t result)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(result);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_SET_TRANSFER, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateGetCallClipResult(const ClipResponse &clipResponse)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(ClipResponse);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&clipResponse, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_GET_CALL_CLIP, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateGetCallClirResult(const ClirResponse &clirResponse)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
int32_t length = sizeof(ClirResponse);
dataParcel.WriteInt32(length);
dataParcel.WriteRawData((const void *)&clirResponse, length);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_GET_CALL_CLIR, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
int32_t CallStatusCallbackProxy::OnUpdateSetCallClirResult(int32_t result)
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
int32_t error = CALL_MANAGER_HANGUP_FAILED;
if (!dataParcel.WriteInterfaceToken(CallStatusCallbackProxy::GetDescriptor())) {
return TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL;
}
dataParcel.WriteInt32(result);
if (Remote() == nullptr) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = Remote()->SendRequest(UPDATE_SET_CALL_CLIR, dataParcel, replyParcel, option);
if (error != TELEPHONY_SUCCESS) {
return TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL;
}
error = replyParcel.ReadInt32();
return error;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -15,24 +15,35 @@
#ifndef CALL_STATUS_CALLBACK_PROXY_H
#define CALL_STATUS_CALLBACK_PROXY_H
#include "iremote_proxy.h"
#include "i_call_status_callback.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
class CallStatusCallbackProxy : public IRemoteProxy<ICallStatusCallback> {
public:
explicit CallStatusCallbackProxy(const sptr<IRemoteObject> &impl);
virtual ~CallStatusCallbackProxy() = default;
int32_t OnUpdateCallReportInfo(const CallReportInfo &info) override;
int32_t OnUpdateCallsReportInfo(const CallsReportInfo &info) override;
int32_t OnUpdateDisconnectedCause(const DisconnectedDetails &cause) override;
int32_t OnUpdateEventResultInfo(const CellularCallEventInfo &info) override;
int32_t OnUpdateGetWaitingResult(const CallWaitResponse &callWaitResponse) override;
int32_t OnUpdateSetWaitingResult(int32_t result) override;
int32_t OnUpdateGetRestrictionResult(const CallRestrictionResponse &callLimitResult) override;
int32_t OnUpdateSetRestrictionResult(int32_t result) override;
int32_t OnUpdateGetTransferResult(const CallTransferResponse &callTransferResponse) override;
int32_t OnUpdateSetTransferResult(int32_t result) override;
int32_t OnUpdateGetCallClipResult(const ClipResponse &clipResponse) override;
int32_t OnUpdateGetCallClirResult(const ClirResponse &clirResponse) override;
int32_t OnUpdateSetCallClirResult(int32_t result) override;
private:
static inline BrokerDelegator<CallStatusCallbackProxy> delegator_;
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -16,7 +16,7 @@
#include "cellular_call_callback_death_recipient.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
CellularCallCallbackDeathRecipient::CellularCallCallbackDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback)
: deathCallback_(deathCallback)
@ -28,5 +28,5 @@ void CellularCallCallbackDeathRecipient::OnRemoteDied(const OHOS::wptr<OHOS::IRe
deathCallback_(object);
}
}
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS

View File

@ -15,15 +15,15 @@
#ifndef CELLULAR_CALL_CALLBACK_DEATH_RECIPIENT_H
#define CELLULAR_CALL_CALLBACK_DEATH_RECIPIENT_H
#include "iremote_broker.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
class CellularCallCallbackDeathRecipient : public IRemoteObject::DeathRecipient {
public:
explicit CellularCallCallbackDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback);
virtual ~CellularCallCallbackDeathRecipient() = default;
void OnRemoteDied(const wptr<IRemoteObject> &object) override;
@ -31,6 +31,7 @@ public:
private:
std::function<void(const wptr<IRemoteObject> &object)> deathCallback_;
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_CALL_CALLBACK_DEATH_RECIPIENT_H

View File

@ -0,0 +1,46 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef I_CALL_ABILITY_CALLBACK_H
#define I_CALL_ABILITY_CALLBACK_H
#include "pac_map.h"
#include "iremote_broker.h"
#include "call_manager_inner_type.h"
namespace OHOS {
namespace Telephony {
class ICallAbilityCallback : public IRemoteBroker {
public:
virtual ~ICallAbilityCallback() = default;
virtual int32_t OnCallDetailsChange(const CallAttributeInfo &info) = 0;
virtual int32_t OnCallEventChange(const CallEventInfo &info) = 0;
virtual int32_t OnSupplementResult(CallResultReportId reportId, AppExecFwk::PacMap &resultInfo) = 0;
enum TelephonyCallManagerAbilityCode {
UPDATE_CALL_STATE_INFO = 0,
UPDATE_CALL_EVENT,
UPDATE_CALL_SUPPLEMENT_REQUEST,
};
public:
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ICallAbilityCallback");
};
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -15,6 +15,7 @@
#ifndef I_CALL_MANAGER_SERVICE_H
#define I_CALL_MANAGER_SERVICE_H
#include <cstdio>
#include <string>
#include <vector>
@ -22,74 +23,88 @@
#include "iremote_broker.h"
#include "pac_map.h"
#include "call_manager_type.h"
#include "call_types.h"
#include "call_manager_inner_type.h"
#include "cellular_call_types.h"
#include "i_call_ability_callback.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
extern "C" {
enum TelephonyCallManagerSurfaceCode {
INTERFACE_DIAL_CALL = 0,
INTERFACE_REGISTER_CALLBACK = 0,
INTERFACE_DIAL_CALL,
INTERFACE_ANSWER_CALL,
INTERFACE_REJECT_CALL,
INTERFACE_HOLD_CALL,
INTERFACE_UNHOLD_CALL,
INTERFACE_DISCONNECT_CALL,
INTERFACE_GET_CALL_STATE,
INTERFACE_SWAP_CALL,
INTERFACE_SEPARATE_CONFERENCE,
INTERFACE_JOIN_CONFERENCE,
INTERFACE_HAS_CALL,
INTERFACE_IS_NEW_CALL_ALLOWED,
INTERFACE_IS_RINGING,
INTERFACE_IS_EMERGENCY_CALL,
INTERFACE_IS_EMERGENCY_NUMBER,
INTERFACE_IS_FORMAT_NUMBER,
INTERFACE_IS_FORMAT_NUMBER_E164,
INTERFACE_COMBINE_CONFERENCE,
INTERFACE_GET_MAIN_CALL_ID,
INTERFACE_GET_SUB_CALL_ID_LIST,
INTERFACE_GET_CALL_ID_LIST_FOR_CONFERENCE,
INTERFACE_GET_PREDEFINE_REJECT_MESSAGES,
INTERFACE_GETTRANSFER_NUMBER,
INTERFACE_SETTRANSFER_NUMBER,
INTERFACE_INVITE_TO_CONFERENCE,
INTERFACE_KICKOUT_FROM_CONFERENCE,
INTERFACE_LEAVE_CONFERENCE,
INTERFACE_UPGRADE_CALL,
INTERFACE_DOWNGRADE_CALL,
INTERFACE_SET_VOLTE,
INTERFACE_SET_WIFICALLING,
INTERFACE_SET_WIFICALLING_MODE,
INTERFACE_SET_VOLTE_STRONG_MODE,
INTERFACE_SEPARATE_CONFERENCE,
INTERFACE_START_DTMF,
INTERFACE_STOP_DTMF,
INTERFACE_SEND_DTMF,
INTERFACE_SEND_DTMF_BUNCH,
INTERFACE_HAS_INCALL,
INTERFACE_IS_NEW_CALL_ALLOWED,
INTERFACE_MUTE_RINGING,
INTERFACE_GET_CALL_STATE,
INTERFACE_IS_RINGING,
INTERFACE_IS_IN_EMERGENCY_CALL,
INTERFACE_CANCEL_MISSED_CALLS_NOTIFICATION,
INTERFACE_SET_AUDIO_ROUTE,
INTERFACE_SET_MUTED,
INTERFACE_IS_VIDEO_CALLING_ENABLED,
INTERFACE_HAS_VOICE_CAPABILITY,
INTERFACE_CTRL_CAMERA,
INTERFACE_SET_PREVIEW_WINDOW,
INTERFACE_SET_DISPLAY_WINDOW,
INTERFACE_SET_CAMERA_ZOOM,
INTERFACE_SET_PAUSE_IMAGE,
INTERFACE_SET_DEV_DIRECTION,
INTERFACE_GET_CALL_WAITING,
INTERFACE_SET_CALL_WAITING,
INTERFACE_GET_CALL_RESTRICTION,
INTERFACE_SET_CALL_RESTRICTION,
INTERFACE_GET_CALL_TRANSFER,
INTERFACE_SET_CALL_TRANSFER,
INTERFACE_GET_MAINID,
INTERFACE_GET_SUBCALL_LIST_ID,
INTERFACE_GET_CALL_LIST_ID_FOR_CONFERENCE,
INTERFACE_SET_MUTE,
INTERFACE_MUTE_RINGER,
INTERFACE_SET_AUDIO_DEVICE,
INTERFACE_PLAY_DTMF,
};
} // end extern
class ICallManagerService : public IRemoteBroker {
public:
virtual ~ICallManagerService() = default;
virtual int32_t DialCall(std::u16string number, AppExecFwk::PacMap &extras, int32_t &callId) = 0;
virtual int32_t AcceptCall(int32_t callId, int32_t videoState) = 0;
virtual int32_t RejectCall(int32_t callId, bool isSendSms, std::u16string content) = 0;
virtual int32_t RegisterCallBack(const sptr<ICallAbilityCallback> &callback) = 0;
virtual int32_t DialCall(std::u16string number, AppExecFwk::PacMap &extras) = 0;
virtual int32_t AnswerCall(int32_t callId, int32_t videoState) = 0;
virtual int32_t RejectCall(int32_t callId, bool rejectWithMessage, std::u16string textMessage) = 0;
virtual int32_t HangUpCall(int32_t callId) = 0;
virtual int32_t GetCallState() = 0;
virtual int32_t HoldCall(int32_t callId) = 0;
virtual int32_t UnHoldCall(int32_t callId) = 0;
virtual int32_t SwitchCall(int32_t callId) = 0;
virtual bool HasCall() = 0;
virtual bool IsNewCallAllowed() = 0;
virtual bool IsRinging() = 0;
virtual bool IsInEmergencyCall() = 0;
virtual int32_t StartDtmf(int32_t callId, char str) = 0;
virtual int32_t SendDtmf(int32_t callId, char str) = 0;
virtual int32_t StopDtmf(int32_t callId) = 0;
virtual int32_t SendBurstDtmf(int32_t callId, std::u16string str, int32_t on, int32_t off) = 0;
virtual int32_t GetCallWaiting(int32_t slotId) = 0;
virtual int32_t SetCallWaiting(int32_t slotId, bool activate) = 0;
virtual int32_t CombineConference(int32_t mainCallId) = 0;
virtual bool IsEmergencyPhoneNumber(std::u16string &number, int32_t slotId) = 0;
virtual int32_t FormatPhoneNumber(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber) = 0;
virtual int32_t FormatPhoneNumberToE164(
std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber) = 0;
virtual int32_t GetMainCallId(int32_t callId) = 0;
virtual std::vector<std::u16string> GetSubCallIdList(int32_t callId) = 0;
virtual std::vector<std::u16string> GetCallIdListForConference(int32_t callId) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ipc.ITelephonyCallManagerService");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ICallManagerService");
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif // I_CALL_MANAGER_SERVICE_H

View File

@ -15,11 +15,13 @@
#ifndef I_CALL_STATUS_CALLBACK_H
#define I_CALL_STATUS_CALLBACK_H
#include "call_manager_inner_type.h"
#include "iremote_broker.h"
#include "call_manager_type.h"
namespace OHOS {
namespace TelephonyCallManager {
namespace Telephony {
class ICallStatusCallback : public IRemoteBroker {
public:
virtual ~ICallStatusCallback() = default;
@ -27,16 +29,37 @@ public:
virtual int32_t OnUpdateCallReportInfo(const CallReportInfo &info) = 0;
virtual int32_t OnUpdateCallsReportInfo(const CallsReportInfo &info) = 0;
virtual int32_t OnUpdateDisconnectedCause(const DisconnectedDetails &cause) = 0;
virtual int32_t OnUpdateEventResultInfo(const CellularCallEventInfo &info) = 0;
virtual int32_t OnUpdateGetWaitingResult(const CallWaitResponse &callWaitResponse) = 0;
virtual int32_t OnUpdateSetWaitingResult(int32_t result) = 0;
virtual int32_t OnUpdateGetRestrictionResult(const CallRestrictionResponse &callLimitResult) = 0;
virtual int32_t OnUpdateSetRestrictionResult(int32_t result) = 0;
virtual int32_t OnUpdateGetTransferResult(const CallTransferResponse &callTransferResponse) = 0;
virtual int32_t OnUpdateSetTransferResult(int32_t result) = 0;
virtual int32_t OnUpdateGetCallClipResult(const ClipResponse &clipResponse) = 0;
virtual int32_t OnUpdateGetCallClirResult(const ClirResponse &clirResponse) = 0;
virtual int32_t OnUpdateSetCallClirResult(int32_t result) = 0;
enum {
enum TelephonyCallManagerUpdateCode {
UPDATE_CALL_INFO = 0,
UPDATE_CALLS_INFO,
UPDATE_DISCONNECTED_CAUSE,
UPDATE_EVENT_RESULT_INFO,
UPDATE_GET_WAITING,
UPDATE_SET_WAITING,
UPDATE_GET_RESTRICTION,
UPDATE_SET_RESTRICTION,
UPDATE_GET_TRANSFER,
UPDATE_SET_TRANSFER,
UPDATE_GET_CALL_CLIP,
UPDATE_GET_CALL_CLIR,
UPDATE_SET_CALL_CLIR,
};
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ohos.callManager.ICallStatusCallback");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ICallStatusCallback");
};
} // namespace TelephonyCallManager
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -1,58 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef CALL_TYPES_H
#define CALL_TYPES_H
#include <cstdio>
#include <string>
#include <vector>
namespace OHOS {
const int kMaxNumberLen = 30;
// call state
enum TelCallStates {
CALL_STATUS_ACTIVE = 0,
CALL_STATUS_HOLDING,
CALL_STATUS_DIALING,
CALL_STATUS_ALERTING,
CALL_STATUS_INCOMING,
CALL_STATUS_WAITING,
CALL_STATUS_DISCONNECTED,
CALL_STATUS_DISCONNECTING,
CALL_STATUS_IDLE,
};
// call type
enum CallType {
TYPE_CS = 0, // CS
TYPE_IMS = 1, // IMS
TYPE_OTT = 2, // OTT
TYPE_ERR_CALL = 3, // OTHER
};
// phone type
enum PhoneNetType {
PHONE_TYPE_GSM = 1, // gsm
PHONE_TYPE_CDMA = 2, // cdma
};
// call mode
enum class VedioStateType {
TYPE_VOICE = 0, // Voice
TYPE_VIDEO, // Video
};
} // namespace OHOS
#endif

View File

@ -17,25 +17,12 @@
#define CELLULAR_CALL_CELLULAR_CALL_TYPES_H
#include <map>
#include "call_types.h"
#include "call_manager_errors.h"
#include "call_manager_inner_type.h"
namespace OHOS {
namespace CellularCall {
enum ErrorCode {
ERR_PARAMETER_INVALID = 0x02 + 1, // parameter error or invalid
ERR_CALL_STATE, // call state error
ERR_RADIO_STATE, // Radio state error
ERR_FDN_TYPE, // FDN type
ERR_MMI_TYPE, // includeSupplementary Service、USSD
ERR_SYSTEM_INVOKE, // Error calling standard system library function
ERR_CONNECTION, // Connection is null
ERR_RIL_MANAGER, // ril manager is nullptr
ERR_GET_RADIO_STATE, // radio state error
ERR_REPORT_CALLS_INFO, // report calls info error
ERR_NETWORK_TYPE, // Network type error
};
/**************************common**********************************/
namespace Telephony {
const int32_t MAX_SIZE = 10;
/***********************down event**********************************/
struct CellularCallInfo {
@ -43,25 +30,83 @@ struct CellularCallInfo {
char phoneNum[kMaxNumberLen]; // call phone number
int32_t slotId; // del
int32_t accountId;
PhoneNetType phoneNetType; // 1: gsm 2: cdma
CallType callType; // call type: CS、IMS
int32_t videoState; // 0: audio 1:video
int32_t index; // CallInfo index
};
/*************************up event********************************/
struct CellularCallReportInfo {
char phoneNum[kMaxNumberLen]; // call phone number
int32_t phoneId;
CallType callType; // call type: CS、IMS
VedioStateType callMode; // call mode: video or audio
TelCallStates state;
/**
* 27007-430_2001 7.11 Call forwarding number and conditions +CCFC
* 3GPP TS 22.082 [4]
* <mode>:
* 0 disable
* 1 enable
* 2 query status
* 3 registration
* 4 erasure
*/
enum CallTransferSettingType {
DISABLE = 0,
ENABLE = 1,
QUERY_STATUS = 2,
REGISTRATION = 3,
ERASURE = 4,
};
struct CellularCSCallResponseInfo {
std::vector<CellularCallReportInfo> callVec;
int32_t slotId;
/**
* 27007-430_2001 7.11 Call forwarding number and conditions +CCFC
* 3GPP TS 22.082 [4]
* <reason>:
* 0 unconditional
* 1 mobile busy
* 2 no reply
* 3 not reachable
* 4 all call forwarding (refer 3GPP TS 22.030 [19])
* 5 all conditional call forwarding (refer 3GPP TS 22.030 [19])
*/
enum CallTransferType {
UNCONDITIONAL = 0,
MOBILE_BUSY = 1,
NO_REPLY = 2,
NOT_REACHABLE = 3,
};
} // namespace CellularCall
struct CallTransferInfo {
CallTransferSettingType settingType;
CallTransferType type;
char transferNum[kMaxNumberLen];
};
// 3GPP TS 22.030 V4.0.0 (2001-03)
// 3GPP TS 22.088 V4.0.0 (2001-03)
enum CallRestrictionType {
RESTRICTION_TYPE_ALL_OUTGOING = 0,
RESTRICTION_TYPE_INTERNATIONAL = 1,
RESTRICTION_TYPE_INTERNATIONAL_EXCLUDING_HOME = 2,
RESTRICTION_TYPE_ALL_INCOMING = 3,
RESTRICTION_TYPE_ROAMING_INCOMING = 4,
};
// 3GPP TS 22.088 V4.0.0 (2001-03)
enum CallRestrictionMode {
RESTRICTION_MODE_DEACTIVATION = 0,
RESTRICTION_MODE_ACTIVATION = 1,
RESTRICTION_MODE_QUERY = 2,
};
struct CallRestrictionInfo {
CallRestrictionType fac;
CallRestrictionMode mode;
char password[kMaxNumberLen];
};
// 3GPP TS 27.007 V3.9.0 (2001-06) Call related supplementary services +CHLD
// 3GPP TS 27.007 V3.9.0 (2001-06) 7.22 Informative examples
enum CallSupplementType {
TYPE_HANG_UP_HOLD_WAIT = 0, // release the held call and the wait call
TYPE_HANG_UP_ACTIVE = 1, // release the active call and recover the held call
TYPE_HANG_UP_ALL = 2, // release all calls
};
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_CALL_CELLULAR_CALL_TYPES_H

View File

@ -16,7 +16,7 @@
#include "cellular_call_death_recipient.h"
namespace OHOS {
namespace CellularCall {
namespace Telephony {
CellularCallDeathRecipient::CellularCallDeathRecipient(
const std::function<void(const wptr<IRemoteObject> &object)> &deathCallback)
: deathCallback_(deathCallback)
@ -28,5 +28,5 @@ void CellularCallDeathRecipient::OnRemoteDied(const OHOS::wptr<OHOS::IRemoteObje
deathCallback_(object);
}
}
} // namespace CellularCall
} // namespace Telephony
} // namespace OHOS

View File

@ -12,11 +12,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TELEPHONY_CELLULAR_CALL_DEATH_RECIPIENT_H
#define TELEPHONY_CELLULAR_CALL_DEATH_RECIPIENT_H
#include "iremote_broker.h"
namespace OHOS {
namespace CellularCall {
namespace Telephony {
class CellularCallDeathRecipient : public IRemoteObject::DeathRecipient {
public:
explicit CellularCallDeathRecipient(
@ -27,6 +30,6 @@ public:
private:
std::function<void(const wptr<IRemoteObject> &object)> deathCallback_;
};
} // namespace CellularCall
} // namespace Telephony
} // namespace OHOS
#endif // TELEPHONY_CELLULAR_CALL_DEATH_RECIPIENT_H

View File

@ -15,11 +15,12 @@
#ifndef CELLULAR_CALL_INTERFACE_H
#define CELLULAR_CALL_INTERFACE_H
#include "cellular_call_types.h"
#include "i_call_status_callback.h"
namespace OHOS {
namespace CellularCall {
namespace Telephony {
class CellularCallInterface : public IRemoteBroker {
public:
// operation type
@ -28,66 +29,207 @@ public:
END = 2,
REJECT = 3,
ANSWER = 4,
EMERGENCY_CALL = 5,
REGISTER_CALLBACK = 6,
UNREGISTER_CALLBACK = 7,
HOLD = 5,
ACTIVE = 6,
SWAP = 7,
URGENT_CALL = 8,
JOIN = 9,
SPLIT = 10,
INITIATE_DTMF = 11,
CEASE_DTMF = 12,
TRANSMIT_DTMF = 13,
TRANSMIT_DTMF_STRING = 14,
SET_CALL_TRANSFER = 15,
INQUIRE_CALL_TRANSFER = 16,
SET_CALL_WAITING = 17,
INQUIRE_CALL_WAITING = 18,
SET_CALL_RESTRICTION = 19,
INQUIRE_CALL_RESTRICTION = 20,
REGISTER_CALLBACK = 21,
UNREGISTER_CALLBACK = 22,
CALL_SUPPLEMENT = 23,
};
/**
* Call management dial interface
*
* @param CellularCall, dial param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int Dial(const CellularCallInfo &dialInfo) = 0;
virtual int Dial(const CellularCallInfo &callInfo) = 0;
/**
* End.
*
* @param CallInfo, End param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int End(const CellularCallInfo &dialInfo) = 0;
virtual int End(const CellularCallInfo &callInfo) = 0;
/**
* Answer.
*
* @param CallInfo, Answer param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int Answer(const CellularCallInfo &dialInfo) = 0;
virtual int Answer(const CellularCallInfo &callInfo) = 0;
/**
* Reject.
*
* @param CallInfo, Reject param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int Reject(const CellularCallInfo &dialInfo) = 0;
virtual int Reject(const CellularCallInfo &callInfo) = 0;
/**
* Is it an emergency call
* @param string &phoneNum
* @param slotId
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* Hold.
*
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int IsUrgentCall(const std::string &phoneNum, int32_t slotId) = 0;
virtual int Hold() = 0;
/**
* Active.
*
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int Active() = 0;
/**
* Swap.
*
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int Swap() = 0;
/**
* IsUrgentCall.
*
* @param phone number.
* @param slotId.
* @param errorCode.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int IsUrgentCall(const std::string &phoneNum, int32_t slotId, int32_t &errorCode) = 0;
/**
* Merge into multiple calls
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int Join() = 0;
/**
* Split.
*
* @param std::string splitString
* @param index
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int Split(const std::string &splitString, int32_t index) = 0;
/**
* CallSupplement.
*
* @param CallSupplementType
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int CallSupplement(CallSupplementType type) = 0;
/**
* InitiateDTMF.
*
* @param DTMF Code.
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int InitiateDTMF(char cDTMFCode, const std::string &phoneNum) = 0;
/**
* CeaseDTMF.
*
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int CeaseDTMF(const std::string &phoneNum) = 0;
/**
* TransmitDTMF.
*
* @param DTMF Code.
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int TransmitDTMF(char cDTMFCode, const std::string &phoneNum) = 0;
/**
* Send DTMF String.
* @param DTMF Code string.
* @param phoneNum.
* @param switchOn.
* @param switchOff.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t TransmitDTMFString(
const std::string &dtmfCodeStr, const std::string &phoneNum, int32_t switchOn, int32_t switchOff) = 0;
/**
* Set Call Transfer
* @param CallTransferInfo
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t SetCallTransfer(const CallTransferInfo &ctInfo, int32_t slotId) = 0;
/**
* Inquire Call Transfer
* @param CallTransferType
* @param slotId
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t InquireCallTransfer(CallTransferType type, int32_t slotId) = 0;
/**
* Set Call Waiting
* @param activate
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t SetCallWaiting(bool activate, int32_t slotId) = 0;
/**
* Inquire Call Waiting
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t InquireCallWaiting(int32_t slotId) = 0;
/**
* Set Call Restriction
* @param CallRestrictionInfo
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t SetCallRestriction(const CallRestrictionInfo &cRInfo, int32_t slotId) = 0;
/**
* Inquire Call Restriction
* @param CallRestrictionType
* @return Returns kTelephonyNoErr on success, others on failure.
*/
virtual int32_t InquireCallRestriction(CallRestrictionType facType, int32_t slotId) = 0;
/**
* Register CallBack
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int RegisterCallManagerCallBack(const sptr<TelephonyCallManager::ICallStatusCallback> &callback) = 0;
virtual int RegisterCallManagerCallBack(const sptr<ICallStatusCallback> &callback) = 0;
/**
* UnRegister CallBack
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int UnRegisterCallManagerCallBack() = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ipc.CellularCallInterface");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.CellularCallInterface");
};
} // namespace CellularCall
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_CALL_INTERFACE_H

View File

@ -16,7 +16,7 @@
#include "cellular_call_proxy.h"
namespace OHOS {
namespace CellularCall {
namespace Telephony {
int CellularCallProxy::Dial(const CellularCallInfo &callInfo)
{
MessageOption option;
@ -25,6 +25,9 @@ int CellularCallProxy::Dial(const CellularCallInfo &callInfo)
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&callInfo, sizeof(CellularCallInfo))) {
return ERR_SYSTEM_INVOKE;
}
@ -32,7 +35,7 @@ int CellularCallProxy::Dial(const CellularCallInfo &callInfo)
if (error == ERR_NONE) {
return out.ReadInt32();
}
return 0;
return error;
}
int CellularCallProxy::End(const CellularCallInfo &callInfo)
@ -43,6 +46,9 @@ int CellularCallProxy::End(const CellularCallInfo &callInfo)
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&callInfo, sizeof(CellularCallInfo))) {
return ERR_SYSTEM_INVOKE;
}
@ -51,7 +57,7 @@ int CellularCallProxy::End(const CellularCallInfo &callInfo)
if (error == ERR_NONE) {
return out.ReadInt32();
}
return 0;
return error;
}
int CellularCallProxy::Reject(const CellularCallInfo &callInfo)
@ -63,6 +69,9 @@ int CellularCallProxy::Reject(const CellularCallInfo &callInfo)
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&callInfo, sizeof(CellularCallInfo))) {
return ERR_SYSTEM_INVOKE;
}
@ -70,7 +79,7 @@ int CellularCallProxy::Reject(const CellularCallInfo &callInfo)
if (error == ERR_NONE) {
return out.ReadInt32();
}
return 0;
return error;
}
int CellularCallProxy::Answer(const CellularCallInfo &callInfo)
@ -82,6 +91,9 @@ int CellularCallProxy::Answer(const CellularCallInfo &callInfo)
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&callInfo, sizeof(CellularCallInfo))) {
return ERR_SYSTEM_INVOKE;
}
@ -89,10 +101,10 @@ int CellularCallProxy::Answer(const CellularCallInfo &callInfo)
if (error == ERR_NONE) {
return out.ReadInt32();
}
return 0;
return error;
}
int CellularCallProxy::IsUrgentCall(const std::string &phoneNum, int32_t slotId)
int CellularCallProxy::Hold()
{
MessageOption option;
MessageParcel in;
@ -101,23 +113,58 @@ int CellularCallProxy::IsUrgentCall(const std::string &phoneNum, int32_t slotId)
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(EMERGENCY_CALL, in, out, option);
int error = Remote()->SendRequest(HOLD, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return 0;
return error;
}
int CellularCallProxy::RegisterCallManagerCallBack(const sptr<TelephonyCallManager::ICallStatusCallback> &callback)
int CellularCallProxy::Active()
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(ACTIVE, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::Swap()
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(SWAP, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::RegisterCallManagerCallBack(const sptr<ICallStatusCallback> &callback)
{
if (callback == nullptr) {
return -1;
return ERR_PARAMETER_INVALID;
}
MessageParcel data;
@ -127,16 +174,19 @@ int CellularCallProxy::RegisterCallManagerCallBack(const sptr<TelephonyCallManag
if (!data.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!data.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!data.WriteRemoteObject(callback->AsObject().GetRefPtr())) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(REGISTER_CALLBACK, data, reply, option);
if (error != ERR_NONE) {
return error;
}
if (error == ERR_NONE) {
return reply.ReadInt32();
}
return error;
}
int CellularCallProxy::UnRegisterCallManagerCallBack()
{
@ -147,12 +197,359 @@ int CellularCallProxy::UnRegisterCallManagerCallBack()
if (!data.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(UNREGISTER_CALLBACK, data, reply, option);
if (error != ERR_NONE) {
return error;
if (!data.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(UNREGISTER_CALLBACK, data, reply, option);
if (error == ERR_NONE) {
return reply.ReadInt32();
}
} // namespace CellularCall
return error;
}
int CellularCallProxy::IsUrgentCall(const std::string &phoneNum, int32_t slotId, int32_t &errorCode)
{
MessageParcel in;
MessageParcel out;
MessageOption option;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(errorCode)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(URGENT_CALL, in, out, option);
if (error == ERR_NONE) {
error = out.ReadInt32();
errorCode = out.ReadInt32();
}
return error;
}
int CellularCallProxy::Join()
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(JOIN, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::Split(const std::string &splitString, int32_t index)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(splitString)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(index)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(SPLIT, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::CallSupplement(CallSupplementType type)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(type)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(CALL_SUPPLEMENT, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::InitiateDTMF(char cDTMFCode, const std::string &phoneNum)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteCString(&cDTMFCode)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(INITIATE_DTMF, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::CeaseDTMF(const std::string &phoneNum)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(CEASE_DTMF, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int CellularCallProxy::TransmitDTMF(char cDTMFCode, const std::string &phoneNum)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteCString(&cDTMFCode)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
return ERR_SYSTEM_INVOKE;
}
int error = Remote()->SendRequest(TRANSMIT_DTMF, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::TransmitDTMFString(
const std::string &dtmfCodeStr, const std::string &phoneNum, int32_t switchOn, int32_t switchOff)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(dtmfCodeStr)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteString(phoneNum)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(switchOn)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(switchOff)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(TRANSMIT_DTMF_STRING, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::SetCallTransfer(const CallTransferInfo &ctInfo, int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&ctInfo, sizeof(CallTransferInfo))) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(SET_CALL_TRANSFER, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::InquireCallTransfer(CallTransferType type, int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(type)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(INQUIRE_CALL_TRANSFER, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::SetCallWaiting(bool activate, int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteBool(activate)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(SET_CALL_WAITING, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::InquireCallWaiting(int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(INQUIRE_CALL_WAITING, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::SetCallRestriction(const CallRestrictionInfo &crInfo, int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteRawData((const void *)&crInfo, sizeof(CallRestrictionInfo))) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(SET_CALL_RESTRICTION, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
int32_t CellularCallProxy::InquireCallRestriction(CallRestrictionType facType, int32_t slotId)
{
MessageOption option;
MessageParcel in;
MessageParcel out;
if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(DATA_SIZE)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(facType)) {
return ERR_SYSTEM_INVOKE;
}
if (!in.WriteInt32(slotId)) {
return ERR_SYSTEM_INVOKE;
}
int32_t error = Remote()->SendRequest(INQUIRE_CALL_RESTRICTION, in, out, option);
if (error == ERR_NONE) {
return out.ReadInt32();
}
return error;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -20,7 +20,7 @@
#include "iremote_proxy.h"
namespace OHOS {
namespace CellularCall {
namespace Telephony {
class CellularCallProxy : public IRemoteProxy<CellularCallInterface> {
public:
/**
@ -36,7 +36,7 @@ public:
* Call management dial interface
*
* @param CellularCallInfo, dial param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int Dial(const CellularCallInfo &callInfo) override;
@ -44,7 +44,7 @@ public:
* End.
*
* @param CellularCallInfo, End param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int End(const CellularCallInfo &callInfo) override;
@ -52,7 +52,7 @@ public:
* Reject.
*
* @param CellularCallInfo, Reject param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int Reject(const CellularCallInfo &callInfo) override;
@ -60,34 +60,164 @@ public:
* Answer.
*
* @param CellularCallInfo, Answer param.
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int Answer(const CellularCallInfo &callInfo) override;
/**
* @brief Is it an emergency call
* @param string &phoneNum
* @param slotId
* @return bool
*/
int IsUrgentCall(const std::string &phoneNum, int32_t slotId) override;
/**
* RegisterCallBack
* Hold.
*
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int RegisterCallManagerCallBack(const sptr<TelephonyCallManager::ICallStatusCallback> &callback) override;
int Hold() override;
/**
* UnRegister CallBack
* @return Returns TELEPHONY_NO_ERROR on success, others on failure.
* Active.
*
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int Active() override;
/**
* Swap.
*
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int Swap() override;
/**
* IsUrgentCall.
*
* @param phone number.
* @param slotId.
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int IsUrgentCall(const std::string &phoneNum, int32_t slotId, int32_t &errorCode) override;
/**
* Merge into multiple calls
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int Join() override;
/**
* Split.
*
* @param std::string splitString
* @param index
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int Split(const std::string &splitString, int32_t index) override;
/**
* CallSupplement.
*
* @param CallSupplementType type
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int CallSupplement(CallSupplementType type) override;
/**
* InitiateDTMF.
*
* @param DTMF Code.
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int InitiateDTMF(char cDTMFCode, const std::string &phoneNum) override;
/**
* CeaseDTMF.
*
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int CeaseDTMF(const std::string &phoneNum) override;
/**
* TransmitDTMF.
*
* @param DTMF Code.
* @param phoneNum.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int TransmitDTMF(char cDTMFCode, const std::string &phoneNum) override;
/**
* Send DTMF String.
* @param DTMF Code string.
* @param phoneNum.
* @param switchOn.
* @param switchOff.
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t TransmitDTMFString(
const std::string &dtmfCodeStr, const std::string &phoneNum, int32_t switchOn, int32_t switchOff) override;
/**
* Set Call Transfer
* @param CallTransferInfo
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t SetCallTransfer(const CallTransferInfo &cfInfo, int32_t slotId) override;
/**
* Inquire Call Transfer
* @param CallTransferType
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t InquireCallTransfer(CallTransferType type, int32_t slotId) override;
/**
* Set Call Waiting
* @param activate
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t SetCallWaiting(bool activate, int32_t slotId) override;
/**
* Inquire Call Waiting
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t InquireCallWaiting(int32_t slotId) override;
/**
* Set Call Restriction
* @param CallRestrictionInfo
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t SetCallRestriction(const CallRestrictionInfo &crInfo, int32_t slotId) override;
/**
* Inquire Call Restriction
* @param CallRestrictionType
* @param slot Id
* @return Returns kTelephonyNoErr on success, others on failure.
*/
int32_t InquireCallRestriction(CallRestrictionType facType, int32_t slotId) override;
/**
* RegisterCallManagerCallBack
* @param sptr<ICallStatusCallback>
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int RegisterCallManagerCallBack(const sptr<ICallStatusCallback> &callback) override;
/**
* UnRegister CallManager CallBack
* @return Returns TELEPHONY_SUCCESS on success, others on failure.
*/
int UnRegisterCallManagerCallBack() override;
private:
static inline BrokerDelegator<CellularCallProxy> delegator_;
const int32_t DATA_SIZE = 10;
};
} // namespace CellularCall
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_CALL_PROXY_H

View File

@ -17,7 +17,9 @@
#define CELLULAR_DATA_TYPES_H
#include <cstdint>
namespace OHOS {
namespace Telephony {
namespace CellularData {
const uint32_t DATA_FLOW_TYPE_NONE = 0;
const uint32_t DATA_STATE_DISCONNECTED = 11;
@ -37,6 +39,13 @@ const uint32_t RADIO_TECHNOLOGY_LTE = 108;
const uint32_t RADIO_TECHNOLOGY_LTE_CA = 109;
const uint32_t RADIO_TECHNOLOGY_IWLAN = 110;
const uint32_t RADIO_TECHNOLOGY_NR = 111;
enum HDataRespondCode {
H_CODE_INVALID_PARAM = -1,
H_CODE_FAILED = 0,
H_CODE_SUCCESS = 1,
};
} // namespace CellularData
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_DATA_TYPES_H

View File

@ -15,64 +15,117 @@
#include "cellular_data_service_proxy.h"
#include "parcel.h"
#include "cellular_data_types.h"
namespace OHOS {
namespace CellularData {
bool CellularDataServiceProxy::IsCellularDataEnabled(int32_t slotId)
namespace Telephony {
int32_t CellularDataServiceProxy::IsCellularDataEnabled(int32_t slotId)
{
MessageParcel data, reply;
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteInt32(slotId);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(IS_CELLULAR_DATA_ENABLED, data, reply, option);
bool result = reply.ReadBool();
auto result = reply.ReadInt32();
return result;
}
int32_t CellularDataServiceProxy::EnableCellularData(int32_t slotId, bool enable)
{
MessageParcel data, reply;
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteInt32(slotId);
data.WriteBool(enable);
int32_t result = Remote()->SendRequest(ENABLE_CELLULAR_DATA, data, reply, option);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
auto result = Remote()->SendRequest(ENABLE_CELLULAR_DATA, data, reply, option);
result = reply.ReadInt32();
return result;
}
int32_t CellularDataServiceProxy::GetCellularDataState(int32_t slotId)
{
MessageParcel data, reply;
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteInt32(slotId);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(GET_CELLULAR_DATA_STATE, data, reply, option);
int32_t result = reply.ReadInt32();
auto result = reply.ReadInt32();
return result;
}
bool CellularDataServiceProxy::IsDataRoamingEnabled(int32_t slotId)
int32_t CellularDataServiceProxy::IsDataRoamingEnabled(int32_t slotId)
{
MessageParcel data, reply;
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteInt32(slotId);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(IS_DATA_ROAMING_ENABLED, data, reply, option);
bool result = reply.ReadBool();
auto result = reply.ReadInt32();
return result;
}
int32_t CellularDataServiceProxy::EnableDataRoaming(int32_t slotId, bool enable)
{
MessageParcel data, reply;
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteInt32(slotId);
data.WriteBool(enable);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(ENABLE_DATA_ROAMING, data, reply, option);
int32_t result = reply.ReadInt32();
auto result = reply.ReadInt32();
return result;
}
} // namespace CellularData
int32_t CellularDataServiceProxy::ReleaseNet(std::string ident, uint32_t capability)
{
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteString(ident);
data.WriteUint32(capability);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(RELEASE_CELLULAR_DATA, data, reply, option);
auto result = reply.ReadInt32();
return result;
}
int32_t CellularDataServiceProxy::RequestNet(std::string ident, uint32_t capability)
{
MessageParcel data;
MessageParcel reply;
MessageOption option;
data.WriteInterfaceToken(CellularDataServiceProxy::GetDescriptor());
data.WriteString(ident);
data.WriteUint32(capability);
if (Remote() == nullptr) {
return CellularData::H_CODE_FAILED;
}
Remote()->SendRequest(REQUEST_CELLULAR_DATA, data, reply, option);
auto result = reply.ReadInt32();
return result;
}
} // namespace Telephony
} // namespace OHOS

View File

@ -20,7 +20,7 @@
#include "iremote_proxy.h"
namespace OHOS {
namespace CellularData {
namespace Telephony {
class CellularDataServiceProxy : public IRemoteProxy<ICellularDataManager> {
public:
explicit CellularDataServiceProxy(const sptr<IRemoteObject> &impl) : IRemoteProxy<ICellularDataManager>(impl)
@ -31,9 +31,9 @@ public:
/**
* Whether the cellular data user switch is enabled
* @param slotId
* @return return ture User data switch on, false User data switch off.
* @return return true User data switch on, false User data switch off.
*/
virtual bool IsCellularDataEnabled(int32_t slotId);
virtual int32_t IsCellularDataEnabled(int32_t slotId);
/**
* Whether to enable cellular data user switch
@ -57,9 +57,9 @@ public:
/**
* Whether roaming is allowed
* @param slotId
* @return return ture Allowed to roam, false not Allowed to roam.
* @return return true Allowed to roam, false not Allowed to roam.
*/
bool IsDataRoamingEnabled(int32_t slotId);
int32_t IsDataRoamingEnabled(int32_t slotId);
/**
* Whether roaming switches are allowed
@ -69,9 +69,13 @@ public:
*/
int32_t EnableDataRoaming(int32_t slotId, bool enable);
int32_t ReleaseNet(std::string ident, uint32_t capability);
int32_t RequestNet(std::string ident, uint32_t capability);
private:
static inline BrokerDelegator<CellularDataServiceProxy> delegator_;
};
} // namespace CellularData
} // namespace Telephony
} // namespace OHOS
#endif // CELLULAR_DATA_SERVICE_PROXY_H

View File

@ -19,7 +19,7 @@
#include "iremote_broker.h"
namespace OHOS {
namespace CellularData {
namespace Telephony {
class ICellularDataManager : public IRemoteBroker {
public:
enum {
@ -30,21 +30,27 @@ public:
ENABLE_DATA_ROAMING,
ADD_CELLULAR_DATA_OBSERVER,
REMOVE_CELLULAR_DATA_OBSERVER,
REQUEST_CELLULAR_DATA,
RELEASE_CELLULAR_DATA,
};
virtual bool IsCellularDataEnabled(int32_t slotId) = 0;
virtual int32_t IsCellularDataEnabled(int32_t slotId) = 0;
virtual int32_t EnableCellularData(int32_t slotId, bool enable) = 0;
virtual int32_t GetCellularDataState(int32_t slotId) = 0;
virtual bool IsDataRoamingEnabled(int32_t slotId) = 0;
virtual int32_t IsDataRoamingEnabled(int32_t slotId) = 0;
virtual int32_t EnableDataRoaming(int32_t slotId, bool enable) = 0;
virtual int32_t ReleaseNet(std::string ident, uint32_t capability) = 0;
virtual int32_t RequestNet(std::string ident, uint32_t capability) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ohos.telephony.ICellularDataManager");
};
} // namespace CellularData
} // namespace Telephony
} // namespace OHOS
#endif // I_CELLULAR_DATA_MANAGER_H

22
interfaces/innerkits/common/cellular_data_profile.h Normal file → Executable file
View File

@ -16,31 +16,33 @@
#ifndef HOS_CD_PROFILE_H
#define HOS_CD_PROFILE_H
#include "string"
#include <string>
namespace OHOS {
namespace Telephony {
class CellularDataProfile {
public:
CellularDataProfile(int profileId, std::string apn, std::string protocol, int verType, std::string userName,
std::string password, std::string roamingProtocol)
: profileId(profileId), apn(apn), protocol(protocol), verType(verType), userName(userName),
password(password), roamingProtocol(roamingProtocol)
: profileId_(profileId), apn_(apn), protocol_(protocol), verType_(verType), userName_(userName),
password_(password), roamingProtocol_(roamingProtocol)
{}
~CellularDataProfile() = default;
public:
int profileId;
std::string apn; /** (Access Point Name) a string parameter which is a logical name that is used to select the
int profileId_;
std::string apn_; /** (Access Point Name) a string parameter which is a logical name that is used to select the
* GGSN or the external packet data network. from 3GPP TS 27.007 10.1 V4.3.0 (2001-12)
*/
std::string protocol; /** (Packet Data Protocol type) a string parameter which specifies the type of packet
std::string protocol_; /** (Packet Data Protocol type) a string parameter which specifies the type of packet
* data protocol from 3GPP TS 27.007 10.1 V4.3.0 (2001-12)
*/
int verType;
std::string userName;
std::string password;
std::string roamingProtocol;
int verType_;
std::string userName_;
std::string password_;
std::string roamingProtocol_;
};
} // namespace Telephony
} // namespace OHOS
#endif // HOS_CD_PROFILE_H

View File

@ -0,0 +1,162 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef IMPL_CORE_H
#define IMPL_CORE_H
#include <unistd.h>
#include <thread>
#include "i_network_search.h"
#include "i_sim_file_manager.h"
#include "i_sim_state_manager.h"
#include "i_sim_sms_manager.h"
#include "i_tel_ril_manager.h"
#include "i_sim_manager.h"
#include "observer_handler.h"
namespace OHOS {
namespace Telephony {
const int NUM_CIRCLES = 4;
class Core {
public:
Core(int opt);
~Core() = default;
void OnInit();
bool IsInitCore();
void InitTelInfo();
void RegisterPhoneNotify(const std::shared_ptr<AppExecFwk::EventHandler> &handler, int what, void *obj);
void UnRegisterPhoneNotify(const std::shared_ptr<AppExecFwk::EventHandler> &observerCallBack, int what);
void SetRadioStatus(int fun, int rst, const AppExecFwk::InnerEvent::Pointer &response);
void GetRadioStatus(const AppExecFwk::InnerEvent::Pointer &response);
void ShutDown(const AppExecFwk::InnerEvent::Pointer &response);
void Dial(std::string address, int clirMode, const AppExecFwk::InnerEvent::Pointer &result);
void DialIms(const AppExecFwk::InnerEvent::Pointer &result);
void Reject(const AppExecFwk::InnerEvent::Pointer &result);
void Hangup(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &result);
void Answer(const AppExecFwk::InnerEvent::Pointer &result);
void GetCallList(const AppExecFwk::InnerEvent::Pointer &result);
void Hold(const AppExecFwk::InnerEvent::Pointer &result);
void Active(const AppExecFwk::InnerEvent::Pointer &result);
void Swap(const AppExecFwk::InnerEvent::Pointer &result);
void Join(int32_t callType, const AppExecFwk::InnerEvent::Pointer &result);
void Split(int32_t nThCall, int32_t callType, const AppExecFwk::InnerEvent::Pointer &result);
void CallSupplement(int32_t type, const AppExecFwk::InnerEvent::Pointer &result);
void GetClip(const AppExecFwk::InnerEvent::Pointer &result);
void SetClip(int32_t action, const AppExecFwk::InnerEvent::Pointer &result);
void GetClir(const AppExecFwk::InnerEvent::Pointer &result);
void SetClir(int32_t action, const AppExecFwk::InnerEvent::Pointer &result);
void SetCallWait(int32_t activate, const AppExecFwk::InnerEvent::Pointer &result);
void SetCallForward(int32_t reason, int32_t mode, std::string number, int32_t classx,
const AppExecFwk::InnerEvent::Pointer &result);
void GetCallForward(int32_t reason, const AppExecFwk::InnerEvent::Pointer &result);
void GetCallWait(const AppExecFwk::InnerEvent::Pointer &result);
void GetCallRestriction(std::string fac, const AppExecFwk::InnerEvent::Pointer &result);
void SetCallRestriction(
std::string &fac, int32_t mode, std::string &password, const AppExecFwk::InnerEvent::Pointer &result);
void ActivatePdpContext(int32_t radioTechnology, CellularDataProfile dataProfile, bool isRoaming,
bool allowRoaming, const AppExecFwk::InnerEvent::Pointer &response);
void StopDtmf(int32_t index, const AppExecFwk::InnerEvent::Pointer &result);
void StartDtmf(char cDTMFCode, int32_t index, const AppExecFwk::InnerEvent::Pointer &result);
void SendDtmf(char cDTMFCode, int32_t index, const AppExecFwk::InnerEvent::Pointer &result);
void SendDtmf(const std::string &sDTMFCode, int32_t index, int32_t switchOn, int32_t switchOff,
const AppExecFwk::InnerEvent::Pointer &result);
void DeactivatePdpContext(int32_t cid, int32_t reason, const AppExecFwk::InnerEvent::Pointer &response);
void GetSignalStrength(const AppExecFwk::InnerEvent::Pointer &response);
void GetCsRegStatus(const AppExecFwk::InnerEvent::Pointer &response);
void GetPsRegStatus(const AppExecFwk::InnerEvent::Pointer &response);
int32_t GetPsRadioTech(int32_t slotId);
int32_t GetCsRadioTech(int32_t slotId);
bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback);
std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId);
std::u16string GetOperatorNumeric(int32_t slotId);
std::u16string GetOperatorName(int32_t slotId);
sptr<NetworkState> GetNetworkStatus(int32_t slotId);
bool SetRadioState(int32_t slotId, bool isOn, int32_t rst, const sptr<INetworkSearchCallback> &callback);
bool GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
std::u16string GetIsoCountryCodeForNetwork(int32_t slotId);
bool GetNetworkSearchResult(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
bool GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
void RegisterIccStateChanged(const std::shared_ptr<AppExecFwk::EventHandler> &handler);
void RegisterImsiLoaded(const std::shared_ptr<AppExecFwk::EventHandler> &handler);
void RegisterAllFilesLoaded(const std::shared_ptr<AppExecFwk::EventHandler> &handler);
int32_t ObtainSpnCondition(bool roaming, std::string operatorNum);
std::u16string GetSpn(int32_t slotId);
void GetOperatorInfo(const AppExecFwk::InnerEvent::Pointer &response);
void SendSms(std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
void StorageSms(
int32_t status, std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
void GetSmsCenterAddress(const AppExecFwk::InnerEvent::Pointer &response);
void SetSmsCenterAddress(int32_t tosca, std::string address, const AppExecFwk::InnerEvent::Pointer &response);
void DeleteSms(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &response);
void SendSmsMoreMode(std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
void SendSmsAck(bool success, int32_t cause, const AppExecFwk::InnerEvent::Pointer &response);
void SetCellBroadcast(
int32_t mode, std::string idList, std::string dcsList, const AppExecFwk::InnerEvent::Pointer &response);
void GetSimStatus(const AppExecFwk::InnerEvent::Pointer &result);
void ReadIccFile(int32_t command, int32_t fileId, int32_t p1, int32_t p2, int32_t p3, std::string data,
std::string path, const AppExecFwk::InnerEvent::Pointer &response);
void GetImsi(const AppExecFwk::InnerEvent::Pointer &result);
void GetIccID(const AppExecFwk::InnerEvent::Pointer &result);
void GetSimLockStatus(std::string fac, const AppExecFwk::InnerEvent::Pointer &result);
void SetSimLock(
std::string fac, int32_t mode, std::string passwd, const AppExecFwk::InnerEvent::Pointer &result);
void ChangeSimPassword(std::string fac, std::string oldPassword, std::string newPassword,
int32_t passwordLength, const AppExecFwk::InnerEvent::Pointer &result);
void EnterSimPin(std::string pin, const AppExecFwk::InnerEvent::Pointer &result);
void UnlockSimPin(std::string puk, std::string pin, const AppExecFwk::InnerEvent::Pointer &result);
void GetSimPinInputTimes(const AppExecFwk::InnerEvent::Pointer &result);
void GetNetworkSearchInformation(const AppExecFwk::InnerEvent::Pointer &response);
void GetNetworkSelectionMode(const AppExecFwk::InnerEvent::Pointer &response);
void SetNetworkSelectionMode(
int32_t automaticFlag, std::string oper, const AppExecFwk::InnerEvent::Pointer &response);
void SetNetworkLocationUpdate(const AppExecFwk::InnerEvent::Pointer &result);
void TelRilSetParam(int32_t preferredNetworkType, int32_t cdmaSubscription, int32_t instanceId);
bool InitCellularRadio(bool isFirst);
std::shared_ptr<INetworkSearch> GetNetworkSearchManager() const;
std::shared_ptr<IRilManager> GetRilManager() const;
std::shared_ptr<ISimFileManager> GetSimFileManager() const;
std::shared_ptr<ISimStateManager> GetSimStateManager() const;
std::shared_ptr<ISimSmsManager> GetSimSmsManager() const;
std::shared_ptr<ISimManager> GetSimManager() const;
private:
std::shared_ptr<INetworkSearch> networkSearchManager_ = nullptr;
std::shared_ptr<IRilManager> rilManager_ = nullptr;
std::shared_ptr<ISimFileManager> simFileManager_ = nullptr;
std::shared_ptr<ISimStateManager> simStateManager_ = nullptr;
std::shared_ptr<ISimSmsManager> simSmsManager_ = nullptr;
std::shared_ptr<ISimManager> simManager_ = nullptr;
int slotId_;
bool isInitCore_;
};
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -0,0 +1,51 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_CORE_MANAGER_H
#define OHOS_CORE_MANAGER_H
#include "singleton.h"
#include "core.h"
namespace OHOS {
namespace Telephony {
class CoreManager {
public:
static const int32_t SLOT_ID1 = 0;
static const int32_t DEFAULT_SLOT_ID = SLOT_ID1;
static CoreManager &GetInstance();
~CoreManager() = default;
int32_t Init();
void ReleaseCore();
std::shared_ptr<Core> getCore(int slotId);
std::map<int, std::shared_ptr<Core>> core_;
private:
CoreManager() = default;
CoreManager(const CoreManager &) = delete;
CoreManager &operator=(const CoreManager &) = delete;
CoreManager(CoreManager &&) = delete;
CoreManager &operator=(CoreManager &&) = delete;
static CoreManager *coreManager_;
static std::mutex mutex_;
static const int32_t DEFAULT_SLOT_NUM = 1;
};
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_CORE_MANAGER_H

View File

@ -1,378 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_H
#define OHOS_RIL_H 1
#include <net/if.h>
#include <stdint.h>
#include "hril_request.h"
#include "hril_notification.h"
#define HRIL_VERSION 1
#define HRIL_VERSION_MIN 1
typedef void *HRilHandle;
typedef enum { HRIL_SIM_1, HRIL_SIM_NUM } HRilSimId;
typedef enum {
HRIL_ERR_SUCCESS = 0,
HRIL_ERR_INVALID_ARGUMENTS = 1,
HRIL_ERR_MEMORY_FULL = 2,
} HRilErrno;
/* From 3GPP TS 27.007 V4.3.0 (2001-12) ATD%s%s */
typedef enum {
HRIL_CALL_ACTIVATE = 0,
HRIL_CALL_HOLDING = 1,
HRIL_CALL_DIALING = 2,
HRIL_CALL_REMIND = 3,
HRIL_CALL_INCOMING = 4,
HRIL_CALL_WAITING = 5
} HRilCallState;
typedef enum {
HRIL_RADIO_POWER_STATE_OFF = 0,
HRIL_RADIO_POWER_STATE_UNAVAILABLE = 1,
HRIL_RADIO_POWER_STATE_ON = 2,
} HRilRadioState;
typedef enum {
HRIL_RADIO_TECHNOLOGY_UNKNOWN,
HRIL_RADIO_TECHNOLOGY_GSM,
HRIL_RADIO_TECHNOLOGY_1xRTT,
HRIL_RADIO_TECHNOLOGY_WCDMA
} HRilRadioAccessTechnology;
/* From 3GPP TS 27.007 V4.3.0 (2001-12) AT+CGDCONT */
typedef struct {
HRilCallState state;
int index;
int typeOfAddress; /* Type of address octet in integer format (refer TS 24.008 [8] subclause 10.5.4.7);
* default 145 when dialling string includes international access code character "+",
* otherwise 129. see 3GPP TS 27.007 V4.3.0 (2001-12) 6.1 */
char isEmpty; /* 0 call is not one of multiparty (conference) call parties
* 1 call is one of multiparty (conference) call parties */
char isMT; /* integer type; call identification number as described in 3GPP TS 22.030 [19] subclause 4.5.5.1;
* this number can be used in +CHLD command operations
* 0 mobile originated (MO) call
* 1 mobile terminated (MT) call */
char als; /* Alternate Line Service */
char isVoice; /* <mode> (bearer/teleservice): voice call */
char isPrivacyMode; /* value is true when CDMA voice privacy mode was activated */
char *remoteNumber; /* Parameters <n> and <m> are used to enable/disable the presentation of incoming
* User-to-User Information Elements.When <n> = 1 and a User-to-User Information is
* received after a mobile originated call setup or after hanging up a call, intermediate
* result code +CUUS1I: <messageI>,<UUIE> is sent to the TE. When <m> = 1 and a
* User-to-User Information is received during a mobile terminated call setup or during a
* remote party call hangup, unsolicited result code +CUUS1U: <messageU>,<UUIE> is sent to
* the TE. */
int numberRemind; /* The command refers to an integer that allows a called party to enable or disable (<n>=0)
* the reporting of the ID of calling parties, and specifies the method of presentation of
* the ID. This is basically the same as GSM/UMTS supplementary service CLIP (Calling Line
* Identification Presentation). The presentation may be either formatted (<n>=1) or
* unformatted (<n>=2): Formatted presentation : data items are reported in the form of
* <tag>=<value> pairs. <tag> <value> DATE MMDD (month, day) TIME HHMM (hour,
* minute) NMBR calling number or P or O (P = number is private, O = number is
* unavailable) NAME subscription listing name MESG data from other (unknown) tags
*/
char *remoteName; /* Remote party name */
int nameRemind; /* This command refers to the GSM/UMTS supplementary service CLIP (Calling Line
* Identification Presentation) that enables a called subscriber to get the calling line
* identity (CLI) of the calling party when receiving a mobile terminated call. Set command
* enables or disables the presentation of the CLI at the TE. It has no effect on the execution
* of the supplementary service CLIP in the network. */
} HRilCallInfo;
typedef struct {
int state; /* from 3GPP TS 27.007 10.1.10 V4.3.0 (2001-12)
* indicates the state of PDP context activation
* 0 - deactivated
* 1 - activated */
int retryTime; /* if errorCode != 0, suggested retry time */
int cid; /* from 3GPP TS 27.007 10.1.1 V4.3.0 (2001-12)
* specifies a particular PDP context definition. The parameter is local to the TE-MT interface and
* is used in other PDP context-related commands. */
int active; /* 0: inactive, 1: active(physical link down), 2 : 2=active (physical link up) */
char *type; /* PDP_type values from 3GPP TS 27.007 section 10.1.1.
* specifies the type of packet data protocol. The default value is manufacturer specific. */
char *netPortName; /* Network interface name */
char *address; /* from 3GPP TS 27.007 10.1.1 V4.3.0 (2001-12)
* a string parameter that identifies the MT in the address space applicable to the PDP. */
char *dns; /* If the MT indicates more than two IP addresses of P-CSCF servers
* or more than two IP addresses of DNS servers,
* multiple lines of information per <cid> will be returned.
* If the MT has dual stack capabilities,
* First one line with the IPv4 parameters followed by one line with the IPv6 parameters. */
char *gateway; /* network gateway address */
int mtu; /* Maximum Transfer Unit. The range of permitted values (minimum value = 1
* or if the initial PDP context is supported minimum value = 0)
* is returned by the test form of the command. */
} HRilDataCallResponse;
typedef enum {
RADIO_TECH_3GPP = 1, /* 3GPP Technologies (GSM, WCDMA) */
RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies (CDMA) */
} HRilRadioTechnologyFamily;
typedef struct {
int msgRef; /* TP-Message-Reference for GSM, and BearerData MessageId for CDMA
* from 3GPP2 C.S0015-B, v2.0, 4.5-1 */
char *pdu; /* Protocol Data Unit */
int errCode; /* if unknown or not applicable, that is -1
* from 3GPP 27.005, 3.2.5 for GSM/UMTS,
* 3GPP2 N.S0005 (IS-41C) Table 171 for CDMA */
} HRilSmsResponse;
/* From 3GPP TS 27.007 V4.3.0 (2001-12) ATD%s%s */
typedef struct {
char *address; /* Type of address octet in integer format (refer TS 24.008 [8] subclause 10.5.4.7);
* default 145 when dialling string includes international access code character "+", otherwise
* 129.
* */
int clir; /* This command refers to CLIR service according to 3GPP TS 22.081 [3] that allows a calling subscriber
* to enable or disable the presentation of the CLI to the called party when originating a call. <n>
* (parameter sets the adjustment for outgoing calls): 0 presentation indicator is used according to
* the subscription of the CLIR service 1 CLIR invocation 2 CLIR suppression <m> (parameter shows
* the subscriber CLIR service status in the network): 0 CLIR not provisioned 1 CLIR provisioned in
* permanent mode 2 unknown (e.g. no network, etc.) 3 CLIR temporary mode presentation restricted
* 4 CLIR temporary mode presentation allowed */
} HRilDial;
/* Form 3GPP TS 27.007 V4.3.0 (2001-12) 8.18, + CRSM */
typedef struct {
int command; /* This command related to a network service that provides "multiple called numbers
* (called line identifications) service" to an MT. This command enables a called subscriber to
* get the called line identification of the called party when receiving a mobile terminated call.
* Set command enables or disables the presentation of the called line identifications at the TE.
<n> (parameter sets/shows the result code presentation status in the TA):
* 0 disable
* 1 enable
* <m> (parameter shows the subscriber "multiple called numbers" service status in the network):
* 0 "multiple called numbers service" is not provisioned
* 1 "multiple called numbers service" is provisioned
* 2 unknown (e.g. no network, etc.)
* <number>: string type phone number of format specified by <type>
* <type>: type of address octet in integer format (refer TS 24.008 [8] subclause 10.5.4.7)
* <subaddr>: string type subaddress of format specified by <satype>
* <satype>: type of subaddress octet in integer format (refer TS 24.008 [8] subclause 10.5.4.8) */
int fileid; /* By using this command instead of Generic SIM Access +CSIM TE application has easier
* but more limited access to the SIM database. Set command transmits to the ME the SIM <command>
* and its required parameters. ME handles internally all SIM ME interface locking and file
* selection routines. As response to the command, ME sends the actual SIM information parameters
* and response data. ME error result code +CME ERROR may be returned when the command cannot be
* passed to the SIM, but failure in the execution of the command in the SIM is reported in <sw1>
* and <sw2> parameters. Refer to subclause 9.2 for <err> values. <command> (command passed on by
* the ME to the SIM; refer GSM 51.011 [28]): 176 READ BINARY 178 READ RECORD 192 GET RESPONSE 214
* UPDATE BINARY 220 UPDATE RECORD 242 STATUS all other values are reserved */
char *path; /* Action command returns the MSISDNs related to the subscriber (this information can be stored
* in the SIM/UICC or in the ME).
* <typex>: type of address octet in integer format (refer TS 24.008 [8] subclause 10.5.4.7)
* <speed>: as defined in subclause 6.7
* <service> (service related to the phone number):
* 0 asynchronous modem eth0
* 1 synchronous modem
* 2 PAD Access (asynchronous)
* 3 Packet Access (synchronous)
* 4 voice
* 5 fax */
int p1; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database. parameters passed on by the ME to the SIM.
* <P1>, <P2>, <P3>: integer type; parameters passed on by the ME to the SIM.
* These parameters are mandatory for every command, except GET RESPONSE and STATUS.
* The values are described in GSM 51.011 [28]. */
int p2; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database. parameters passed on by the ME to the SIM.
* <P1>, <P2>, <P3>: integer type; parameters passed on by the ME to the SIM.
* These parameters are mandatory for every command, except GET RESPONSE and STATUS.
* The values are described in GSM 51.011 [28]. */
int p3; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database. parameters passed on by the ME to the SIM.
* <P1>, <P2>, <P3>: integer type; parameters passed on by the ME to the SIM.
* These parameters are mandatory for every command, except GET RESPONSE and STATUS.
* The values are described in GSM 51.011 [28]. */
char *data; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database.
* <data>: information which shall be written to the SIM (hexadecimal character format; refer
* +CSCS) */
char *pin2;
char *aid; /* AID value, from ETSI 102.221 8.1 and 101.220 4, if no value that is NULL */
} HRilSimIO;
/* Form TS 27.007.8.18 +CRSM */
typedef struct {
int sw1; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database.
* <sw1>, <sw2>: integer type; information from the SIM about the execution of the actual command.
* These parameters are delivered to the TE in both cases, on successful or
* failed execution of the command */
int sw2; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database.
* <sw1>, <sw2>: integer type; information from the SIM about the execution of the actual command.
* These parameters are delivered to the TE in both cases, on successful or
* failed execution of the command */
char *response; /* By using this command instead of Generic SIM Access +CSIM TE application has easier but
* more limited access to the SIM database.
* <response>: response of a successful completion of the command previously issued
* (hexadecimal character format; refer +CSCS). STATUS and GET RESPONSE return data,
* which gives information about the current
* elementary datafield. After READ BINARY or READ RECORD command
* the requested data will be returned. <response> is not returned
* after a successful UPDATE BINARY or UPDATE RECORD command */
} HRilSimIOResponse;
typedef enum {
HRIL_CALL_FAIL_NO_VALID_NUMBER = 1,
HRIL_CALL_FAIL_NO_LINE_TO_TARGET_ADDRESS = 3
} HRilLastCallErrorCode;
typedef struct {
HRilLastCallErrorCode errorCode; /* Execution command causes the TA to return one or more lines of information
* text <report>, determined by the ME manufacturer, which should offer
* the user of the TA an extended report of the reason for
* the failure in the last unsuccessful call setup (originating or answering) or
* in call modification;
* the last call release;
* the last unsuccessful GPRS attach or unsuccessful PDP context activation;
* the last GPRS detach or PDP context deactivation. */
char *vendorError; /* Error codes of vendor. */
} HRilLastCallErrorCodeInfo;
typedef enum { HRIL_ABSENT = 0, HRIL_PRESENT = 1, HRIL_ERROR = 2, HRIL_RESTRICTED = 3 } HRilIccCardState;
typedef enum {
HRIL_SIMLOCK_UNKNOWN = 0,
HRIL_SIMLOCK_IN_PROGRESS = 1,
HRIL_SIMLOCK_READY = 2,
} HRilIccSimLockSub;
typedef enum {
HRIL_UNKNOWNSTATE = 0,
HRIL_DETECTED = 1,
HRIL_PIN = 2,
HRIL_PUK = 3,
HRIL_SIMLOCK = 4,
HRIL_STATEREADY = 5
} HRilIccStatus;
typedef enum {
HRIL_PIN_STATE_UNKNOWN,
HRIL_PIN_NOT_VERIFIED,
HRIL_PIN_VERIFIED,
HRIL_PIN_DISABLED,
HRIL_PIN_BLOCKED_ENABLED,
HRIL_PIN_BLOCKED_PERM
} HRilIccPinState;
typedef enum {
HRIL_UNKNOWNTYPE = 0,
HRIL_SIM = 1,
HRIL_USIM = 2,
HRIL_RUIM = 3,
HRIL_CSIM = 4,
HRIL_ISIM = 5
} HRilIccType;
#define HRIL_SIM_MAX_APPS 8
typedef struct {
HRilIccType iccType;
HRilIccStatus iccStatus;
HRilIccSimLockSub SimLockSubState;
char *aid;
char *iccTag;
int substitueOfPin1;
HRilIccPinState stateOfPin1;
HRilIccPinState stateOfPin2;
} HRilIccContent;
typedef struct {
HRilIccCardState cardState;
HRilIccPinState pinState;
int contentIndexOfGU;
int contentIndexOfCdma;
int contentIndexOfIms;
int iccContentNum;
HRilIccContent iccContent[HRIL_SIM_MAX_APPS];
} HRilIccState;
/* From 3GPP TS 27.007 8.5 */
typedef struct {
int rssi; /* Execution command returns received signal strength indication.
* Refer subclause 9.2 . From 3GPP TS 27.007 V4.3.0 */
int ber; /* bit error rate, value range 0 ~ 7, max is 99, if unknown then set to max */
} HRilGwRssi;
/* From 3GPP TS 27.007 V4.3.0 (2001-12) AT+CSQ */
typedef struct {
int rssi; /* Received Signal Strength Indication, value range 0 ~ 31, max is 99, if unknown then set to max */
int ber; /* bit error rate, value range 0 ~ 7, max is 99, if unknown then set to max */
int ta; /* Timing Advance in bit periods. if unknown then set to max, e.g: 1 bit period = 48/13 us */
} HRilGsmRssi;
/* From 3GPP TS 27.007 8.5 */
typedef struct {
int rssi; /* Received Signal Strength Indication, value range 0 ~ 31, max is 99, if unknown then set to max */
int ber; /* bit error rate, value range 0 ~ 7, max is 99, if unknown then set to max */
} HRilWcdmaRssi;
/* From 3GPP TS 27.007 8.69 */
typedef struct {
int absoluteRssi; /* Absolute value of signal strength. This value is the actual Rssi value
* multiplied by -1.
* e.g: Rssi is -75, then this response value will be 75 */
int ecno; /* ratio of the received energy per PN chip to the total received power spectral density,
* e.g: If the actual Ec/Io is -12.5 dB, then this response value will be 125.
* from 3GPP TS 25.133[95] */
} HRilCdmaRssi;
typedef struct {
HRilGwRssi gwRssi;
HRilCdmaRssi cdmaRssi;
} HRilRssi;
typedef void (*HRilRequestFunc)(int request, void *data, size_t dataLen, HRilHandle t);
typedef HRilRadioState (*HRilRadioStateRequest)();
typedef int (*HRilSupports)(int requestCode);
typedef void (*HRilCancel)(HRilHandle t);
typedef void (*HRilTimedCallback)(void *param);
typedef const char *(*HRilGetVersion)(void);
typedef struct {
int version; /* set to HRIL_VERSION */
HRilRequestFunc onRequest;
HRilRadioStateRequest onStateRequest;
HRilSupports supports;
HRilCancel onCancel;
HRilGetVersion getVersion;
} VendorCallbacks;
struct HRilInitEnv {
void (*OnRequestResponse)(HRilHandle t, HRilErrno e, void *response, size_t responseLen);
void (*OnUnsolicitedResponse)(int unsolResponse, const void *data, size_t dataLen);
void (*RequestTimedCallback)(HRilTimedCallback callback, void *param, const struct timeval *relativeTime);
void (*OnRequestAck)(HRilHandle t);
};
const VendorCallbacks *RilInit(const struct HRilInitEnv *env, int argc, char **argv);
#endif // OHOS_RIL_H

View File

@ -1,92 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_CALL_PARCEL_H
#define OHOS_RIL_CALL_PARCEL_H
#include <memory>
#include <string>
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
/* From 3GPP TS 27.007 V4.3.0 (2001-12) 7.7, AT + ATD */
struct DialInfo : public Parcelable {
int32_t serial;
std::string address;
int32_t clir; /* Calling Line Identification Restriction . From TS 27.007 V3.4.0 (2000-03) */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<DialInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct UusData : public Parcelable {
int32_t uusDcs; /* Cell Broadcast Data Coding Scheme(default 0). */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<UusData> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct CallInfo : public Parcelable {
int32_t state;
int32_t index;
int32_t typeOfAddress; /* type of address, see 3GPP TS 23.140 [58]. */
bool isEmpty; /* value is true when number is empty */
bool isMT; /* value is true when call is mobile terminated */
int32_t als; /* Alternate Line Service */
bool isVoice; /* value is true when it is a voice call */
std::string remoteNumber; /* Parameters <n> and <m> are used to enable/disable the presentation of incoming
* User-to-User Information Elements.When <n> = 1 and a User-to-User Information is
* received after a mobile originated call setup or after hanging up a call,
* intermediate result code +CUUS1I: <messageI>,<UUIE> is sent to the TE. When <m> =
* 1 and a User-to-User Information is received during a mobile terminated call setup
* or during a remote party call hangup, unsolicited result code
* +CUUS1U: <messageU>,<UUIE> is sent to the TE. */
int32_t numberRemind; /* The command refers to an integer that allows a called party to enable or disable
* (<n>=0) the reporting of the ID of calling parties, and specifies the method of
* presentation of the ID. This is basically the same as GSM/UMTS supplementary service
* CLIP (Calling Line Identification Presentation). The presentation may be either
* formatted (<n>=1) or unformatted (<n>=2): Formatted presentation : data items are
* reported in the form of <tag>=<value> pairs. <tag> <value> DATE MMDD
* (month, day) TIME HHMM (hour, minute) NMBR calling number or P or O (P =
* number is private, O = number is unavailable) NAME subscription listing name MESG
* data from other (unknown) tags */
std::string remoteName; /* Remote party name */
int32_t nameRemind; /* This command refers to the GSM/UMTS supplementary service CLIP (Calling Line
* Identification Presentation) that enables a called subscriber to get the calling line
* identity (CLI) of the calling party when receiving a mobile terminated call. Set command
* enables or disables the presentation of the CLI at the TE. It has no effect on the
* execution of the supplementary service CLIP in the network. */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<CallInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct CallInfoList : public Parcelable {
int32_t callSize;
std::vector<CallInfo> calls;
int32_t flag;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<CallInfoList> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace OHOS
#endif // OHOS_RIL_CALL_PARCEL_H

View File

@ -1,111 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_DATA_PARCEL_H
#define OHOS_RIL_DATA_PARCEL_H
#include <memory>
#include <string>
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
struct SetupDataCallResultInfo : public Parcelable {
int32_t flag;
int32_t state; /* from 3GPP TS 27.007 10.1.10 V4.3.0 (2001-12)
* indicates the state of PDP context activation
* 0 - deactivated
* 1 - activated */
int32_t retryTime; /* if errorCode != 0, suggested retry time */
int32_t cid; /* from 3GPP TS 27.007 10.1.1 V4.3.0 (2001-12)
* specifies a particular PDP context definition. The parameter is local to the TE-MT interface
* and is used in other PDP context-related commands. */
int32_t active; /* 0: inactive, 1: active(physical link down), 2 : 2=active (physical link up) */
std::string type; /* PDP_type values from 3GPP TS 27.007 V4.3.0 section 10.1.1.
* specifies the type of packet data protocol. The default value is manufacturer specific. */
std::string netPortName; /* Network interface name */
std::string address; /* from 3GPP TS 27.007 10.1.1 V4.3.0 (2001-12)
* a string parameter that identifies the MT in the address space applicable to the PDP. */
std::string dns; /* If the MT indicates more than two IP addresses of P-CSCF servers
* or more than two IP addresses of DNS servers,
* multiple lines of information per <cid> will be returned.
* If the MT has dual stack capabilities,
* First one line with the IPv4 parameters followed by one line with the IPv6 parameters. */
std::string gateway; /* network gateway address */
int32_t mtu; /* Maximum Transfer Unit. The range of permitted values (minimum value = 1
* or if the initial PDP context is supported minimum value = 0)
* is returned by the test form of the command. */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<SetupDataCallResultInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct DataCallResultList : public Parcelable {
int32_t size; /* Size of DataCall List */
std::vector<SetupDataCallResultInfo> dcList; /* DataCall List */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<DataCallResultList> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
/* from 3GPP TS 27.007 10.1 V4.3.0 (2001-12) */
struct DataProfileDataInfo : public Parcelable {
int32_t serial;
int32_t profileId; /* Id of data profiles */
std::string apn; /* (Access Point Name) a string parameter
* which is a logical name that is used to select the GGSN or the */
std::string protocol; /* (Packet Data Protocol type) a string parameter which
* specifies the type of packet data protocol */
std::string roamingProtocol;
int32_t verType; /* APN verification type */
std::string userName;
std::string password;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<DataProfileDataInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct DataProfilesInfo : public Parcelable {
int32_t serial;
int32_t profilesSize;
std::vector<DataProfileDataInfo> profiles;
bool isRoaming;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<DataProfilesInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct DataCallInfo : public Parcelable {
int32_t serial;
int32_t radioTechnology; /* Voice radio technology */
DataProfileDataInfo dataProfileInfo;
bool modemCognitive; /* 1:APN setting setDataProfile. 0: no */
bool roamingAllowed;
bool isRoaming;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<DataCallInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace OHOS
#endif // OHOS_RIL_DATA_PARCEL_H

View File

@ -1,57 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_NETWORK_PARCEL_H
#define OHOS_RIL_NETWORK_PARCEL_H
#include <memory>
#include <string>
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
struct OperatorInfoResult : public Parcelable {
std::string longName;
std::string shortName;
std::string numeric;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<OperatorInfoResult> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
/* Voice registration status results */
struct CsRegStatusInfo : public Parcelable {
int32_t regStatus; /* The corresponding valid registration states are NOT_REG_MT_NOT_SEARCHING_OP,
* "REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED, UNKNOWN, REG_ROAMING". */
int32_t radioTechnology; /* Available voice radio technology, RMS defined by radio technology */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<CsRegStatusInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct PsRegStatusResultInfo : public Parcelable {
int32_t regStatus; /* valid when are is ITE UNKNOWN REG = REG, otherwise it defined in RegStatus */
int32_t radioTechnology;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<PsRegStatusResultInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace OHOS
#endif // OHOS_RIL_NETWORK_PARCEL_H

View File

@ -1,50 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_REQUEST_H
#define OHOS_RIL_REQUEST_H
#define HRIL_RESPONSE_ACKNOWLEDGEMENT 800
typedef enum {
HREQ_CALL_BASE = 0,
HREQ_CALL_GET_CALL_LIST,
HREQ_CALL_DIAL,
HREQ_CALL_HANGUP,
HREQ_CALL_REJECT,
HREQ_CALL_ANSWER,
HREQ_SMS_BASE = 100,
HREQ_SMS_SEND_SMS,
HREQ_SMS_SEND_SMS_MORE_MODE,
HREQ_SMS_SEND_SMS_ACK,
HREQ_SMS_IMS_SEND_SMS,
HREQ_SIM_BASE = 200,
HREQ_SIM_GET_SIM_STATUS,
HREQ_SIM_GET_IMSI,
HREQ_SIM_READ_ICC_FILE,
HREQ_DATA_BASE = 300,
HREQ_DATA_DEACTIVATE_PDP_CONTEXT,
HREQ_DATA_ACTIVATE_PDP_CONTEXT,
HREQ_NETWORK_BASE = 400,
HREQ_NETWORK_GET_SIGNAL_STRENGTH,
HREQ_NETWORK_GET_CS_REG_STATUS,
HREQ_NETWORK_GET_PS_REG_STATUS,
HREQ_NETWORK_GET_OPERATOR_INFO,
HREQ_COMMON_BASE = 500,
HREQ_MODEM_SET_RADIO_POWER
} HRilRequest;
#endif // OHOS_RIL_REQUEST_H

View File

@ -1,125 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_SIM_PARCEL_H
#define OHOS_RIL_SIM_PARCEL_H
#include <memory>
#include <string>
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
enum class SimRefreshTypeInd : int32_t { SIM_FILE_UPDATE = 0, SIM_INIT = 1, SIM_RESET = 2 };
/* Form 3GPP TS 27.007 V4.3.0 (2001-12) 8.18, + CRSM */
struct IccIoResultInfo : public Parcelable {
int32_t sw1; /* information from the SIM about the execution of the actual command.
* These parameters are delivered to the TE in both cases,
* on successful or failed execution of the command */
int32_t sw2;
std::string response;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<IccIoResultInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
/* Form 3GPP TS 27.007 V4.3.0 (2001-12) 8.18, + CRSM */
struct IndicationInfo : public Parcelable {
int32_t sw1; /* information from the SIM about the execution of the actual command.
* These parameters are delivered to the TE in both cases,
* on successful or failed execution of the command */
int32_t sw2;
std::string response;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<IndicationInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
/* Form 3GPP TS 27.007 V4.3.0 (2001-12) 8.18, + CRSM */
struct IccIoRequestInfo : public Parcelable {
int32_t fileId; /* this is the identifier of a elementary datafile on SIM.
* Mandatory for every command except STATUS */
std::string path; /* contains the path of an elementary file on the SIM/UICC
* in hexadecimal format as defined in ETSI TS 102 221 [60]
* (e.g. "7F205F70" in SIM and UICC case).
* The <pathid> shall only be used in the mode
* "select by path from MF" as defined in ETSI TS 102 221 [60] */
int32_t cmd; /* command passed on by the ME to the SIM; refer GSM 51.011 [28] */
int32_t p1; /* parameters passed on by the MT to the SIM.
* These parameters are mandatory for every command,
* except GET RESPONSE and STATUS.
* The values are described in 3GPP TS 51.011 [28] */
int32_t p2;
int32_t p3;
int32_t serial;
std::string data; /* information which shall be written to the SIM
* (hexadecimal character format; refer +CSCS). */
std::string pin2;
std::string aid; /* AID value, from ETSI 102.221 8.1 and 101.220 4, if no value that is NULL */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<IccIoRequestInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
/* From ETSI 102.221 8.1 and 101.220 4 */
struct SimRefreshResultInd : public Parcelable {
int32_t type;
int32_t efId; /* EFID is the updated file if the result is */
std::string aid; /* application ID is the card application */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<SimRefreshResultInd> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct IccContentInfo : public Parcelable {
int32_t SimLockSubState;
std::string aid;
std::string iccTag;
int32_t substitueOfPin1;
int32_t stateOfPin1;
int32_t stateOfPin2;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<IccContentInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct CardStatusInfo : public Parcelable {
int32_t cardState;
int32_t iccType;
int32_t iccStatus;
int32_t pinState;
int32_t contentIndexOfGU;
int32_t contentIndexOfCdma;
int32_t contentIndexOfIms;
int32_t iccContentNum;
std::vector<IccContentInfo> iccContentInfo;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<CardStatusInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace OHOS
#endif // OHOS_RIL_SIM_PARCEL_H

View File

@ -1,81 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_RIL_SMS_PARCEL_H
#define OHOS_RIL_SMS_PARCEL_H
#include <memory>
#include <string>
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
struct GsmSmsMessageInfo : public Parcelable {
int32_t serial;
std::string smscPdu; /* Short Message Service Center Protocol Data Unit see GSM 03.40 */
std::string pdu; /* Protocol Data Unit */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<GsmSmsMessageInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct ImsSmsMessageInfo : public Parcelable {
int32_t serial;
int32_t technology;
bool retry; /* if errorCode != 0, suggested retry time */
int32_t msgRef; /* TP-Message-Reference for GSM,and BearerData MessageId for CDMA
* from 3GPP2 C.S0015-B, v2.0, 4.5-1 */
int32_t gsmMessageSize;
std::vector<GsmSmsMessageInfo> gsmMessage;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<ImsSmsMessageInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct SmsMessageInfo : public Parcelable {
int32_t indicationType;
int32_t size;
std::vector<uint8_t> pdu; /* Protocol Data Unit */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<SmsMessageInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct ModeData : public Parcelable {
int32_t serial;
bool result;
int32_t mode;
std::string pdu; /* Protocol Data Unit */
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<ModeData> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
struct SendSmsResultInfo : public Parcelable {
int32_t msgRef; /* TP-Message-Reference for GSM,and BearerData MessageId for CDMA
* from 3GPP2 C.S0015-B, v2.0, 4.5-1 */
std::string pdu; /* Protocol Data Unit */
int32_t errCode;
int64_t flag;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<SendSmsResultInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace OHOS
#endif // OHOS_RIL_SMS_PARCEL_H

View File

@ -1,151 +0,0 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef TELEPHONY_N_TYPE_H
#define TELEPHONY_N_TYPE_H
#include <codecvt>
#include <locale>
#include <string>
#include <vector>
#include "hril.h"
namespace OHOS {
enum class HRilErrType { NONE, HRIL_ERR_INVALID_RESPONSE };
enum class HRilResponseType {
HRIL_RESPONSE,
HRIL_RESP_ACK,
HRIL_RESP_ACK_NEED,
};
enum class HRilNotiType {
HRIL_NOTIFICATION,
HRIL_NOTIFICATION_ACK_NEED,
};
enum class HRilApnTypes : int32_t {
NONE = 0,
DEFAULT = 2 ^ 0,
MMS = 2 ^ 1,
SUPL = 2 ^ 2,
DUN = 2 ^ 3,
HIPRI = 2 ^ 4,
FOTA = 2 ^ 5,
IMS = 2 ^ 6,
CBS = 2 ^ 7,
IA = 2 ^ 8,
EMERGENCY = 2 ^ 9,
ALL = (2 ^ 10) - 1,
};
/* From 3GPP TS 27.007 V4.3.0 (2001-12) 8.5, AT + CSQ */
struct GsmRssi {
uint32_t rssi; /* Received Signal Strength Indication, value range 0 ~ 31, max is 99, if unknown then set to max */
uint32_t ber; /* bit error rate, value range 0 ~ 7, max is 99, if unknown then set to max
* as RXQUAL values in the table in TS 45.008 [20] subclause 8.2.4. */
int32_t ta; /* Timing Advance in bit periods. if unknown then set to max, e.g: 1 bit period = 48/13 us */
};
/* From 3GPP TS 27.007 8.69 */
struct CdmaRssi {
uint32_t absoluteRssi; /* Absolute value of signal strength. This value is the actual Rssi value
* multiplied by -1.
* e.g: Rssi is -75, then this response value will be 75 */
uint32_t ecno; /* ratio of the received energy per PN chip to the total received power spectral density,
* e.g: If the actual Ec/Io is -12.5 dB, then this response value will be 125.
* from 3GPP TS 25.133[95] */
};
struct Rssi {
int32_t slotId;
GsmRssi gw;
CdmaRssi cdma;
};
struct HRilRadioResponseInfo {
int32_t serial;
HRilResponseType type;
HRilErrType error;
};
struct CommonInfo {
int32_t serial;
int32_t type;
bool flag;
int32_t arg1;
int32_t arg2;
};
enum HRilCommonNumber {
HRIL_DEC = 10,
HRIL_INVALID_HEX_CHAR = 16,
HRIL_UPPER_CASE_LETTERS_OFFSET = 32,
HRIL_SIGNAL_STRENGTH_MAX = 99,
HRIL_ADAPTER_RADIO_INDICATION = 2001,
HRIL_ADAPTER_RADIO_RESPONSE = 2002
};
enum HRilOperatorInfoResult {
HRIL_LONE_NAME = 0,
HRIL_SHORT_NAME,
HRIL_NUMERIC,
};
enum HRilCircuitModeRegState {
HRIL_STAT_NO_REG_MT_NO_SEARCHING_OP = 0, /* not registered, MT is not searching an operator */
HRIL_STAT_REGISTERED_HOME_NETWORK = 1, /* registered, home network */
HRIL_STAT_NO_REGISTERED_MT_TRY_ATTACH = 2, /* not registered, but MT is currently trying
* to attach or searching an operator */
HRIL_STAT_REGISTERED_DENIED = 3, /* registration denied */
HRIL_STAT_UNKNOWN = 4, /* unknown (e.g. out of GERAN/UTRAN coverage) */
HRIL_STAT_REGISTERED_ROAMING = 5, /* registered, roaming */
HRIL_STAT_REGISTERED_SMS_HOME_NETWORK = 6, /* registered for "SMS only", home network (not applicable) */
HRIL_STAT_REGISTERED_SMS_ROAMING = 7,
};
enum HRilServiceSupportStat {
HRIL_SERVICE_NO_SUPPORT = 0,
HRIL_SERVICE_SUPPORT = 1,
};
/* from 3GPP TS 27.007 V17.1.0 9.2.2.1.1 */
enum HRilReasonDataDenied {
HREASON_GPRS_SERVICE_NOT_ALLOW = 0,
HREASON_GPRS_AND_NONGPRS_SERVICE_NOT_ALLOW = 1,
HREASON_MS_INDENTITY_CANNOT_BE_DERIVED = 2,
HREASON_IMPLICITLY_DETACHED = 3,
HREASON_GPRS_SERVICE_NOT_ALLOW_IN_PLMN = 4,
HREASON_MSC_TEM_NOT_REACH = 5,
HREASON_NO_DPD_CONTEXT_ACTIVATED = 6,
};
// cs registration response
static constexpr uint32_t HRIL_CS_REG_STATE = 0;
static constexpr uint32_t HRIL_CS_REG_RESP_RAT = 3;
static constexpr uint32_t HRIL_RSSNR = 7;
static constexpr uint32_t HRIL_CS_REG_RESP_ROMING_INDICATOR = 10;
static constexpr uint32_t HRIL_CS_REG_RESP_SYSTEM_IS_IN_PRL = 11;
static constexpr uint32_t HRIL_CS_REG_RESP_DEFAULT_ROAMING_INDICATOR = 12;
static constexpr uint32_t HRIL_CS_REG_RESP_TIMING_ADVANCE = 13;
static constexpr uint32_t HRIL_CS_REG_STATUS_MAX_LEN = 15;
// ps registration response
static constexpr uint32_t HRIL_PS_REG_STATUS_MAX_LEN = 6;
static constexpr uint32_t HRIL_PS_REG_STATE = 0;
static constexpr uint32_t HRIL_PS_RADIO_TECHNOLOGY = 3;
static constexpr uint32_t HRIL_PS_DENIED_ERROR_CODE = 4;
static constexpr uint32_t HRIL_PS_MAX_DATA_CALLS = 5;
static constexpr uint32_t HRIL_PS_DEF_DATA_CALLS_VAL = 1;
} // namespace OHOS
#endif // TELEPHONY_N_TYPE_H

47
interfaces/innerkits/common/i_network_search.h Normal file → Executable file
View File

@ -13,36 +13,43 @@
* limitations under the License.
*/
#ifndef OHOS_I_NS_MANAGER_H
#define OHOS_I_NS_MANAGER_H
#ifndef I_NETWORK_SEARCH_H
#define I_NETWORK_SEARCH_H
#include <string.h>
#include <unistd.h>
#include <cstdio>
#include <cstring>
#include <memory>
#include <vector>
#include "event_handler.h"
#include "network_state.h"
#include "signal_information.h"
#include "network_search_result.h"
#include "i_network_search_callback.h"
namespace OHOS {
namespace Telephony {
class INetworkSearch {
public:
using HANDLE = const std::shared_ptr<AppExecFwk::EventHandler>;
virtual void Init();
virtual int32_t GetPsRadioTech(int32_t slotId) = 0;
virtual int32_t GetCsRadioTech(int32_t slotId) = 0;
virtual std::u16string GetOperatorNumeric(int32_t slotId) = 0;
virtual std::u16string GetOperatorName(int32_t slotId) = 0;
virtual sptr<NetworkState> GetNetworkStatus(int32_t slotId) = 0;
virtual bool GetRadioState(int32_t slotId) = 0;
virtual void SetHRilRadioState(bool isOn) = 0;
virtual std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId) = 0;
virtual void RegisterForPSConnectionAttached(const HANDLE &handler) = 0;
virtual void UnregisterForPSConnectionAttached(const HANDLE &handler) = 0;
virtual void RegisterForPSConnectionDetached(const HANDLE &handler) = 0;
virtual void UnregisterForPSConnectionDetached(const HANDLE &handler) = 0;
virtual int32_t GetPsRadioTech(int32_t slotId) const = 0;
virtual int32_t GetCsRadioTech(int32_t slotId) const = 0;
virtual std::u16string GetOperatorNumeric(int32_t slotId) const = 0;
virtual std::u16string GetOperatorName(int32_t slotId) const = 0;
virtual sptr<NetworkState> GetNetworkStatus(int32_t slotId) const = 0;
virtual int32_t GetRadioState(int32_t slotId) const = 0;
virtual bool GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual void SetRadioState(int32_t slotId, bool isOn, int32_t rst) = 0;
virtual bool SetRadioState(
int32_t slotId, bool isOn, int32_t rst, const sptr<INetworkSearchCallback> &callback) = 0;
virtual std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId) const = 0;
virtual void RegisterPhoneNotify(
const std::shared_ptr<AppExecFwk::EventHandler> &handler, int what, void *obj) = 0;
virtual void UnRegisterPhoneNotify(const std::shared_ptr<AppExecFwk::EventHandler> &handler, int what) = 0;
virtual bool GetNetworkSearchResult(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual bool GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> &networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback) = 0;
virtual std::u16string GetIsoCountryCodeForNetwork(int32_t slotId) const = 0;
};
} // namespace Telephony
} // namespace OHOS
#endif // CORE_SERVICE_IRIL_MANAGER_H
#endif // I_NETWORK_SEARCH_H

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef I_NETWORK_SEARCH_CALLBACK_H
#define I_NETWORK_SEARCH_CALLBACK_H
#include <iremote_proxy.h>
namespace OHOS {
namespace Telephony {
class INetworkSearchCallback : public IRemoteBroker {
public:
enum NetworkSearchCallback {
GET_AVAILABLE_RESULT = 0,
GET_NETWORK_MODE_RESULT,
SET_NETWORK_MODE_RESULT,
GET_RADIO_STATUS_RESULT,
SET_RADIO_STATUS_RESULT
};
virtual ~INetworkSearchCallback() = default;
virtual int32_t OnNetworkSearchCallback(NetworkSearchCallback requestId, MessageParcel &data) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.INetworkSearchCallback");
};
} // namespace Telephony
} // namespace OHOS
#endif // I_NETWORK_SEARCH_CALLBACK_H

24
interfaces/innerkits/common/i_sim_file_manager.h Normal file → Executable file
View File

@ -16,32 +16,26 @@
#ifndef OHOS_I_SIM_FILE_MANAGER_H
#define OHOS_I_SIM_FILE_MANAGER_H
#include <string.h>
#include <unistd.h>
#include <cstdio>
#include <cstring>
#include <memory>
#include <vector>
#include "event_handler.h"
#include "event_runner.h"
namespace OHOS {
namespace SIM {
namespace Telephony {
class ISimFileManager {
public:
using HANDLE = std::shared_ptr<AppExecFwk::EventHandler>;
virtual void Init() {}
virtual std::u16string GetSimOperator(int32_t slotId) = 0;
virtual std::u16string GetIsoCountryCode(int32_t slotId) = 0;
virtual std::u16string GetSpn(int32_t slotId) = 0;
virtual std::u16string GetIccId(int32_t slotId) = 0;
virtual std::u16string GetSimOperatorNumeric(int32_t slotId) = 0;
virtual std::u16string GetIsoCountryCodeForSim(int32_t slotId) = 0;
virtual std::u16string GetSimSpn(int32_t slotId) = 0;
virtual std::u16string GetSimIccId(int32_t slotId) = 0;
virtual std::u16string GetIMSI(int32_t slotId) = 0;
virtual std::u16string GetLocaleFromDefaultSim() = 0;
virtual std::u16string GetSimGid1(int32_t slotId) = 0;
virtual int ObtainSpnCondition(bool roaming, std::string operatorNum) = 0;
virtual void RegisterImsiLoaded(std::shared_ptr<AppExecFwk::EventHandler> eventHandler) = 0;
virtual void UnregisterImsiLoaded(const std::shared_ptr<AppExecFwk::EventHandler> &handler) = 0;
virtual void RegisterAllFilesLoaded(std::shared_ptr<AppExecFwk::EventHandler> eventHandler) = 0;
virtual void UnregisterAllFilesLoaded(const std::shared_ptr<AppExecFwk::EventHandler> &handler) = 0;
virtual void SetImsi(std::string imsi) = 0;
};
} // namespace SIM
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -0,0 +1,151 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef TELEPHONY_I_SIM_MANAGER_H
#define TELEPHONY_I_SIM_MANAGER_H
#include <unordered_map>
#include "parcel.h"
namespace OHOS {
namespace Telephony {
const int32_t CARRIER_CONFIG_STEP = 2;
const std::u16string DEFAULT_DISPLAY_NAME = u"simDefaultDisplayName";
const std::u16string DEFAULT_DISPLAY_NUMBER = u"simDefaultDisplayNumber";
struct CarrierConfig : public Parcelable {
std::u16string configName;
std::u16string iccId;
std::unordered_map<std::u16string, std::u16string> configMap;
bool Marshalling(Parcel &parcel) const
{
if (!parcel.WriteString16(configName)) {
return false;
}
if (!parcel.WriteString16(iccId)) {
return false;
}
if (!configMap.empty() && configMap.size() > 0) {
std::vector<std::u16string> configVector;
auto it = configMap.begin();
while (it != configMap.end()) {
configVector.emplace_back(it->first);
configVector.emplace_back(it->second);
it++;
}
if (!parcel.WriteString16Vector(configVector)) {
return false;
}
}
return true;
};
std::shared_ptr<CarrierConfig> UnMarshalling(Parcel &parcel)
{
std::shared_ptr<CarrierConfig> param = std::make_shared<CarrierConfig>();
if (param == nullptr || !param->ReadFromParcel(parcel)) {
param = nullptr;
}
return param;
};
bool ReadFromParcel(Parcel &parcel)
{
parcel.ReadString16(configName);
parcel.ReadString16(iccId);
configMap.clear();
std::vector<std::u16string> *configVector = nullptr;
parcel.ReadString16Vector(configVector);
int i = 0;
while ((int)configVector->size() > i) {
configMap.emplace(
std::pair<std::u16string, std::u16string>(configVector->at(i), configVector->at(i + 1)));
i += CARRIER_CONFIG_STEP;
}
return true;
};
bool operator==(const CarrierConfig &p)
{
return (configName == p.configName && iccId == p.iccId);
}
};
struct IccAccountInfo : public Parcelable {
int32_t slotIndex;
std::u16string displayName;
std::u16string displayNumber;
void Init(int32_t slotIndex, std::u16string displayName = DEFAULT_DISPLAY_NAME,
std::u16string displayNumber = DEFAULT_DISPLAY_NUMBER)
{
this->slotIndex = slotIndex;
this->displayName = displayName;
this->displayNumber = displayNumber;
};
bool Marshalling(Parcel &parcel) const
{
if (!parcel.WriteInt32(slotIndex)) {
return false;
}
if (!parcel.WriteString16(displayName)) {
return false;
}
if (!parcel.WriteString16(displayNumber)) {
return false;
}
return true;
};
std::shared_ptr<IccAccountInfo> UnMarshalling(Parcel &parcel)
{
std::shared_ptr<IccAccountInfo> param = std::make_shared<IccAccountInfo>();
if (param == nullptr || !param->ReadFromParcel(parcel)) {
param = nullptr;
}
return param;
};
bool ReadFromParcel(Parcel &parcel)
{
parcel.ReadInt32(slotIndex);
parcel.ReadString16(displayName);
parcel.ReadString16(displayNumber);
return true;
};
bool operator==(const IccAccountInfo &p)
{
return (slotIndex == p.slotIndex);
}
};
class ISimManager {
public:
ISimManager() {};
virtual ~ISimManager() {};
virtual void Init();
virtual bool GetSimAccountInfo(int32_t subId, IccAccountInfo &info);
virtual bool SetDefaultVoiceSlotId(int32_t subId);
virtual bool SetDefaultSmsSlotId(int32_t subId);
virtual int32_t GetDefaultVoiceSlotId();
virtual int32_t GetDefaultSmsSlotId();
};
} // namespace Telephony
} // namespace OHOS
#endif // TELEPHONY_I_SIM_MANAGER_H

View File

@ -12,22 +12,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef UNTITLED_RADIO_STATE_H
#define UNTITLED_RADIO_STATE_H
#include <memory>
#ifndef OHOS_I_SIM_SMS_MANAGER_H
#define OHOS_I_SIM_SMS_MANAGER_H
namespace OHOS {
class NetworkSearchManager;
class RadioInfoState {
namespace Telephony {
class ISimSmsManager {
public:
RadioInfoState();
explicit RadioInfoState(std::shared_ptr<NetworkSearchManager> const &networkSearchManager);
virtual ~RadioInfoState() = default;
void SetToTheSuitableState();
void ProcessRadioChange();
private:
std::shared_ptr<NetworkSearchManager> networkSearchManager_;
virtual void Init() {}
virtual bool AddSmsToIcc(int status, std::string &pdu, std::string &smsc) = 0;
virtual bool RenewSmsIcc(int index, int status, std::string &pduData, std::string &smsc) = 0;
virtual bool DelSmsIcc(int index) = 0;
virtual std::vector<std::string> ObtainAllSmsOfIcc() = 0;
};
} // namespace Telephony
} // namespace OHOS
#endif // UNTITLED_RADIO_STATE_H
#endif

View File

@ -16,16 +16,34 @@
#ifndef OHOS_I_SIM_STATE_MANAGER_H
#define OHOS_I_SIM_STATE_MANAGER_H
#include <string.h>
#include <unistd.h>
#include <cstdio>
#include <cstring>
#include <memory>
#include <vector>
#include "event_handler.h"
namespace OHOS {
namespace SIM {
namespace Telephony {
enum UnlockResult {
UNLOCK_FAIL = -2, // unlock fail
UNLOCK_INCORRECT = -1, // password error
UNLOCK_OK = 0, // unlock sucessful
};
enum ExternalState {
EX_UNKNOWN,
EX_ABSENT,
EX_PIN_LOCKED,
EX_PUK_LOCKED,
EX_SIMLOCK,
EX_READY,
EX_UNREADY,
EX_BLOCKED_PERM,
EX_ICC_ERROR,
EX_ICC_RESTRICTED,
};
struct LockStatusResponse {
int32_t result;
int32_t remain;
};
class ISimStateManager {
public:
using HANDLE = const std::shared_ptr<AppExecFwk::EventHandler>;
@ -33,12 +51,23 @@ public:
virtual bool HasSimCard(int32_t slotId) = 0;
virtual int32_t GetSimState(int32_t slotId) = 0;
virtual bool IsSimActive(int32_t slotId) = 0;
virtual bool UnlockPin(std::string pin, LockStatusResponse &response, int32_t slotId) = 0;
virtual bool UnlockPuk(std::string newPin, std::string puk, LockStatusResponse &response, int32_t phoneId) = 0;
virtual bool AlterPin(
std::string newPin, std::string oldPin, LockStatusResponse &response, int32_t phoneId) = 0;
virtual bool SetLockState(std::string pin, int32_t enable, LockStatusResponse &response, int32_t phoneId) = 0;
virtual int32_t GetLockState(int32_t phoneId) = 0;
virtual int32_t RefreshSimState(int32_t slotId) = 0;
// Event register
virtual void RegisterForIccStateChanged(HANDLE &handler) = 0;
virtual void UnregisterForIccStateChanged(HANDLE &handler) = 0;
virtual void RegisterForReady(HANDLE &handler) = 0;
virtual void UnregisterForReady(HANDLE &handler) = 0;
virtual void RegisterIccStateChanged(HANDLE &handler) = 0;
virtual void UnregisterIccStateChanged(HANDLE &handler) = 0;
virtual void RegisterIccReady(HANDLE &handler) = 0;
virtual void UnregisterIccReady(HANDLE &handler) = 0;
virtual void RegisterIccLocked(HANDLE &handler) = 0;
virtual void UnregisterIccLocked(HANDLE &handler) = 0;
virtual void RegisterIccSimLock(HANDLE &handler) = 0;
virtual void UnregisterIccSimLock(HANDLE &handler) = 0;
};
} // namespace SIM
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_I_SIM_MANAGER_H

View File

@ -13,20 +13,16 @@
* limitations under the License.
*/
#ifndef CORE_SERVICE_IRIL_MANAGER_H
#define CORE_SERVICE_IRIL_MANAGER_H
#ifndef I_TEL_RIL_MANAGER_H
#define I_TEL_RIL_MANAGER_H
#include <string.h>
#include <unistd.h>
#include <cstdio>
#include <cstring>
#include "cellular_data_profile.h"
#include "event_handler.h"
#include "event_runner.h"
#include "hril_types.h"
namespace OHOS {
enum ModemPowerState { CORE_SERVICE_POWER_OFF, CORE_SERVICE_POWER_NOT_AVAILABLE, CORE_SERVICE_POWER_ON };
namespace Telephony {
enum ModemPowerState { CORE_SERVICE_POWER_OFF, CORE_SERVICE_POWER_ON, CORE_SERVICE_POWER_NOT_AVAILABLE };
class IRilManager {
public:
@ -36,19 +32,41 @@ public:
virtual void RegisterPhoneNotify(
const std::shared_ptr<AppExecFwk::EventHandler> &handler, int what, void *obj) = 0;
virtual void UnRegisterPhoneNotify(int what) = 0;
virtual void UnRegisterPhoneNotify(
const std::shared_ptr<AppExecFwk::EventHandler> &observerCallBack, int what) = 0;
virtual void SetRadioPower(ModemPowerState radioState) = 0;
virtual void SetModemRadioPower(bool on, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SetRadioStatus(int fun, int rst, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void GetRadioStatus(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void ShutDown(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual ModemPowerState GetRadioState() = 0;
virtual void Dial(std::string address, int clirMode, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Reject(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Hangup(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Answer(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetCallList(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Hold(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Active(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Swap(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Join(int32_t callType, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void Split(int32_t nThCall, int32_t callType, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void CallSupplement(int32_t type, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetCallWait(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetCallWait(const int32_t activate, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetCallForward(int32_t reason, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetCallForward(int32_t reason, int32_t mode, std::string number, int32_t classx,
const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetClip(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetClip(const int32_t action, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetClir(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetClir(const int32_t action, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetCallRestriction(std::string fac, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetCallRestriction(
std::string &fac, int32_t mode, std::string &password, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SendDtmf(const std::string &sDTMFCode, int32_t index, int32_t switchOn, int32_t switchOff,
const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SendDtmf(char cDTMFCode, int32_t index, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void StartDtmf(char cDTMFCode, int32_t index, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void StopDtmf(int32_t index, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void ActivatePdpContext(int32_t radioTechnology, CellularDataProfile dataProfile, bool isRoaming,
bool allowRoaming, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void DeactivatePdpContext(
@ -60,17 +78,43 @@ public:
virtual void GetOperatorInfo(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SendSms(std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void StorageSms(
int32_t status, std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void DeleteSms(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void UpdateSms(int32_t gsmIndex, int32_t state, std::string smscPdu, std::string pdu,
const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void GetSmsCenterAddress(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SetSmsCenterAddress(
int32_t tosca, std::string address, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SetCellBroadcast(int32_t mode, std::string idList, std::string dcsList,
const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SendSmsMoreMode(
std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SendSmsAck(bool success, int32_t cause, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void ReadIccFile(int32_t command, int32_t fileId, std::string path, int32_t p1, int32_t p2, int32_t p3,
std::string data, std::string pin2, std::string aid, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void GetImsi(std::string aid, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetSimStatus(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void RequestSimIO(int32_t command, int32_t fileId, int32_t p1, int32_t p2, int32_t p3,
std::string data, std::string path, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void GetImsi(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetIccID(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetSimLockStatus(std::string fac, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void SetSimLock(
std::string fac, int32_t mode, std::string passwd, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void ChangeSimPassword(std::string fac, std::string oldPasswd, std::string newPasswd,
int32_t pwdLength, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void EnterSimPin(std::string pin, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void UnlockSimPin(std::string puk, std::string pin, const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetSimPinInputTimes(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void GetNetworkSearchInformation(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void GetNetworkSelectionMode(const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SetNetworkSelectionMode(
int32_t automaticFlag, std::string oper, const AppExecFwk::InnerEvent::Pointer &response) = 0;
virtual void SetNetworkLocationUpdate(const AppExecFwk::InnerEvent::Pointer &result) = 0;
virtual void TelRilSetParam(int32_t preferredNetworkType, int32_t cdmaSubscription, int32_t instanceId) = 0;
virtual bool InitCellularRadio(bool isFirst) = 0;
};
} // namespace Telephony
} // namespace OHOS
#endif // CORE_SERVICE_IRIL_MANAGER_H
#endif // I_TEL_RIL_MANAGER_H

View File

@ -0,0 +1,54 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef NETWORK_INFORMATION_H
#define NETWORK_INFORMATION_H
#include "parcel_base.h"
namespace OHOS {
namespace Telephony {
typedef enum {
NETWORK_PLMN_STATE_UNKNOWN = 0,
NETWORK_PLMN_STATE_AVAILABLE = 1,
NETWORK_PLMN_STATE_REGISTERED = 2,
NETWORK_PLMN_STATE_FORBIDDEN = 3
} NetworkPlmnState;
typedef enum { NETWORK_GSM_OR_GPRS = 0, NETWORK_WCDMA = 2, NETWORK_LTE = 7 } NetworkRat;
class NetworkInformation : public Parcelable {
public:
void SetOperateInformation(const std::string &operatorLongName, const std::string &operatorShortName,
const std::string &operatorNumeric, int32_t state, int32_t rat_);
int32_t GetNetworkState() const;
std::string GetOperatorShortName() const;
std::string GetOperatorLongName() const;
std::string GetOperatorNumeric() const;
int32_t GetRadioTech() const;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
static NetworkInformation *Unmarshalling(Parcel &parcel);
private:
NetworkPlmnState networkPlmnState_ = NETWORK_PLMN_STATE_UNKNOWN;
std::string operatorShortName_;
std::string operatorLongName_;
std::string operatorNumeric_;
NetworkRat rat_ = NETWORK_GSM_OR_GPRS;
};
} // namespace Telephony
} // namespace OHOS
#endif // NETWORK_INFORMATION_H

View File

@ -0,0 +1,40 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef NETWORK_SEARCH_RESULT_H
#define NETWORK_SEARCH_RESULT_H
#include "network_information.h"
namespace OHOS {
namespace Telephony {
class NetworkSearchResult : public Parcelable {
public:
NetworkSearchResult();
virtual ~NetworkSearchResult() = default;
void SetNetworkSearchResultValue(int32_t listSize, std::vector<NetworkInformation> &operatorInfo);
std::vector<NetworkInformation> GetNetworkSearchResult() const;
int32_t GetNetworkSearchResultSize() const;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
static NetworkSearchResult *Unmarshalling(Parcel &parcel);
private:
int32_t listSize_ = 0;
std::vector<NetworkInformation> operatorInfoList_;
};
} // namespace Telephony
} // namespace OHOS
#endif // NETWORK_SEARCH_RESULT_H

View File

@ -13,21 +13,25 @@
* limitations under the License.
*/
#ifndef OHOS_NETWORK_STATE_H
#define OHOS_NETWORK_STATE_H
#include <memory>
#include <string>
#include <vector>
#ifndef NETWORK_STATE_H
#define NETWORK_STATE_H
#include "parcel.h"
namespace OHOS {
namespace Telephony {
#define MSG_NS_SPN_UPDATED 0xF1
const std::string SPN_INFO_UPDATED_ACTION = "ohos.action.telephonySpnInfoUpdated";
const std::string CUR_PLMN = "CUR_PLMN";
const std::string CUR_PLMN_SHOW = "CUR_PLMN_SHOW";
const std::string CUR_SPN = "CUR_SPN";
const std::string CUR_SPN_SHOW = "CUR_SPN_SHOW";
const std::string CUR_REG_STATE = "CUR_REG_STATE";
const std::string CUR_SPN_SHOW_RULE = "CUR_SPN_SHOW_RULE";
typedef enum {
DOMAIN_TYPE_PS,
DOMAIN_TYPE_CS,
DOMAIN_TYPE_CS
} DomainType;
typedef enum {
@ -35,23 +39,25 @@ typedef enum {
REG_STATE_IN_SERVICE,
REG_STATE_NO_SERVICE,
REG_STATE_EMERGENCY_ONLY,
REG_STATE_SEARCH,
REG_STATE_SEARCH
} RegServiceState;
typedef enum {
ROAMING_STATE_UNKNOWN,
ROAMING_STATE_UNSPEC,
ROAMING_STATE_HOME_ONLY,
ROAMING_STATE_DOMESTIC,
ROAMING_STATE_INTERNATIONAL,
ROAMING_STATE_INTERNATIONAL
} RoamingType;
typedef enum {
RADIO_TECHNOLOGY_UNKNOWN,
RADIO_TECHNOLOGY_GSM,
RADIO_TECHNOLOGY_1XRTT,
RADIO_TECHNOLOGY_WCDMA,
RADIO_TECHNOLOGY_LTE
} RadioTech;
typedef enum { MODE_TYPE_UNKNOWN = -1, MODE_TYPE_AUTO = 0, MODE_TYPE_MANUAL = 1 } SelectionMode;
const int NETWORK_MAX_NAME_LEN = 15;
const int NETWORK_MAX_FULL_NAME_LEN = 31;
const int NETWORK_MAX_PLMN_LEN = 31;
@ -70,74 +76,71 @@ public:
bool operator==(const NetworkState &other) const;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
static std::unique_ptr<NetworkState> UnMarshalling(Parcel &parcel);
static NetworkState *Unmarshalling(Parcel &parcel);
void SetOperatorInfo(const std::string &longName, const std::string &shortName, const std::string &numeric,
const DomainType domainType);
DomainType domainType);
void SetEmergency(bool isEmergency);
void SetNetworkType(RadioTech tech, DomainType domainType);
void SetRoaming(RoamingType roamingType, DomainType domainType);
void SetNetworkState(RegServiceState state, DomainType domainType);
int32_t GetPsRegStatus();
int32_t GetCsRegStatus();
int32_t GetPsRegStatus() const;
int32_t GetCsRegStatus() const;
int32_t GetPsRoamingStatus() const;
int32_t GetCsRoamingStatus() const;
/*
* Obtains RAT of the PS domain on the registered network.
* @return Returns RAT of the PS domain on the registered network
*/
int32_t GetPsRadioTech();
int32_t GetPsRadioTech() const;
/*
* Obtains RAT of the CS domain on the registered network.
* @return Returns RAT of the CS domain on the registered network
*/
int32_t GetCsRadioTech();
int32_t GetCsRadioTech() const;
/*
* Obtains the operator name in the long alphanumeric format of the registered network.
* @return Returns operator name in the long alphanumeric format
*/
std::string GetLongOperatorName();
std::string GetLongOperatorName() const;
/*
* Obtains the operator name in the short alphanumeric format of the registered network.
* @return Returns operator name in the short alphanumeric format
*/
std::string GetShortOperatorName();
std::string GetShortOperatorName() const;
/*
* Obtains the PLMN code of the registered network.
* @return Returns the PLMN code
*/
std::string GetPlmnNumeric();
std::string GetPlmnNumeric() const;
/*
* Obtains the network registration status of the device.
* @return Returns the network registration status
*/
int32_t GetRegStatus();
/*
* Obtains the NSA network registration status of the device.
* @return Returns the NSA network registration status
*/
int32_t GetNsaState();
/*
* Obtains the status of CA.
* @return Returns the status of CA.
*/
bool IsCaActive();
int32_t GetRegStatus() const;
/*
* Checks whether this device is allowed to make emergency calls only.
* @return Returns the device emergency calls state.
*/
bool IsEmergency();
bool IsEmergency() const;
/*
* Checks whether the device is roaming.
* @return Returns roaming state.
*/
bool IsRoaming();
bool IsRoaming() const;
/*
* Obtains the network plmn status
* @return Returns the network plmn status
*/
int32_t GetNetworkPlmnState() const;
std::string ToString() const;
private:
bool isEmergency_;
@ -150,5 +153,6 @@ private:
RadioTech psRadioTech_;
RadioTech csRadioTech_;
};
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_NS_NETWORK_STATE_H
#endif // NETWORK_STATE_H

145
interfaces/innerkits/common/observer_handler.h Executable file → Normal file
View File

@ -16,16 +16,12 @@
#ifndef OBSERVER_HANDLER_H
#define OBSERVER_HANDLER_H
#include <string>
#include <unordered_map>
#include <vector>
#include "event_handler.h"
#include "event_runner.h"
#include "hilog/log.h"
static constexpr OHOS::HiviewDFX::HiLogLabel OBSERVER_LABEL = {LOG_CORE, 1, "ObserverHandler"};
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace Telephony {
class ObserverHandler {
public:
ObserverHandler();
@ -36,7 +32,7 @@ public:
void RegUniqueObserver(int what, const std::shared_ptr<AppExecFwk::EventHandler> handler);
void Remove(int what);
void Remove(int what, const std::shared_ptr<AppExecFwk::EventHandler> handler);
void RemoveAll();
@ -47,13 +43,12 @@ public:
{
auto iter = observerHandlerMap_.find(what);
if (iter == observerHandlerMap_.end()) {
OHOS::HiviewDFX::HiLog::Info(OBSERVER_LABEL, "gesture %{public}d not register", what);
TELEPHONY_LOGE("ObserverHandler NotifyObserver %{public}d not register", what);
return;
}
std::shared_ptr<T> msg(object);
for (auto handlers : iter->second) {
OHOS::HiviewDFX::HiLog::Info(OBSERVER_LABEL, "zjy handlers->SendEvent:%{public}d", what);
handlers->SendEvent(what, msg);
}
}
@ -63,69 +58,123 @@ public:
{
auto iter = observerHandlerMap_.find(what);
if (iter == observerHandlerMap_.end()) {
OHOS::HiviewDFX::HiLog::Info(OBSERVER_LABEL, "NotifyObserver %{public}d not register", what);
TELEPHONY_LOGE("ObserverHandler NotifyObserver %{public}d not register", what);
return;
}
for (auto handlers : iter->second) {
OHOS::HiviewDFX::HiLog::Info(OBSERVER_LABEL, "NotifyObserver handlers->SendEvent:%{public}d", what);
handlers->SendEvent(what, object);
}
}
enum ObserverHandlerId {
// modem
RADIO_STATE_CHANGED = 0,
RADIO_ON = 1,
RADIO_AVAIL = 2,
RADIO_OFF_OR_NOT_AVAIL = 3,
RADIO_NOT_AVAIL = 4,
RADIO_CALL_STATE = 5,
RADIO_NETWORK_STATE = 6,
RADIO_DATA_CALL_LIST_CHANGED = 7,
RADIO_IMS_NETWORK_STATE_CHANGED = 8,
RADIO_ICC_STATUS_CHANGED = 9,
RADIO_CONNECTED = 10,
RADIO_ICC_REFRESH = 11,
RADIO_PCODATA = 12,
RADIO_GET_SIGNAL_STRENGTH = 13,
RADIO_GSM_SMS = 14,
RADIO_SIGNAL_STRENGTH_UPDATE = 15,
RADIO_SMS_ON_SIM = 16,
RADIO_SMS_STATUS = 17,
RADIO_RESTRICTED_STATE = 18,
RADIO_GET_STATUS,
RADIO_SET_STATUS,
// cellcall
RADIO_DIAL = 19,
RADIO_REJECT_CALL = 20,
RADIO_HANDUP_CONNECT = 21,
RADIO_ACCEPT_CALL = 22,
RADIO_LAST_CALL_FAIL_CAUSE = 23,
RADIO_CURRENT_CALLS = 24,
RADIO_POWER,
RADIO_ON,
RADIO_AVAIL,
RADIO_OFF,
RADIO_NOT_AVAIL,
RADIO_CALL_STATE,
RADIO_DATA_CALL_LIST_CHANGED,
RADIO_IMS_NETWORK_STATE_CHANGED,
RADIO_ICC_STATUS_CHANGED,
RADIO_CONNECTED,
RADIO_ICC_REFRESH,
RADIO_PCODATA,
RADIO_GSM_SMS,
RADIO_SMS_ON_SIM,
RADIO_SMS_STATUS,
RADIO_RESTRICTED_STATE,
RADIO_CELL_BROADCAST,
RADIO_RIL_SETUP_DATA_CALL,
RADIO_RIL_IMS_REGISTRATION_STATE,
RADIO_RIL_DEACTIVATE_DATA_CALL,
// cellular call
RADIO_DIAL = 101,
RADIO_REJECT_CALL,
RADIO_HANGUP_CONNECT,
RADIO_ACCEPT_CALL,
RADIO_LAST_CALL_FAIL_CAUSE,
RADIO_CURRENT_CALLS,
RADIO_HOLD_CALL,
RADIO_ACTIVE_CALL,
RADIO_SWAP_CALL,
RADIO_JOIN_CALL,
RADIO_SPLIT_CALL,
RADIO_CALL_SUPPLEMENT,
RADIO_GET_CALL_WAIT,
RADIO_SET_CALL_WAIT,
RADIO_GET_CALL_FORWARD,
RADIO_SET_CALL_FORWARD,
RADIO_GET_CALL_CLIP,
RADIO_SET_CALL_CLIP,
RADIO_GET_CALL_CLIR,
RADIO_SET_CALL_CLIR,
RADIO_GET_CALL_RESTRICTION,
RADIO_SET_CALL_RESTRICTION,
RADIO_SEND_DTMF,
RADIO_START_DTMF,
RADIO_STOP_DTMF,
// Ims sms
RADIO_SEND_IMS_GSM_SMS = 25,
RADIO_SEND_SMS = 26,
RADIO_SEND_SMS_EXPECT_MORE = 27,
RADIO_SEND_IMS_GSM_SMS = 201,
RADIO_SEND_SMS,
RADIO_STORAGE_SMS,
RADIO_DELETE_SMS,
RADIO_SEND_SMS_EXPECT_MORE,
// data
RADIO_POWER = 28,
RADIO_VOICE_REG_STATE = 29,
RADIO_DATA_REG_STATE = 30,
RADIO_OPERATOR = 31,
RADIO_RIL_SETUP_DATA_CALL = 32,
RADIO_RIL_IMS_REGISTRATION_STATE = 33,
RADIO_RIL_DEACTIVATE_DATA_CALL = 34,
// Network Search
RADIO_NETWORK_STATE = 301,
RADIO_VOICE_REG_STATE,
RADIO_DATA_REG_STATE,
RADIO_OPERATOR,
RADIO_GET_SIGNAL_STRENGTH,
RADIO_SIGNAL_STRENGTH_UPDATE,
RADIO_NETWORK_SEARCH_RESULT,
RADIO_GET_NETWORK_SELECTION_MODE,
RADIO_SET_NETWORK_SELECTION_MODE,
RADIO_CELL_INFO_UPDATE,
RADIO_GET_CELL_INFO,
RADIO_GET_CELL_LOCATION,
// module internal events
RADIO_PS_CONNECTION_ATTACHED = 500,
RADIO_PS_CONNECTION_ATTACHED = 401,
RADIO_PS_CONNECTION_DETACHED,
RADIO_PS_ROAMING_OPEN,
RADIO_PS_ROAMING_CLOSE,
// SIM
RADIO_SIM_GET_STATUS = 501,
RADIO_SIM_IO,
RADIO_SIM_GET_IMSI,
RADIO_SIM_GET_ICCID,
RADIO_SIM_GET_LOCK_STATUS,
RADIO_SIM_SET_LOCK,
RADIO_SIM_CHANGE_PASSWD,
RADIO_SIM_ENTER_PIN,
RADIO_SIM_UNLOCK_PIN,
RADIO_SIM_PIN_INPUT_TIMES,
RADIO_SIM_STATE_CHANGE,
RADIO_SIM_STATE_READY,
RADIO_IMSI_LOADED_READY,
RADIO_SIM_RECORDS_LOADED,
RADIO_SIM_STATE_LOCKED,
RADIO_SIM_STATE_SIMLOCK,
RADIO_UPDATE_SMS,
RADIO_SET_SMS_CENTER_ADDRESS,
RADIO_GET_SMS_CENTER_ADDRESS,
RADIO_SET_CELL_BROADCAST
};
private:
std::unordered_map<int32_t, std::list<std::shared_ptr<AppExecFwk::EventHandler>>> observerHandlerMap_;
};
} // namespace Telephony
} // namespace OHOS
#endif // OBSERVER_HANDLER_H

View File

@ -12,16 +12,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef OHOS_RIL_COMMON_PARCEL_H
#define OHOS_RIL_COMMON_PARCEL_H
#include <memory>
#include <string>
#ifndef OHOS_PARCEL_BASE_H
#define OHOS_PARCEL_BASE_H
#include "parcel.h"
#include "string_ex.h"
#include "hril_types.h"
namespace OHOS {
namespace Telephony {
#define READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(type, parcel, data) \
do { \
if (!(parcel).Read##type(data)) { \
@ -35,19 +33,6 @@ namespace OHOS {
return false; \
} \
} while (0)
struct UniInfo : public Parcelable {
int32_t serial;
int32_t gsmIndex; /* Index of Global System for Mobile Communications */
bool flag;
int32_t arg1;
int32_t arg2;
std::string strTmp;
bool ReadFromParcel(Parcel &parcel);
virtual bool Marshalling(Parcel &parcel) const override;
std::shared_ptr<UniInfo> UnMarshalling(Parcel &parcel);
void Dump(std::string, int32_t);
};
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_RIL_COMMON_PARCEL_H
#endif // OHOS_PARCEL_BASE_H

View File

@ -15,45 +15,45 @@
#ifndef UNTITLED_SIGNAL_INFORMATION_H
#define UNTITLED_SIGNAL_INFORMATION_H
#include "parcel.h"
namespace OHOS {
namespace Telephony {
static constexpr int MAX_SIGNAL_NUM = 2;
class SignalInformation : public Parcelable {
public:
enum class NetworkType { GSM = 1, CDMA, LTE, TDSCDMA };
enum class NetworkType { GSM = 1, CDMA, LTE, TDSCDMA, WCDMA };
static constexpr int NO_VALUE = 0x1AAAAAAA;
static constexpr int GSM_SIGNAL_THRESHOLD_5BAR[] = {2, 4, 6, 8, 10, 12};
static constexpr int CDMA_SIGNAL_THRESHOLD_5BAR[] = {-113, -112, -106, -99, -92, -85};
static constexpr int EDVO_SIGNAL_THRESHOLD_5BAR[] = {-113, -112, -106, -99, -92, -85};
static constexpr int LTE_SIGNAL_THRESHOLD_5BAR[] = {-121, -120, -115, -110, -105, -97};
static constexpr int TDSCDMA_SIGNAL_THRESHOLD_5BAR[] = {-112, -111, -105, -99, -93, -87};
static constexpr int GSM_SIGNAL_THRESHOLD_4BAR[] = {2, 3, 5, 8, 12};
static constexpr int CDMA_SIGNAL_THRESHOLD_4BAR[] = {-113, -109, -101, -93, -85};
static constexpr int EDVO_SIGNAL_THRESHOLD_4BAR[] = {-113, -109, -101, -93, -85};
static constexpr int LTE_SIGNAL_THRESHOLD_4BAR[] = {-121, -120, -114, -107, -97};
static constexpr int TDSCDMA_SIGNAL_THRESHOLD_4BAR[] = {-112, -111, -103, -95, -87};
static const int *g_gsmSignalThreshold;
static const int *g_cdmaSignalThreshold;
static int g_signalBar;
virtual SignalInformation::NetworkType GetNetworkType() const = 0;
virtual bool Marshalling(Parcel &parcel) const = 0;
static void InitSignalBar(const int32_t bar = 5);
static std::unique_ptr<SignalInformation> UnMarshalling(Parcel &parcel);
virtual bool ReadFromParcel(Parcel &parcel) = 0;
virtual int32_t GetSignalLevel() const = 0;
virtual std::string ToString() const = 0;
virtual sptr<SignalInformation> NewInstance() const = 0;
SignalInformation() = default;
SignalInformation();
virtual ~SignalInformation() = default;
protected:
static int32_t signalBar_;
static int32_t *gsmSignalThreshold_;
static int32_t *cdmaSignalThreshold_;
static int32_t *lteSignalThreshold_;
static int32_t *wcdmaSignalThreshold_;
};
class GsmSignalInformation : public SignalInformation {
public:
GsmSignalInformation();
~GsmSignalInformation();
void SetValue(const int32_t gsmRssi = 0, const int32_t timeAdvance = 0);
GsmSignalInformation() = default;
~GsmSignalInformation() = default;
void SetValue(const int32_t gsmRssi = 0, const int32_t gsmBer = 0);
bool operator==(const GsmSignalInformation &gsm) const;
int32_t GetRssi() const;
int32_t GetGsmBer() const;
int32_t GetSignalLevel() const override;
int32_t GetTimeAdvance() const;
std::u16string ToString() const;
std::string ToString() const override;
sptr<SignalInformation> NewInstance() const override;
SignalInformation::NetworkType GetNetworkType() const override;
bool Marshalling(Parcel &parcel) const override;
@ -62,19 +62,19 @@ public:
bool ValidateGsmValue() const;
private:
int32_t gsmRssi_ = 0;
int32_t timeAdvance_ = 0;
int32_t gsmRxlev_ = 0;
int32_t gsmBer_ = 0;
};
class CdmaSignalInformation : public SignalInformation {
public:
CdmaSignalInformation();
~CdmaSignalInformation();
CdmaSignalInformation() = default;
~CdmaSignalInformation() = default;
void SetValue(const int32_t cdmaRssi = 0, const int32_t cdmaEcno = 0);
bool operator==(const CdmaSignalInformation &cdma) const;
int32_t GetCdmaRssi() const;
int32_t GetSignalLevel() const override;
std::u16string ToString() const;
std::string ToString() const override;
SignalInformation::NetworkType GetNetworkType() const override;
sptr<SignalInformation> NewInstance() const override;
bool Marshalling(Parcel &parcel) const override;
@ -87,5 +87,60 @@ private:
int32_t cdmaRssi_ = -1;
int32_t cdmaEcno_ = -1;
};
class LteSignalInformation : public SignalInformation {
public:
LteSignalInformation() = default;
~LteSignalInformation() = default;
void SetValue(
const int32_t rxlev = 0, const int32_t lteRsrp = 0, const int32_t lteRsrq = 0, const int32_t lteSnr = 0);
bool operator==(const LteSignalInformation &lte) const;
int32_t GetRxlev() const;
int32_t GetRsrp() const;
int32_t GetRsrq() const;
int32_t GetSnr() const;
int32_t GetSignalLevel() const override;
std::string ToString() const override;
SignalInformation::NetworkType GetNetworkType() const override;
sptr<SignalInformation> NewInstance() const override;
bool Marshalling(Parcel &parcel) const override;
static std::unique_ptr<LteSignalInformation> UnMarshalling(Parcel &parcel);
bool ReadFromParcel(Parcel &parcel) override;
bool ValidateLteValue() const;
private:
int32_t rxlev_ = 0;
int32_t lteRsrp_ = 0;
int32_t lteRsrq_ = 0;
int32_t lteSnr_ = 0;
};
class WcdmaSignalInformation : public SignalInformation {
public:
WcdmaSignalInformation() = default;
~WcdmaSignalInformation() = default;
void SetValue(const int32_t wcdmaRxlev = 0, const int32_t wcdmaRscp = 0, const int32_t wcdmaEcio = 0,
const int32_t wcdmaBer = 0);
bool operator==(const WcdmaSignalInformation &wcdma) const;
int32_t GetRxlev() const;
int32_t GetRscp() const;
int32_t GetEcno() const;
int32_t GetBer() const;
int32_t GetSignalLevel() const override;
std::string ToString() const override;
SignalInformation::NetworkType GetNetworkType() const override;
sptr<SignalInformation> NewInstance() const override;
bool Marshalling(Parcel &parcel) const override;
static std::unique_ptr<WcdmaSignalInformation> UnMarshalling(Parcel &parcel);
bool ReadFromParcel(Parcel &parcel) override;
bool ValidateWcdmaValue() const;
private:
int32_t wcdmaRxlev_ = 0;
int32_t wcdmaRscp_ = 0;
int32_t wcdmaEcio_ = 0;
int32_t wcdmaBer_ = 0;
};
} // namespace Telephony
} // namespace OHOS
#endif // UNTITLED_SIGNAL_INFORMATION_H

View File

@ -15,10 +15,13 @@
#ifndef TELEPHONY_TELEPHONY_ERRORS_H
#define TELEPHONY_TELEPHONY_ERRORS_H
#include <errors.h>
namespace OHOS {
const int TELEPHONY_NO_ERROR = 0;
namespace Telephony {
const int TELEPHONY_ERROR = -1;
const int TELEPHONY_SUCCESS = 0;
enum {
TELEPHONY_COMMON = 0x00,
@ -31,6 +34,7 @@ enum {
TELEPHONY_CORE_SERVICE_SIM = 0x07,
TELEPHONY_CORE_SERVICE_NETWORK_SEARCH = 0x08,
TELEPHONY_CORE_SERVICE_CORE = 0x09,
TELEPHONY_DATA_STORAGE = 0x10,
};
// Error code for common
@ -45,12 +49,10 @@ enum {
TELEPHONY_MEMSET_FAIL,
TELEPHONY_LOCAL_PTR_NULL,
TELEPHONY_LOCAL_STORAGE_EMPTY,
TELEPHONY_BINDER_PID_MISMATCH,
TELEPHONY_BINDER_UID_MISMATCH,
TELEPHONY_SOCKET_ERR,
TELEPHONY_PERMISSION_ERR,
TELEPHONY_BAD_TYPE,
TELEPHONY_WRITE_DISCRIPTOR_TOKEN_FAIL,
TELEPHONY_WRITE_DESCRIPTOR_TOKEN_FAIL,
TELEPHONY_WRITE_REPLY_FAIL,
TELEPHONY_CONNECT_SYSTEM_ABILITY_STUB_FAIL,
TELEPHONY_ADD_DEATH_RECIPIENT_FAIL,
@ -58,10 +60,10 @@ enum {
};
// Error code for telephony call manager
constexpr ErrCode CALL_MANAGER_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CALL_MANAGER);
constexpr ErrCode CALL_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CALL_MANAGER);
// Error code for telephony cellular call
constexpr ErrCode CELLULAR_CALL_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CELLULAR_CALL);
constexpr ErrCode PROTOCOL_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CELLULAR_CALL);
// Error code for telephony cellular data
constexpr ErrCode CELLULAR_DATA_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CELLULAR_DATA);
@ -84,5 +86,9 @@ constexpr ErrCode CORE_SERVICE_NETWORK_SEARCH_ERR_OFFSET =
// Error code for telephony core of core service
constexpr ErrCode CORE_SERVICE_CORE_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_CORE_SERVICE_CORE);
// Error code for telephony data storage
constexpr ErrCode CORE_DATA_STORAGE_ERR_OFFSET = ErrCodeOffset(SUBSYS_TELEPONY, TELEPHONY_DATA_STORAGE);
} // namespace Telephony
} // namespace OHOS
#endif // TELEPHONY_TELEPHONY_ERRORS_H

View File

@ -12,12 +12,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef TELEPHONY_LOG_H
#define TELEPHONY_LOG_H
#include <stdio.h>
#include "hilog/log.h"
#undef LOG_DOMAIN
#undef LOG_TAG
#define LOG_DOMAIN 0xD002B01

View File

@ -0,0 +1,52 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef DATA_STORAGE_CALL_HISTORY_H
#define DATA_STORAGE_CALL_HISTORY_H
namespace OHOS {
namespace Telephony {
const std::string CALL_ID = "call_id";
const std::string PHONE_NUMBER = "phone_number";
const std::string CALL_TYPE = "call_type";
const std::string SESSION_TYPE = "session_type";
const std::string START_TIME = "start_time";
const std::string END_TIME = "end_time";
const std::string CALL_DURATION_TIME = "call_duration_time";
const std::string CALL_STATE = "call_state";
const std::string COUNTRY_CODE = "country_code";
struct CallHistoryInfo {
int callId;
std::string phoneNumber;
int callType;
int sessionType;
std::string startTime;
std::string endTime;
long durationTime;
int callState;
std::string countryCode;
};
enum class SessionType : int { UNKNOWN = 0, CS, IMS, OTT };
enum class CallType : int { UNKNOWN = 0, INCOMING, CALLING };
enum class CallState : int { UNKNOWN = 0, REJECT, MISSED, ONLINE, PAUSE, COMPLETE };
const std::string uri = "dataability://telephony.callhistory";
} // namespace Telephony
} // namespace OHOS
#endif // DATA_STORAGE_CALL_HISTORY_H

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef STATE_REGISTRY_ERRORS_H
#define STATE_REGISTRY_ERRORS_H
#include "../../../core_service/interfaces/innerkits/common/telephony_errors.h"
namespace OHOS {
namespace Telephony {
enum {
OPEN_FILE_ERROR = CORE_DATA_STORAGE_ERR_OFFSET,
TEL_PROFILE_UTIL_IS_NULL,
PDP_PROFILE_VERSION_IS_NULL,
PDP_PROFILE_VERSION_IS_OLD,
OPERATOR_IS_NULL,
};
} // namespace Telephony
} // namespace OHOS
#endif // STATE_REGISTRY_ERRORS_H

View File

@ -0,0 +1,93 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef DATA_STORAGE_SMS_DATA_H
#define DATA_STORAGE_SMS_DATA_H
namespace OHOS {
namespace Telephony {
const std::string MSG_ID = "msg_id";
const std::string RECEIVER_NUMBER = "receiver_number";
const std::string SENDER_NUMBER = "sender_number";
const std::string START_TIME = "start_time";
const std::string END_TIME = "end_time";
const std::string MSG_TYPE = "msg_type";
const std::string MSG_TITLE = "msg_title";
const std::string MSG_CONTENT = "msg_content";
const std::string MSG_STATE = "msg_state";
const std::string MSG_CODE = "msg_code";
const std::string IS_LOCK = "is_lock";
const std::string IS_READ = "is_read";
const std::string IS_COLLECT = "is_collect";
const std::string SESSION_TYPE = "session_type";
const std::string RETRY_NUMBER = "retry_number";
const std::string ATTACHMENT_TYPE = "attachment_type";
const std::string ATTACHMENT_PATH = "attachment_path";
const std::string ATTACHMENT_FAILURE_TIME = "attachment_failure_time";
const std::string OPERATOR_SERVICE_NUMBER = "operator_service_number";
const std::string SESSION_ID = "session_id";
const std::string GROUP_ID = "group_id";
const std::string PDU_ID = "pdu_id";
struct MessageInfo {
int msgId;
std::string receiverNumber;
std::string senderNumber;
std::string startTime;
std::string endTime;
int msgType;
std::string msgTitle;
std::string msgContent;
int msgState;
std::string operatorServiceNumber;
int msgCode;
int isLock;
int isRead;
int isCollect;
int sessionType;
int retryNumber;
int attachmentType;
std::string attachmentPath;
std::string attachmentFailureTime;
int pdu_id;
int sessionId;
int groupId;
};
enum MsgType { SMS = 0, MMS };
enum MsgState { UNSENT = 0, FAILED, PENDING, SUCCEED };
const std::string uri = "dataability://telephony.sms";
enum class MessageUriType : int32_t {
ALL,
MMS,
SMS,
UNREAD,
READ,
UNLOCK,
LOCK,
COLLECT,
CANCEL_COLLECT,
DELETE_BY_IDS,
DELETE_THIRTY_DATA,
SELECT_BY_NUMBER,
SELECT_COLLECT_DATA,
MARK_READ
};
} // namespace Telephony
} // namespace OHOS
#endif // DATA_STORAGE_SMS_DATA_H

View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef DATA_STORAGE_PDP_PROFILE_DATA_H
#define DATA_STORAGE_PDP_PROFILE_DATA_H
namespace OHOS {
namespace Telephony {
const std::string PROFILE_ID = "profile_id";
const std::string PROFILE_NAME = "profile_name";
const std::string MCC = "mcc";
const std::string MNC = "mnc";
const std::string APN = "apn";
const std::string AUTH_TYPE = "auth_type";
const std::string AUTH_USER = "auth_user";
const std::string AUTH_PWD = "auth_pwd";
const std::string APN_TYPES = "apn_types";
const std::string IS_ROAMING_APN = "is_roaming_apn";
const std::string PROFILE_ENABLE = "profile_enable";
const std::string HOME_URL = "home_url";
const std::string PROXY_IP_ADDRESS = "proxy_ip_address";
const std::string MMS_IP_ADDRESS = "mms_ip_address";
const std::string APN_PROTOCOL = "apn_protocol";
const std::string APN_ROAM_PROTOCOL = "apn_roam_protocol";
const std::string BEARING_SYSTEM_TYPE = "bearing_system_type";
struct PdpProfileInfo {
int profileId;
std::string profileName;
std::string mcc;
std::string mnc;
std::string apn;
int authType;
std::string authUser;
std::string authPwd;
std::string apnTypes; // see ApnType
int isRoamingApn;
std::string homeUrl;
std::string proxyIpAddress;
std::string mmsIpAddress;
std::string pdpProtocol; // see PdpProtocol
std::string roamPdpProtocol;
int bearingSystemType; // see BearingSystemType
};
enum ApnType { DEFAULT, IMS, MMS, ALL };
enum ApnAuthType { None = 0, PAP, CHAP, PAP_OR_CHAP };
enum PdpProtocol { IPV4 = 0, IPV6, IPV4V6 };
enum BearingSystemType {
UNKNOWN = 0,
LTE,
HSPAP,
HSPA,
HSUPA,
HSDPA,
UMTS,
EDGE,
GPRS,
eHRPD,
EVDO_B,
EVDO_A,
EVDO_0,
xRTT,
IS95B,
IS95AS
};
const std::string uri = "dataability://telephony.pdpprofile";
} // namespace Telephony
} // namespace OHOS
#endif // DATA_STORAGE_PDP_PROFILE_DATA_H

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef DATA_STORAGE_SIM_DATA_H
#define DATA_STORAGE_SIM_DATA_H
namespace OHOS {
namespace Telephony {
const std::string SIM_ID = "sim_id";
const std::string ICC_ID = "icc_id";
const std::string CARD_ID = "card_id";
const std::string SLOT_INDEX = "slot_index";
const std::string SHOW_NAME = "show_name";
const std::string PHONE_NUMBER = "phone_number";
const std::string COUNTRY_CODE = "country_code";
const std::string LANGUAGE = "language";
const std::string IMSI = "imsi";
const std::string CARD_TYPE = "card_type";
const std::string IS_ACTIVE = "is_active";
const std::string IS_MAIN_CARD = "is_main_card";
const std::string IS_MESSAGE_CARD = "is_message_card";
const std::string IS_CELLULAR_DATA_CARD = "is_cellular_data_card";
struct SimInfo {
int simId;
std::string iccId;
std::string cardId;
int slotIndex;
int cardType;
std::string showName;
std::string phoneNumber;
std::string countryCode;
std::string language;
std::string imsi;
int isMainCard;
int isMessageCard;
int isCellularDataCard;
int isActive;
};
const std::string SIM_URI = "dataability://telephony.sim";
enum SimUriType { ALL, MAIN_CARD, CELLULAR_DATA_CARD, MESSAGE_CARD, CURRENT, ID, DELETE, UPDATE, INSERT };
} // namespace Telephony
} // namespace OHOS
#endif // DATA_STORAGE_SIM_DATA_H

View File

@ -0,0 +1,31 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef NETWORK_SEARCH_SERVICE_DEATH_RECIPIENT_H
#define NETWORK_SEARCH_SERVICE_DEATH_RECIPIENT_H
#include "iremote_object.h"
namespace OHOS {
namespace Telephony {
class NetworkSearchServiceDeathRecipient : public IRemoteObject::DeathRecipient {
public:
NetworkSearchServiceDeathRecipient() = default;
virtual ~NetworkSearchServiceDeathRecipient() = default;
virtual void OnRemoteDied(const wptr<IRemoteObject> &remote) override;
};
} // namespace Telephony
} // namespace OHOS
#endif // NETWORK_SEARCH_SERVICE_DEATH_RECIPIENT_H

View File

@ -0,0 +1,56 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef NETWORK_SEARCH_SERVICE_PROXY_HOLDER_H
#define NETWORK_SEARCH_SERVICE_PROXY_HOLDER_H
#include <string>
#include <vector>
#include <mutex>
#include "i_core_service.h"
#include "iremote_object.h"
#include "refbase.h"
#include "signal_information.h"
#include "network_search_result.h"
namespace OHOS {
namespace Telephony {
class NetworkSearchServiceProxyHolder {
public:
int32_t GetPsRadioTech(int32_t slotId);
int32_t GetCsRadioTech(int32_t slotId);
std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId);
std::u16string GetOperatorNumeric(int32_t slotId);
std::u16string GetOperatorName(int32_t slotId);
sptr<NetworkState> GetNetworkState(int32_t slotId);
bool GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback);
bool GetNetworkSearchResult(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
bool SetRadioState(int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback);
bool GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
std::u16string GetIsoCountryCodeForNetwork(int32_t slotId);
bool GetNetworkSearchProxy();
void ResetNetworkServiceServiceProxy();
private:
std::mutex mutex_;
sptr<ICoreService> radioNetworkService_;
sptr<IRemoteObject::DeathRecipient> recipient_;
};
} // namespace Telephony
} // namespace OHOS
#endif // NETWORK_SEARCH_PROXY_HOLDER_H

View File

@ -0,0 +1,29 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "network_search_service_death_recipient.h"
#include "network_search_service_proxy_holder.h"
#include "singleton.h"
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace Telephony {
void NetworkSearchServiceDeathRecipient::OnRemoteDied(const wptr<IRemoteObject> &remote)
{
TELEPHONY_LOGI("network search service died,remove the proxy object");
DelayedSingleton<NetworkSearchServiceProxyHolder>::GetInstance()->ResetNetworkServiceServiceProxy();
}
} // namespace Telephony
} // namespace OHOS

View File

@ -0,0 +1,170 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "network_search_service_proxy_holder.h"
#include "if_system_ability_manager.h"
#include "iservice_registry.h"
#include "network_search_service_death_recipient.h"
#include "system_ability_definition.h"
#include "telephony_log_wrapper.h"
#include "telephony_napi_common_error.h"
namespace OHOS {
namespace Telephony {
bool NetworkSearchServiceProxyHolder::GetNetworkSearchProxy()
{
TELEPHONY_LOGI("start");
if (!radioNetworkService_) {
std::lock_guard<std::mutex> lock(mutex_);
sptr<ISystemAbilityManager> systemAbilityManager =
SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (!systemAbilityManager) {
TELEPHONY_LOGE(" Get system ability mgr failed.");
return false;
}
sptr<IRemoteObject> remoteObject =
systemAbilityManager->GetSystemAbility(TELEPHONY_CORE_SERVICE_SYS_ABILITY_ID);
if (!remoteObject) {
TELEPHONY_LOGE("Get Telephony Core Service Failed.");
return false;
}
radioNetworkService_ = iface_cast<ICoreService>(remoteObject);
if ((!radioNetworkService_) || (!radioNetworkService_->AsObject())) {
TELEPHONY_LOGE("Get Telephony Core Proxy Failed.");
return false;
}
recipient_ = new NetworkSearchServiceDeathRecipient();
if (!recipient_) {
TELEPHONY_LOGE("Failed to create death Recipient ptr NetworkSearchServiceDeathRecipient!");
return false;
}
radioNetworkService_->AsObject()->AddDeathRecipient(recipient_);
}
return true;
}
void NetworkSearchServiceProxyHolder::ResetNetworkServiceServiceProxy()
{
TELEPHONY_LOGI("start");
std::lock_guard<std::mutex> lock(mutex_);
if ((radioNetworkService_ != nullptr) && (radioNetworkService_->AsObject() != nullptr)) {
radioNetworkService_->AsObject()->RemoveDeathRecipient(recipient_);
}
radioNetworkService_ = nullptr;
}
int32_t NetworkSearchServiceProxyHolder::GetPsRadioTech(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetPsRadioTech(slotId);
}
return ERROR_SERVICE_UNAVAILABLE;
}
int32_t NetworkSearchServiceProxyHolder::GetCsRadioTech(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetCsRadioTech(slotId);
}
return ERROR_SERVICE_UNAVAILABLE;
}
std::vector<sptr<SignalInformation>> NetworkSearchServiceProxyHolder::GetSignalInfoList(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetSignalInfoList(slotId);
}
return std::vector<sptr<SignalInformation>>();
}
std::u16string NetworkSearchServiceProxyHolder::GetOperatorNumeric(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetOperatorNumeric(slotId);
}
return u"";
}
std::u16string NetworkSearchServiceProxyHolder::GetOperatorName(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetOperatorName(slotId);
}
return u"";
}
sptr<NetworkState> NetworkSearchServiceProxyHolder::GetNetworkState(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return sptr<NetworkState>(radioNetworkService_->GetNetworkState(slotId));
}
return nullptr;
}
bool NetworkSearchServiceProxyHolder::GetNetworkSelectionMode(
int32_t slotId, const sptr<INetworkSearchCallback> &callback)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetNetworkSelectionMode(slotId, callback);
}
return false;
}
bool NetworkSearchServiceProxyHolder::SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->SetNetworkSelectionMode(
slotId, selectMode, networkInformation, resumeSelection, callback);
}
return false;
}
bool NetworkSearchServiceProxyHolder::SetRadioState(
int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->SetRadioState(slotId, isOn, callback);
}
return false;
}
bool NetworkSearchServiceProxyHolder::GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetRadioState(slotId, callback);
}
return false;
}
bool NetworkSearchServiceProxyHolder::GetNetworkSearchResult(
int32_t slotId, const sptr<INetworkSearchCallback> &callback)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetNetworkSearchResult(slotId, callback);
}
return false;
}
std::u16string NetworkSearchServiceProxyHolder::GetIsoCountryCodeForNetwork(int32_t slotId)
{
if (GetNetworkSearchProxy()) {
return radioNetworkService_->GetIsoCountryCodeForNetwork(slotId);
}
return u"";
}
} // namespace Telephony
} // namespace OHOS

File diff suppressed because it is too large Load Diff

View File

@ -15,35 +15,63 @@
#ifndef BASE_PHONE_SERVICE_PROXY_H
#define BASE_PHONE_SERVICE_PROXY_H
#include <iremote_proxy.h>
#include "i_core_service.h"
#include "telephony_errors.h"
#include "telephony_log_wrapper.h"
namespace OHOS {
namespace Telephony {
class CoreServiceProxy : public IRemoteProxy<ICoreService> {
public:
explicit CoreServiceProxy(const sptr<IRemoteObject> &impl) : IRemoteProxy<ICoreService>(impl) {}
virtual ~CoreServiceProxy() = default;
int32_t GetPsRadioTech(int32_t slotId) override;
int32_t GetCsRadioTech(int32_t slotId) override;
std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId) override;
std::u16string GetOperatorNumeric(int32_t slotId) override;
std::u16string GetOperatorName(int32_t slotId) override;
const sptr<NetworkState> GetNetworkStatus(int32_t slotId) override;
void SetHRilRadioState(int32_t slotId, bool isOn) override;
int32_t GetRadioState(int32_t slotId) override;
const sptr<NetworkState> GetNetworkState(int32_t slotId) override;
bool SetRadioState(int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback) override;
bool GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback) override;
bool HasSimCard(int32_t slotId) override;
int32_t GetSimState(int32_t slotId) override;
std::u16string GetSimOperator(int32_t slotId) override;
std::u16string GetIsoCountryCode(int32_t slotId) override;
std::u16string GetSpn(int32_t slotId) override;
std::u16string GetIccId(int32_t slotId) override;
std::u16string GetSimOperatorNumeric(int32_t slotId) override;
std::u16string GetIsoCountryCodeForSim(int32_t slotId) override;
std::u16string GetSimSpn(int32_t slotId) override;
std::u16string GetSimIccId(int32_t slotId) override;
std::u16string GetIMSI(int32_t slotId) override;
bool IsSimActive(int32_t slotId) override;
bool GetNetworkSearchResult(int32_t slotId, const sptr<INetworkSearchCallback> &callback) override;
bool GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback) override;
std::u16string GetLocaleFromDefaultSim() override;
std::u16string GetSimGid1(int32_t slotId) override;
bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> &networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback) override;
std::u16string GetIsoCountryCodeForNetwork(int32_t slotId) override;
bool GetSimAccountInfo(int32_t subId, IccAccountInfo &info) override;
bool SetDefaultVoiceSlotId(int32_t subId) override;
int32_t GetDefaultVoiceSlotId() override;
bool IsValidSimId(int32_t subId);
bool UnlockPin(std::u16string pin, LockStatusResponse &response, int32_t phoneId) override;
bool UnlockPuk(
std::u16string newPin, std::u16string puk, LockStatusResponse &response, int32_t phoneId) override;
bool AlterPin(
std::u16string newPin, std::u16string oldPin, LockStatusResponse &response, int32_t phoneId) override;
bool SetLockState(std::u16string pin, int32_t enable, LockStatusResponse &response, int32_t phoneId) override;
int32_t GetLockState(int32_t phoneId) override;
int32_t RefreshSimState(int32_t slotId) override;
private:
bool WriteInterfaceToken(MessageParcel &data);
void ProcessSignalInfo(MessageParcel &reply, std::vector<sptr<SignalInformation>> &result);
private:
static inline BrokerDelegator<CoreServiceProxy> delegator_;
std::mutex mutex_;
};
} // namespace Telephony
} // namespace OHOS
#endif // BASE_PHONE_SERVICE_PROXY_H

View File

@ -16,33 +16,57 @@
#ifndef I_BASE_PHONE_SERVICE_H
#define I_BASE_PHONE_SERVICE_H
#include <iremote_broker.h>
#include "i_network_search_callback.h"
#include "i_sim_manager.h"
#include "i_sim_state_manager.h"
#include "network_search_result.h"
#include "network_state.h"
#include "signal_information.h"
namespace OHOS {
namespace Telephony {
class ICoreService : public IRemoteBroker {
public:
virtual ~ICoreService() = default;
DECLARE_INTERFACE_DESCRIPTOR(u"ohos.telephony.ICoreService");
public:
virtual ~ICoreService() = default;
virtual int32_t GetPsRadioTech(int32_t slotId) = 0;
virtual int32_t GetCsRadioTech(int32_t slotId) = 0;
virtual std::u16string GetOperatorNumeric(int32_t slotId) = 0;
virtual std::u16string GetOperatorName(int32_t slotId) = 0;
virtual std::vector<sptr<SignalInformation>> GetSignalInfoList(int32_t slotId) = 0;
virtual const sptr<NetworkState> GetNetworkStatus(int32_t slotId) = 0;
virtual void SetHRilRadioState(int32_t slotId, bool isOn) = 0;
virtual int32_t GetRadioState(int32_t slotId) = 0;
virtual const sptr<NetworkState> GetNetworkState(int32_t slotId) = 0;
virtual bool SetRadioState(int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback) = 0;
virtual bool GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual bool HasSimCard(int32_t slotId) = 0;
virtual int32_t GetSimState(int32_t slotId) = 0;
virtual std::u16string GetSimOperator(int32_t slotId) = 0;
virtual std::u16string GetIsoCountryCode(int32_t slotId) = 0;
virtual std::u16string GetSpn(int32_t slotId) = 0;
virtual std::u16string GetIccId(int32_t slotId) = 0;
virtual bool UnlockPin(std::u16string pin, LockStatusResponse &response, int32_t phoneId) = 0;
virtual bool UnlockPuk(
std::u16string newPin, std::u16string puk, LockStatusResponse &response, int32_t phoneId) = 0;
virtual bool AlterPin(
std::u16string newPin, std::u16string oldPin, LockStatusResponse &response, int32_t phoneId) = 0;
virtual bool SetLockState(
std::u16string pin, int32_t enable, LockStatusResponse &response, int32_t phoneId) = 0;
virtual int32_t GetLockState(int32_t phoneId) = 0;
virtual std::u16string GetSimOperatorNumeric(int32_t slotId) = 0;
virtual std::u16string GetIsoCountryCodeForSim(int32_t slotId) = 0;
virtual std::u16string GetSimSpn(int32_t slotId) = 0;
virtual std::u16string GetSimIccId(int32_t slotId) = 0;
virtual std::u16string GetIMSI(int32_t slotId) = 0;
virtual bool IsSimActive(int32_t slotId) = 0;
virtual bool GetNetworkSearchResult(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual bool GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback) = 0;
virtual std::u16string GetLocaleFromDefaultSim() = 0;
virtual std::u16string GetSimGid1(int32_t slotId) = 0;
virtual bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
const sptr<NetworkInformation> &networkInformation, bool resumeSelection,
const sptr<INetworkSearchCallback> &callback) = 0;
virtual std::u16string GetIsoCountryCodeForNetwork(int32_t slotId) = 0;
virtual bool GetSimAccountInfo(int32_t subId, IccAccountInfo &info) = 0;
virtual bool SetDefaultVoiceSlotId(int32_t subId) = 0;
virtual int32_t GetDefaultVoiceSlotId() = 0;
virtual int32_t RefreshSimState(int32_t slotId) = 0;
enum {
GET_PS_RADIO_TECH = 0,
GET_CS_RADIO_TECH,
@ -56,16 +80,34 @@ public:
HAS_SIM_CARD,
GET_SIM_STATE,
GET_ISO_COUNTRY_CODE,
GET_ISO_COUNTRY_CODE_FOR_NETWORK,
GET_SPN,
GET_ICCID,
GET_IMSI,
IS_SIM_ACTIVE,
UNLOCK_PIN,
UNLOCK_PUK,
ALTER_PIN,
CHECK_PIN,
SWITCH_PIN,
GET_SIM_OPERATOR_NUMERIC,
GET_NETWORK_SEARCH_RESULT,
GET_NETWORK_SELECTION_MODE,
GET_SIM_LANGUAGE,
GET_SIM_GID1,
SET_NETWORK_SELECTION_MODE,
GET_CELL_LOCATION,
GET_SIM_ACCOUNT_INFO,
SET_DEFAULT_VOICE_SLOTID,
GET_DEFAULT_VOICE_SLOTID,
REFRESH_SIM_STATE
};
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ohos.telephony.ICoreService");
protected:
const int32_t ERROR = -1;
const int32_t MAX_SLOT = 2;
};
} // namespace Telephony
} // namespace OHOS
#endif // I_BASE_PHONE_SERVICE_H

View File

@ -0,0 +1,36 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "network_search_callback_proxy.h"
#include "telephony_errors.h"
namespace OHOS {
namespace Telephony {
NetworkSearchCallBackProxy::NetworkSearchCallBackProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<INetworkSearchCallback>(impl)
{}
int32_t NetworkSearchCallBackProxy::OnNetworkSearchCallback(
NetworkSearchCallback requestId, MessageParcel &callBackParcel)
{
MessageOption option;
MessageParcel replyParcel;
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return TELEPHONY_ERROR;
}
return remote->SendRequest(requestId, callBackParcel, replyParcel, option);
}
} // namespace Telephony
} // namespace OHOS

View File

@ -0,0 +1,35 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef OHOS_NETWORK_SEARCH_CALLBACK_PROXY_H
#define OHOS_NETWORK_SEARCH_CALLBACK_PROXY_H
#include "i_network_search_callback.h"
namespace OHOS {
namespace Telephony {
class NetworkSearchCallBackProxy : public IRemoteProxy<INetworkSearchCallback> {
public:
explicit NetworkSearchCallBackProxy(const sptr<IRemoteObject> &impl);
virtual ~NetworkSearchCallBackProxy() = default;
virtual int32_t OnNetworkSearchCallback(
NetworkSearchCallback requestId, MessageParcel &callBackParcel) override;
private:
static inline BrokerDelegator<NetworkSearchCallBackProxy> delegator_;
};
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_NETWORK_SEARCH_CALLBACK_PROXY_H

View File

@ -12,20 +12,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef I_DELIVERY_SHORT_MESSAGE_CALLBACK_H
#define I_DELIVERY_SHORT_MESSAGE_CALLBACK_H
#include "iremote_broker.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
class IDeliveryShortMessageCallback : public IRemoteBroker {
public:
virtual ~IDeliveryShortMessageCallback() = default;
enum DeliveryCallback { ON_SMS_DELIVERY_RESULT };
virtual int32_t OnSmsDeliveryResult(const std::u16string pdu) = 0;
virtual void OnSmsDeliveryResult(const std::u16string pdu) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ipc.IDeliveryShortMessageCallback");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.IDeliveryShortMessageCallback");
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -12,11 +12,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef I_SEND_SHORT_MESSAGE_CALLBACK_H
#define I_SEND_SHORT_MESSAGE_CALLBACK_H
#include "iremote_broker.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
class ISendShortMessageCallback : public IRemoteBroker {
public:
virtual ~ISendShortMessageCallback() = default;
@ -42,11 +45,11 @@ public:
enum SendCallback { ON_SMS_SEND_RESULT };
virtual int32_t OnSmsSendResult(const SmsSendResult result) = 0;
virtual void OnSmsSendResult(const SmsSendResult result) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ipc.ISendShortMessageCallback");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ISendShortMessageCallback");
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -12,21 +12,45 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SMS_SERVICE_INTERFACE_H
#define SMS_SERVICE_INTERFACE_H
#include "i_delivery_short_message_callback.h"
#include "i_send_short_message_callback.h"
#include "iremote_broker.h"
#include "short_message.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
class ISmsServiceInterface : public IRemoteBroker {
public:
enum MessageID {
TEXT_BASED_SMS_DELIVERY = 0,
SEND_SMS_TEXT_WITEOUT_SAVE,
SEND_SMS_TEXT_WITHOUT_SAVE,
DATA_BASED_SMS_DELIVERY,
SET_SMSC_ADDRESS,
GET_SMSC_ADDRESS,
ADD_SIM_MESSAGE,
DEL_SIM_MESSAGE,
UPDATE_SIM_MESSAGE,
GET_ALL_SIM_MESSAGE,
SET_CB_RANGE_CONFIG,
SET_CB_CONFIG,
SET_DEFAULT_SMS_SLOT_ID,
GET_DEFAULT_SMS_SLOT_ID,
};
/**
* @brief SimMessageStatus
* from 3GPP TS 27.005 V4.1.0 (2001-09) section 3 Parameter Definitions
*/
using SimMessageStatus = enum {
SIM_MESSAGE_STATUS_READ = 0, // 0 REC UNREAD received unread message
SIM_MESSAGE_STATUS_UNREAD = 1, // 1 REC READ received read message
SIM_MESSAGE_STATUS_SENT = 2, // 2 "STO UNSENT" stored unsent message (only applicable to SMs)
SIM_MESSAGE_STATUS_UNSENT = 3, // 3 "STO SENT" stored sent message (only applicable to SMs)
};
virtual ~ISmsServiceInterface() = default;
virtual void SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr,
const std::u16string text, const sptr<ISendShortMessageCallback> &sendCallback,
@ -35,10 +59,22 @@ public:
virtual void SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr,
uint16_t port, const uint8_t *data, uint16_t dataLen, const sptr<ISendShortMessageCallback> &sendCallback,
const sptr<IDeliveryShortMessageCallback> &deliverCallback) = 0;
virtual bool SetSmscAddr(int32_t slotId, const std::u16string &scAddr) = 0;
virtual std::u16string GetSmscAddr(int32_t slotId) = 0;
virtual bool AddSimMessage(
int32_t slotId, const std::u16string &smsc, const std::u16string &pdu, SimMessageStatus status) = 0;
virtual bool DelSimMessage(int32_t slotId, uint32_t msgIndex) = 0;
virtual bool UpdateSimMessage(int32_t slotId, uint32_t msgIndex, SimMessageStatus newStatus,
const std::u16string &pdu, const std::u16string &smsc) = 0;
virtual std::vector<ShortMessage> GetAllSimMessages(int32_t slotId) = 0;
virtual bool SetCBConfig(
int32_t slotId, bool enable, uint32_t fromMsgId, uint32_t toMsgId, uint8_t netType) = 0;
virtual bool SetDefaultSmsSlotId(int32_t slotId) = 0;
virtual int32_t GetDefaultSmsSlotId() = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ipc.ISmsServiceInterface");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ISmsServiceInterface");
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -12,23 +12,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "sms_delivery_short_message_proxy.h"
#include "message_option.h"
#include "message_parcel.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
SmsDeliveryShortMessageProxy::SmsDeliveryShortMessageProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<SMS::IDeliveryShortMessageCallback>(impl)
: IRemoteProxy<IDeliveryShortMessageCallback>(impl)
{}
int32_t SmsDeliveryShortMessageProxy::OnSmsDeliveryResult(const std::u16string pdu)
void SmsDeliveryShortMessageProxy::OnSmsDeliveryResult(const std::u16string pdu)
{
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
dataParcel.WriteString16(pdu);
Remote()->SendRequest(ON_SMS_DELIVERY_RESULT, dataParcel, replyParcel, option);
return 0;
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return;
}
} // namespace SMS
remote->SendRequest(ON_SMS_DELIVERY_RESULT, dataParcel, replyParcel, option);
}
} // namespace Telephony
} // namespace OHOS

View File

@ -12,23 +12,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SMS_DELIVERY_SHORT_MESSAGE_PROXY_H
#define SMS_DELIVERY_SHORT_MESSAGE_PROXY_H
#include "i_delivery_short_message_callback.h"
#include "iremote_object.h"
#include "iremote_proxy.h"
#ifndef EFAIL
#define EFAIL (-1)
#endif
namespace OHOS {
namespace SMS {
class SmsDeliveryShortMessageProxy : public IRemoteProxy<SMS::IDeliveryShortMessageCallback> {
namespace Telephony {
class SmsDeliveryShortMessageProxy : public IRemoteProxy<IDeliveryShortMessageCallback> {
public:
explicit SmsDeliveryShortMessageProxy(const sptr<IRemoteObject> &impl);
virtual ~SmsDeliveryShortMessageProxy() = default;
virtual int32_t OnSmsDeliveryResult(const std::u16string pdu) override;
virtual void OnSmsDeliveryResult(const std::u16string pdu) override;
protected:
private:
static inline BrokerDelegator<SmsDeliveryShortMessageProxy> delegator_;
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif

View File

@ -12,23 +12,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "sms_send_message_proxy.h"
#include "message_option.h"
#include "message_parcel.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
SmsSendMessageProxy::SmsSendMessageProxy(const sptr<IRemoteObject> &impl)
: IRemoteProxy<SMS::ISendShortMessageCallback>(impl)
: IRemoteProxy<ISendShortMessageCallback>(impl)
{}
int32_t SmsSendMessageProxy::OnSmsSendResult(const SmsSendResult result)
void SmsSendMessageProxy::OnSmsSendResult(const SmsSendResult result)
{
MessageOption option;
MessageParcel dataParcel;
MessageParcel replyParcel;
dataParcel.WriteInt32(result);
Remote()->SendRequest(ON_SMS_SEND_RESULT, dataParcel, replyParcel, option);
return 0;
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return;
}
} // namespace SMS
remote->SendRequest(ON_SMS_SEND_RESULT, dataParcel, replyParcel, option);
}
} // namespace Telephony
} // namespace OHOS

View File

@ -12,23 +12,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SMS_SEND_MESSAGE_PROXY_H
#define SMS_SEND_MESSAGE_PROXY_H
#include "i_send_short_message_callback.h"
#include "iremote_object.h"
#include "iremote_proxy.h"
#ifndef EFAIL
#define EFAIL (-1)
#endif
namespace OHOS {
namespace SMS {
class SmsSendMessageProxy : public IRemoteProxy<SMS::ISendShortMessageCallback> {
namespace Telephony {
class SmsSendMessageProxy : public IRemoteProxy<ISendShortMessageCallback> {
public:
explicit SmsSendMessageProxy(const sptr<IRemoteObject> &impl);
virtual ~SmsSendMessageProxy() = default;
int32_t OnSmsSendResult(const SmsSendResult result) override;
void OnSmsSendResult(const SmsSendResult result) override;
protected:
private:
static inline BrokerDelegator<SmsSendMessageProxy> delegator_;
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif // SEND_SHORT_MESSAGE_CALLBACK_PROXY_H

View File

@ -12,10 +12,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "sms_service_proxy.h"
#include <cstdlib>
#include "parcel.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
SmsServiceProxy::SmsServiceProxy(const sptr<IRemoteObject> &impl) : IRemoteProxy<ISmsServiceInterface>(impl) {}
void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr,
@ -24,11 +29,9 @@ void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr,
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
printf("SmsServiceProxy::RegisterCallBack SmsServiceProxy call start 1.\n");
MessageOption option(MessageOption::TF_ASYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
printf("SmsServiceProxy::RegisterCallBack write descriptor fail.\n");
return;
}
dataParcel.WriteInt32(slotId);
@ -36,17 +39,17 @@ void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr,
dataParcel.WriteString16(scAddr);
dataParcel.WriteString16(text);
if (sendCallback != nullptr) {
if (!dataParcel.WriteRemoteObject(sendCallback->AsObject().GetRefPtr())) {
printf("write sendcallback fail\r\n");
}
dataParcel.WriteRemoteObject(sendCallback->AsObject().GetRefPtr());
}
if (deliverCallback != nullptr) {
if (!dataParcel.WriteRemoteObject(deliverCallback->AsObject().GetRefPtr())) {
printf("write delivercalllback fail\r\n");
dataParcel.WriteRemoteObject(deliverCallback->AsObject().GetRefPtr());
}
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return;
}
printf("call sms service proxy\r\n");
Remote()->SendRequest(TEXT_BASED_SMS_DELIVERY, dataParcel, replyParcel, option);
remote->SendRequest(TEXT_BASED_SMS_DELIVERY, dataParcel, replyParcel, option);
};
void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr,
@ -55,10 +58,9 @@ void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr,
{
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option;
MessageOption option(MessageOption::TF_ASYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
printf("SmsServiceProxy::RegisterCallBack write descriptor fail.\n");
return;
}
dataParcel.WriteInt32(slotId);
@ -66,20 +68,203 @@ void SmsServiceProxy::SendMessage(int32_t slotId, const std::u16string desAddr,
dataParcel.WriteString16(scAddr);
dataParcel.WriteInt16(port);
if (sendCallback != nullptr) {
if (!dataParcel.WriteRemoteObject(sendCallback->AsObject().GetRefPtr())) {
printf("write sendcallback fail\r\n");
}
dataParcel.WriteRemoteObject(sendCallback->AsObject().GetRefPtr());
}
if (deliverCallback != nullptr) {
if (!dataParcel.WriteRemoteObject(deliverCallback->AsObject().GetRefPtr())) {
printf("write delivercalllback fail\r\n");
}
dataParcel.WriteRemoteObject(deliverCallback->AsObject().GetRefPtr());
}
dataParcel.WriteInt16(dataLen);
dataParcel.WriteRawData(data, dataLen);
Remote()->SendRequest(DATA_BASED_SMS_DELIVERY, dataParcel, replyParcel, option);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return;
}
remote->SendRequest(DATA_BASED_SMS_DELIVERY, dataParcel, replyParcel, option);
};
bool SmsServiceProxy::SetSmscAddr(int32_t slotId, const std::u16string &scAddr)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteString16(scAddr);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(SET_SMSC_ADDRESS, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
std::u16string SmsServiceProxy::GetSmscAddr(int32_t slotId)
{
std::u16string result;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(GET_SMSC_ADDRESS, dataParcel, replyParcel, option);
return replyParcel.ReadString16();
}
bool SmsServiceProxy::AddSimMessage(
int32_t slotId, const std::u16string &smsc, const std::u16string &pdu, SimMessageStatus status)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteString16(smsc);
dataParcel.WriteString16(pdu);
dataParcel.WriteUint32(status);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(ADD_SIM_MESSAGE, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
bool SmsServiceProxy::DelSimMessage(int32_t slotId, uint32_t msgIndex)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteUint32(msgIndex);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(DEL_SIM_MESSAGE, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
bool SmsServiceProxy::UpdateSimMessage(int32_t slotId, uint32_t msgIndex, SimMessageStatus newStatus,
const std::u16string &pdu, const std::u16string &smsc)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteUint32(msgIndex);
dataParcel.WriteUint32(newStatus);
dataParcel.WriteString16(pdu);
dataParcel.WriteString16(smsc);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(UPDATE_SIM_MESSAGE, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
std::vector<ShortMessage> SmsServiceProxy::GetAllSimMessages(int32_t slotId)
{
std::vector<ShortMessage> result;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(GET_ALL_SIM_MESSAGE, dataParcel, replyParcel, option);
int32_t resultLen = replyParcel.ReadInt32();
for (int32_t i = 0; i < resultLen; i++) {
result.emplace_back(ShortMessage::UnMarshalling(replyParcel));
}
return result;
}
bool SmsServiceProxy::SetCBConfig(
int32_t slotId, bool enable, uint32_t fromMsgId, uint32_t toMsgId, uint8_t netType)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
dataParcel.WriteBool(enable);
dataParcel.WriteUint32(fromMsgId);
dataParcel.WriteUint32(toMsgId);
dataParcel.WriteUint8(netType);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(SET_CB_CONFIG, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
bool SmsServiceProxy::SetDefaultSmsSlotId(int32_t slotId)
{
bool result = false;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
dataParcel.WriteInt32(slotId);
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(SET_DEFAULT_SMS_SLOT_ID, dataParcel, replyParcel, option);
return replyParcel.ReadBool();
}
int32_t SmsServiceProxy::GetDefaultSmsSlotId()
{
int32_t result = -1;
MessageParcel dataParcel;
MessageParcel replyParcel;
MessageOption option(MessageOption::TF_SYNC);
if (!dataParcel.WriteInterfaceToken(SmsServiceProxy::GetDescriptor())) {
return result;
}
sptr<IRemoteObject> remote = Remote();
if (remote == nullptr) {
return result;
}
remote->SendRequest(GET_DEFAULT_SMS_SLOT_ID, dataParcel, replyParcel, option);
return replyParcel.ReadInt32();
}
bool SmsServiceDeathRecipient::gotDeathRecipient_ = false;
bool SmsServiceDeathRecipient::GotDeathRecipient()
@ -95,5 +280,5 @@ void SmsServiceDeathRecipient::OnRemoteDied(const wptr<IRemoteObject> &remote)
SmsServiceDeathRecipient::SmsServiceDeathRecipient() {}
SmsServiceDeathRecipient::~SmsServiceDeathRecipient() {}
} // namespace SMS
} // namespace Telephony
} // namespace OHOS

View File

@ -12,13 +12,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SMS_SERVICE_PROXY_H
#define SMS_SERVICE_PROXY_H
#include "i_sms_service_interface.h"
#include "iremote_object.h"
#include "iremote_proxy.h"
namespace OHOS {
namespace SMS {
namespace Telephony {
class SmsServiceProxy : public IRemoteProxy<ISmsServiceInterface> {
public:
explicit SmsServiceProxy(const sptr<IRemoteObject> &impl);
@ -29,6 +33,17 @@ public:
void SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, uint16_t port,
const uint8_t *data, uint16_t dataLen, const sptr<ISendShortMessageCallback> &sendCallback,
const sptr<IDeliveryShortMessageCallback> &deliverCallback) override;
bool SetSmscAddr(int32_t slotId, const std::u16string &scAddr) override;
std::u16string GetSmscAddr(int32_t slotId) override;
bool AddSimMessage(
int32_t slotId, const std::u16string &smsc, const std::u16string &pdu, SimMessageStatus status) override;
bool DelSimMessage(int32_t slotId, uint32_t msgIndex) override;
bool UpdateSimMessage(int32_t slotId, uint32_t msgIndex, SimMessageStatus newStatus, const std::u16string &pdu,
const std::u16string &smsc) override;
std::vector<ShortMessage> GetAllSimMessages(int32_t slotId) override;
bool SetCBConfig(int32_t slotId, bool enable, uint32_t fromMsgId, uint32_t toMsgId, uint8_t netType) override;
bool SetDefaultSmsSlotId(int32_t slotId) override;
int32_t GetDefaultSmsSlotId() override;
private:
static inline BrokerDelegator<SmsServiceProxy> delegator_;
@ -42,6 +57,6 @@ public:
static bool GotDeathRecipient();
static bool gotDeathRecipient_;
};
} // namespace SMS
} // namespace Telephony
} // namespace OHOS
#endif // SMS_SERVICE_PROXY_H

View File

@ -0,0 +1,30 @@
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* 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.
*/
#ifndef STATE_REGISTRY_ERRORS_H
#define STATE_REGISTRY_ERRORS_H
#include "../../../core_service/interfaces/innerkits/common/telephony_errors.h"
namespace OHOS {
namespace Telephony {
enum {
TELEPHONY_STATE_REGISTRY_DATA_NOT_EXIST = STATE_REGISTRY_ERR_OFFSET,
TELEPHONY_STATE_UNREGISTRY_DATA_NOT_EXIST,
TELEPHONY_STATE_REGISTRY_DATA_EXIST
};
} // namespace Telephony
} // namespace OHOS
#endif // STATE_REGISTRY_ERRORS_H

View File

@ -12,66 +12,86 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef OHOS_I_TELEPHONY_STATE_NOTIFY_H
#define OHOS_I_TELEPHONY_STATE_NOTIFY_H
#include "telephony_observer_broker.h"
namespace OHOS {
namespace TelephonyState {
namespace Telephony {
class ITelephonyStateNotify : public IRemoteBroker {
public:
enum {
SIGNAL_INFO = 2,
NET_WORK_TYPE = 3,
NET_WORK_STATE = 4,
CALL_STATE = 5,
CALL_STATE_FOR_ID = 6,
ADD_OBSERVER = 7,
REMOVE_OBSERVER = 8,
CELL_INFO = 0,
CELLULAR_DATA,
SIGNAL_INFO,
NET_WORK_STATE,
CALL_STATE,
CALL_STATE_FOR_ID,
SIM_STATE,
ADD_OBSERVER,
REMOVE_OBSERVER
};
/**
* UpdateCellularDataConnectState
*
* @param simId sim data id
* @param dataState cellular data link state
* @param networkState network state
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateCellularDataConnectState(int32_t simId, int32_t dataState, int32_t networkState) = 0;
/**
* UpdateSimState
*
* @param simId sim data id
* @param state sim state
* @param reason
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateSimState(int32_t simId, int32_t state, const std::u16string &reason) = 0;
/**
* UpdateCallState
*
* @param callStatus call status
* @param number call number
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateCallState(int32_t callStatus, const std::u16string &number) = 0;
/**
* UpdateCallStateForSlotIndex
* UpdateCallStateForSimId
*
* @param simId sim data id
* @param slotIndex slot index
* @param callId call id
* @param callStatus call status
* @param number incoming number
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateCallStateForSlotIndex(
int32_t simId, int32_t slotIndex, int32_t callStatus, const std::u16string &incomingNumber) = 0;
virtual int32_t UpdateCallStateForSimId(
int32_t simId, int32_t callId, int32_t callStatus, const std::u16string &incomingNumber) = 0;
/**
* UpdateSignalInfo
*
* @param simId sim data id
* @param slotIndex slot index
* @param vec networkType search signal information
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateSignalInfo(
int32_t simId, int32_t slotIndex, const std::vector<sptr<SignalInformation>> &vec) = 0;
virtual int32_t UpdateSignalInfo(int32_t simId, const std::vector<sptr<SignalInformation>> &vec) = 0;
/**
* UpdateNetworkState
*
* @param simId sim data id
* @param slotIndex slot index
* @param networkStatus network status
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UpdateNetworkState(
int32_t simId, int32_t slotIndex, const sptr<NetworkState> &networkState) = 0;
virtual int32_t UpdateNetworkState(int32_t simId, const sptr<NetworkState> &networkState) = 0;
/**
* RegisterStateChange
@ -81,7 +101,7 @@ public:
* @param mask listening type bitmask
* @param package calling Package
* @param isUpdate Whether to update immediately
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t RegisterStateChange(const sptr<TelephonyObserverBroker> &telephonyObserver, int32_t simId,
uint32_t mask, const std::u16string &package, bool isUpdate) = 0;
@ -91,13 +111,13 @@ public:
*
* @param simId sim data id
* @param mask listening type bitmask
* @return int32_t TELEPHONY_NO_ERROR on success, others on failure.
* @return int32_t TELEPHONY_SUCCESS on success, others on failure.
*/
virtual int32_t UnregisterStateChange(int32_t simId, uint32_t mask) = 0;
public:
DECLARE_INTERFACE_DESCRIPTOR(u"ohos.ipc.ITelephonyStateNotify");
DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ITelephonyStateNotify");
};
} // namespace TelephonyState
} // namespace Telephony
} // namespace OHOS
#endif // OHOS_I_TELEPHONY_STATE_NOTIFY_H

Some files were not shown because too many files have changed in this diff Show More