1 /*
2 * Copyright (c) 2022 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 "socperf_ipc_interface_code.h"
17 #include "socperf_stub.h"
18 #include <cstdint> // for int32_t
19 #include <iosfwd> // for string
20 #include <string> // for basic_string, operator!=, u16string
21 #include <vector> // for vector
22
23 namespace OHOS {
24 namespace SOCPERF {
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)25 int32_t SocPerfStub::OnRemoteRequest(uint32_t code, MessageParcel &data,
26 MessageParcel &reply, MessageOption &option)
27 {
28 auto remoteDescriptor = data.ReadInterfaceToken();
29 if (GetDescriptor() != remoteDescriptor) {
30 return ERR_INVALID_STATE;
31 }
32 switch (code) {
33 case static_cast<uint32_t>(SocPerfInterfaceCode::TRANS_IPC_ID_PERF_REQUEST): {
34 int32_t cmdId = data.ReadInt32();
35 std::string msg = data.ReadString();
36 PerfRequest(cmdId, msg);
37 break;
38 }
39 case static_cast<uint32_t>(SocPerfInterfaceCode::TRANS_IPC_ID_PERF_REQUEST_EX): {
40 int32_t cmdId = data.ReadInt32();
41 bool onOffTag = data.ReadBool();
42 std::string msg = data.ReadString();
43 PerfRequestEx(cmdId, onOffTag, msg);
44 break;
45 }
46 case static_cast<uint32_t>(SocPerfInterfaceCode::TRANS_IPC_ID_POWER_LIMIT_BOOST_FREQ): {
47 bool onOffTag = data.ReadBool();
48 std::string msg = data.ReadString();
49 PowerLimitBoost(onOffTag, msg);
50 break;
51 }
52 case static_cast<uint32_t>(SocPerfInterfaceCode::TRANS_IPC_ID_THERMAL_LIMIT_BOOST_FREQ): {
53 bool onOffTag = data.ReadBool();
54 std::string msg = data.ReadString();
55 ThermalLimitBoost(onOffTag, msg);
56 break;
57 }
58 case static_cast<uint32_t>(SocPerfInterfaceCode::TRANS_IPC_ID_LIMIT_REQUEST): {
59 int32_t clientId = data.ReadInt32();
60 std::vector<int32_t> tags;
61 data.ReadInt32Vector(&tags);
62 std::vector<int64_t> configs;
63 data.ReadInt64Vector(&configs);
64 std::string msg = data.ReadString();
65 LimitRequest(clientId, tags, configs, msg);
66 break;
67 }
68 default:
69 return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
70 }
71 return ERR_OK;
72 }
73 } // namespace SOCPERF
74 } // namespace OHOS
75