1d5a2a63bSopenharmony_ci/* 2d5a2a63bSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3d5a2a63bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d5a2a63bSopenharmony_ci * you may not use this file except in compliance with the License. 5d5a2a63bSopenharmony_ci * You may obtain a copy of the License at 6d5a2a63bSopenharmony_ci * 7d5a2a63bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d5a2a63bSopenharmony_ci * 9d5a2a63bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d5a2a63bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d5a2a63bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d5a2a63bSopenharmony_ci * See the License for the specific language governing permissions and 13d5a2a63bSopenharmony_ci * limitations under the License. 14d5a2a63bSopenharmony_ci */ 15d5a2a63bSopenharmony_ci#include <ohos_errno.h> 16d5a2a63bSopenharmony_ci#include <ohos_init.h> 17d5a2a63bSopenharmony_ci#include "audio_capturer_server.h" 18d5a2a63bSopenharmony_ci#include "feature.h" 19d5a2a63bSopenharmony_ci#include "iproxy_server.h" 20d5a2a63bSopenharmony_ci#include "media_log.h" 21d5a2a63bSopenharmony_ci#include "samgr_lite.h" 22d5a2a63bSopenharmony_ci#include "service.h" 23d5a2a63bSopenharmony_ci 24d5a2a63bSopenharmony_cinamespace OHOS { 25d5a2a63bSopenharmony_cinamespace Audio { 26d5a2a63bSopenharmony_cistruct DefaultFeatureApi { 27d5a2a63bSopenharmony_ci INHERIT_SERVER_IPROXY; 28d5a2a63bSopenharmony_ci}; 29d5a2a63bSopenharmony_ci 30d5a2a63bSopenharmony_cistruct AudioCapturerService { 31d5a2a63bSopenharmony_ci INHERIT_SERVICE; 32d5a2a63bSopenharmony_ci INHERIT_IUNKNOWNENTRY(DefaultFeatureApi); 33d5a2a63bSopenharmony_ci Identity identity; 34d5a2a63bSopenharmony_ci}; 35d5a2a63bSopenharmony_ci 36d5a2a63bSopenharmony_cistatic const char *GetName(Service *service) 37d5a2a63bSopenharmony_ci{ 38d5a2a63bSopenharmony_ci (void)service; 39d5a2a63bSopenharmony_ci return AUDIO_CAPTURER_SERVICE_NAME; 40d5a2a63bSopenharmony_ci} 41d5a2a63bSopenharmony_ci 42d5a2a63bSopenharmony_cistatic BOOL Initialize(Service *service, Identity identity) 43d5a2a63bSopenharmony_ci{ 44d5a2a63bSopenharmony_ci if (service == nullptr) { 45d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("Initialize: service is nullptr"); 46d5a2a63bSopenharmony_ci return FALSE; 47d5a2a63bSopenharmony_ci } 48d5a2a63bSopenharmony_ci 49d5a2a63bSopenharmony_ci AudioCapturerService *capturerSvc = reinterpret_cast<AudioCapturerService*>(service); 50d5a2a63bSopenharmony_ci capturerSvc->identity = identity; 51d5a2a63bSopenharmony_ci MEDIA_DEBUG_LOG("Initialize(%s)! Identity<%d, %d>", 52d5a2a63bSopenharmony_ci AUDIO_CAPTURER_SERVICE_NAME, identity.serviceId, 53d5a2a63bSopenharmony_ci identity.featureId); 54d5a2a63bSopenharmony_ci return TRUE; 55d5a2a63bSopenharmony_ci} 56d5a2a63bSopenharmony_ci 57d5a2a63bSopenharmony_cistatic BOOL MessageHandle(Service *service, Request *msg) 58d5a2a63bSopenharmony_ci{ 59d5a2a63bSopenharmony_ci if (service == nullptr || msg == nullptr) { 60d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("MessageHandle: service or msg is nullptr"); 61d5a2a63bSopenharmony_ci return FALSE; 62d5a2a63bSopenharmony_ci } 63d5a2a63bSopenharmony_ci 64d5a2a63bSopenharmony_ci MEDIA_DEBUG_LOG("MessageHandle(%s)! Request<%d, %d>", service->GetName(service), 65d5a2a63bSopenharmony_ci msg->msgId, msg->msgValue); 66d5a2a63bSopenharmony_ci return FALSE; 67d5a2a63bSopenharmony_ci} 68d5a2a63bSopenharmony_ci 69d5a2a63bSopenharmony_cistatic TaskConfig GetTaskConfig(Service *service) 70d5a2a63bSopenharmony_ci{ 71d5a2a63bSopenharmony_ci (void)service; 72d5a2a63bSopenharmony_ci TaskConfig config = {LEVEL_HIGH, PRI_BELOW_NORMAL, 0x800, 20, SHARED_TASK}; 73d5a2a63bSopenharmony_ci return config; 74d5a2a63bSopenharmony_ci} 75d5a2a63bSopenharmony_ci 76d5a2a63bSopenharmony_cistatic int32 Invoke(IServerProxy *iProxy, int funcId, void *origin, IpcIo *req, IpcIo *reply) 77d5a2a63bSopenharmony_ci{ 78d5a2a63bSopenharmony_ci if (origin == nullptr) { 79d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("Invoke: origin is nullptr"); 80d5a2a63bSopenharmony_ci return FALSE; 81d5a2a63bSopenharmony_ci } 82d5a2a63bSopenharmony_ci 83d5a2a63bSopenharmony_ci pid_t pid = GetCallingPid(); 84d5a2a63bSopenharmony_ci AudioCapturerServer *mng = AudioCapturerServer::GetInstance(); 85d5a2a63bSopenharmony_ci if (mng == nullptr) { 86d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("Invoke failed, mng is nullptr"); 87d5a2a63bSopenharmony_ci return FALSE; 88d5a2a63bSopenharmony_ci } 89d5a2a63bSopenharmony_ci 90d5a2a63bSopenharmony_ci mng->Dispatch(funcId, pid, req, reply); 91d5a2a63bSopenharmony_ci return EC_SUCCESS; 92d5a2a63bSopenharmony_ci} 93d5a2a63bSopenharmony_ci 94d5a2a63bSopenharmony_civoid AudioCapturerServiceReg() 95d5a2a63bSopenharmony_ci{ 96d5a2a63bSopenharmony_ci static AudioCapturerService audioCapturerSvc = { 97d5a2a63bSopenharmony_ci .GetName = GetName, 98d5a2a63bSopenharmony_ci .Initialize = Initialize, 99d5a2a63bSopenharmony_ci .MessageHandle = MessageHandle, 100d5a2a63bSopenharmony_ci .GetTaskConfig = GetTaskConfig, 101d5a2a63bSopenharmony_ci SERVER_IPROXY_IMPL_BEGIN, 102d5a2a63bSopenharmony_ci .Invoke = Invoke, 103d5a2a63bSopenharmony_ci IPROXY_END, 104d5a2a63bSopenharmony_ci }; 105d5a2a63bSopenharmony_ci MEDIA_INFO_LOG("Input AudioCapturerServiceReg"); 106d5a2a63bSopenharmony_ci bool ret = SAMGR_GetInstance()->RegisterService(reinterpret_cast<Service*>(&audioCapturerSvc)); 107d5a2a63bSopenharmony_ci if (!ret) { 108d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("AudioCapturer register service failed."); 109d5a2a63bSopenharmony_ci return; 110d5a2a63bSopenharmony_ci } 111d5a2a63bSopenharmony_ci ret = SAMGR_GetInstance()->RegisterDefaultFeatureApi(AUDIO_CAPTURER_SERVICE_NAME, GET_IUNKNOWN(audioCapturerSvc)); 112d5a2a63bSopenharmony_ci if (!ret) { 113d5a2a63bSopenharmony_ci MEDIA_ERR_LOG("AudioCapturer register feature failed."); 114d5a2a63bSopenharmony_ci return; 115d5a2a63bSopenharmony_ci } 116d5a2a63bSopenharmony_ci} 117d5a2a63bSopenharmony_ci} // namespace Audio 118d5a2a63bSopenharmony_ci} // namespace OHOS 119