1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "listen_ability.h"
17
18 #include "hilog/log.h"
19 #include "iremote_object.h"
20 #include "if_system_ability_manager.h"
21 #include "iservice_registry.h"
22
23 using namespace OHOS::HiviewDFX;
24
25 namespace OHOS {
26
27 static const int TEST_THREE = 3;
28 static const int TEST_FOUR = 4;
29 static const int TEST_SEVEN = 7;
30 static const int TEST_TEN = 10;
31 static const int TEST_NNN = 999;
32
33 REGISTER_SYSTEM_ABILITY_BY_ID(ListenAbility, 1494, true);
34
ListenAbility(int32_t saId,bool runOnCreate)35 ListenAbility::ListenAbility(int32_t saId, bool runOnCreate) : SystemAbility(saId, runOnCreate)
36 {
37 HiLog::Info(LABEL, "ListenAbility()");
38 }
39
~ListenAbility()40 ListenAbility::~ListenAbility()
41 {
42 HiLog::Info(LABEL, "~ListenAbility()");
43 }
44
AddVolume(int32_t volume)45 ErrCode ListenAbility::AddVolume(int32_t volume)
46 {
47 HiLog::Info(LABEL, "[idlTest] AddVolume service, volume: %{public}d", volume);
48 return volume + 1;
49 }
50
TestSaCallSa(int32_t input,double & output)51 ErrCode ListenAbility::TestSaCallSa(int32_t input, double &output)
52 {
53 HiLog::Info(LABEL, "[idlTest] TestSaCallSa service, input: %{public}d, output: %{public}lf", input, output);
54 return ERR_OK;
55 }
56
TestGetIpcSendRequestTimes(int32_t & times)57 ErrCode ListenAbility::TestGetIpcSendRequestTimes(int32_t ×)
58 {
59 times = 1;
60 HiLog::Info(LABEL, "[idlTest] TestGetIpcSendRequestTimes service");
61 return ERR_OK;
62 }
63
overloadfun(int32_t & outParam)64 ErrCode ListenAbility::overloadfun(int32_t& outParam)
65 {
66 outParam = TEST_TEN;
67 HiLog::Info(LABEL, "[idlTest] overloadfunone service");
68 return ERR_OK;
69 }
70
71 #ifdef DEVICE
overloadfun(std::unordered_map<int32_t,int32_t> & outParam)72 ErrCode ListenAbility::overloadfun(std::unordered_map<int32_t, int32_t>& outParam)
73 {
74 outParam[TEST_FOUR] = TEST_SEVEN;
75 HiLog::Info(LABEL, "[idlTest] overloadfuntwo service");
76 return ERR_OK;
77 }
78 #endif
79
enum_test_func(FooEnum inParam,FooEnum & outParam,FooEnum & inoutParam,FooEnum & funcResult)80 ErrCode ListenAbility::enum_test_func(FooEnum inParam, FooEnum& outParam, FooEnum& inoutParam, FooEnum& funcResult)
81 {
82 outParam = FooEnum::ENUM_TWO;
83 HiLog::Info(IFOOCUSTOM_LABEL, "[idlTest] enum_test_func service said: %{public}d", static_cast<int>(inParam));
84 return ERR_OK;
85 }
86
struct_test_func(const FooStruct & inParam,RequestInfo & outParam,FooStruct & inoutParam,FooStruct & funcResult)87 ErrCode ListenAbility::struct_test_func(
88 const FooStruct& inParam,
89 RequestInfo& outParam,
90 FooStruct& inoutParam,
91 FooStruct& funcResult)
92 {
93 outParam.initData.push_back(TEST_THREE);
94 HiLog::Info(IFOOCUSTOM_LABEL, "[idlTest] struct_test_func service, said: %{public}s", inParam.name.c_str());
95 return ERR_OK;
96 }
97
union_test_func(const FooUnion & inParam,FooUnion & outParam,FooUnion & inoutParam,FooUnion & funcResult)98 ErrCode ListenAbility::union_test_func(
99 const FooUnion& inParam,
100 FooUnion& outParam,
101 FooUnion& inoutParam,
102 FooUnion& funcResult)
103 {
104 outParam.enumType = FooEnum::ENUM_TWO;
105 HiLog::Info(IFOOCUSTOM_LABEL, "[idlTest] union_test_func service, said: %{public}d",
106 static_cast<int>(inParam.enumType));
107 return ERR_OK;
108 }
109
ApplyQuickFix(const std::vector<std::string> & quickFixFiles,bool isDebug)110 ErrCode ListenAbility::ApplyQuickFix(const std::vector<std::string>& quickFixFiles, bool isDebug)
111 {
112 std::string debugTrue;
113 if (isDebug) {
114 debugTrue = "true";
115 }
116 HiLog::Info(LABEL, "[idlTest] ApplyQuickFix service, said: %{public}s", debugTrue.c_str());
117 return ERR_OK;
118 }
119
GetAllAppSuspendState(const std::unordered_map<int32_t,FooStruct> & inApp,std::unordered_map<int32_t,FooStruct> & outApp)120 ErrCode ListenAbility::GetAllAppSuspendState(
121 const std::unordered_map<int32_t, FooStruct>& inApp,
122 std::unordered_map<int32_t, FooStruct>& outApp)
123 {
124 outApp[1].id = TEST_NNN;
125 outApp[1].name = "MapTest";
126 HiLog::Info(LABEL, "[idlTest] GetAllAppSuspendState service,said: %{public}d, %{public}s",
127 inApp.at(0).id, inApp.at(0).name.c_str());
128 return ERR_OK;
129 }
130
rawdata_test_func(const MyRawdata & inParam,MyRawdata & outParam,MyRawdata & inoutParam,MyRawdata & funcResult)131 ErrCode ListenAbility::rawdata_test_func(
132 const MyRawdata& inParam,
133 MyRawdata& outParam,
134 MyRawdata& inoutParam,
135 MyRawdata& funcResult)
136 {
137 const char sampleData[] = "Hello, world!";
138 const char sampleData2[] = "world!";
139 outParam.data = sampleData;
140 outParam.size = sizeof(sampleData);
141 HiLog::Info(LABEL, "[idlTest] inout rawdata service, said: %{public}u, %{public}s",
142 inoutParam.size, static_cast<const char*>(inoutParam.data));
143 inoutParam.data = sampleData2;
144 inoutParam.size = sizeof(sampleData2);
145 funcResult.data = sampleData2;
146 funcResult.size = sizeof(sampleData2);
147 HiLog::Info(LABEL, "[idlTest] in rawdata service, said: %{public}u, %{public}s",
148 inParam.size, static_cast<const char*>(inParam.data));
149 return ERR_OK;
150 }
151
OnStart()152 void ListenAbility::OnStart()
153 {
154 HiLog::Info(LABEL, "[idlTest] OnStart() service");
155 bool res = Publish(this);
156 if (!res) {
157 HiLog::Info(LABEL, "[idlTest] OnStart service Publish failed");
158 return;
159 }
160 HiLog::Info(LABEL, "[idlTest] ListenAbility service begin");
161 }
162
OnAddSystemAbility(int32_t systemAbilityId,const std::string & deviceId)163 void ListenAbility::OnAddSystemAbility(int32_t systemAbilityId, const std::string &deviceId)
164 {
165 HiLog::Info(LABEL, "[idlTest] OnAddSystemAbility service begin, said: %{public}d", systemAbilityId);
166 }
167
OnRemoveSystemAbility(int32_t systemAbilityId,const std::string & deviceId)168 void ListenAbility::OnRemoveSystemAbility(int32_t systemAbilityId, const std::string &deviceId)
169 {
170 HiLog::Info(LABEL, "[idlTest] OnRemoveSystemAbility service begin, said: %{public}d", systemAbilityId);
171 }
172
173 }