1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#include "se_impl.h"
17094332d3Sopenharmony_ci#include <hdf_base.h>
18094332d3Sopenharmony_ci#include <hdf_log.h>
19094332d3Sopenharmony_ci#include <vector>
20094332d3Sopenharmony_ci
21094332d3Sopenharmony_ci#define HDF_LOG_TAG hdf_se
22094332d3Sopenharmony_ci
23094332d3Sopenharmony_ci#ifdef LOG_DOMAIN
24094332d3Sopenharmony_ci#undef LOG_DOMAIN
25094332d3Sopenharmony_ci#endif
26094332d3Sopenharmony_ci
27094332d3Sopenharmony_ci#define LOG_DOMAIN 0xD000305
28094332d3Sopenharmony_ci
29094332d3Sopenharmony_cinamespace OHOS {
30094332d3Sopenharmony_cinamespace HDI {
31094332d3Sopenharmony_cinamespace SecureElement {
32094332d3Sopenharmony_ci
33094332d3Sopenharmony_ciextern "C" ISecureElementInterface *SecureElementInterfaceImplGetInstance(void)
34094332d3Sopenharmony_ci{
35094332d3Sopenharmony_ci    using OHOS::HDI::SecureElement::SeImpl;
36094332d3Sopenharmony_ci    SeImpl* service = new (std::nothrow) SeImpl();
37094332d3Sopenharmony_ci    if (service == nullptr) {
38094332d3Sopenharmony_ci        return nullptr;
39094332d3Sopenharmony_ci    }
40094332d3Sopenharmony_ci    return service;
41094332d3Sopenharmony_ci}
42094332d3Sopenharmony_ci
43094332d3Sopenharmony_ciint32_t SeImpl::init(const sptr<ISecureElementCallback>& clientCallback, SecureElementStatus& status)
44094332d3Sopenharmony_ci{
45094332d3Sopenharmony_ci    return adaptor_.init(clientCallback, status);
46094332d3Sopenharmony_ci}
47094332d3Sopenharmony_ci
48094332d3Sopenharmony_ciint32_t SeImpl::getAtr(std::vector<uint8_t>& response)
49094332d3Sopenharmony_ci{
50094332d3Sopenharmony_ci    return adaptor_.getAtr(response);
51094332d3Sopenharmony_ci}
52094332d3Sopenharmony_ci
53094332d3Sopenharmony_ciint32_t SeImpl::isSecureElementPresent(bool& present)
54094332d3Sopenharmony_ci{
55094332d3Sopenharmony_ci    return adaptor_.isSecureElementPresent(present);
56094332d3Sopenharmony_ci}
57094332d3Sopenharmony_ci
58094332d3Sopenharmony_ciint32_t SeImpl::openLogicalChannel(const std::vector<uint8_t>& aid, uint8_t p2, std::vector<uint8_t>& response,
59094332d3Sopenharmony_ci    uint8_t& channelNumber, SecureElementStatus& status)
60094332d3Sopenharmony_ci{
61094332d3Sopenharmony_ci    return adaptor_.openLogicalChannel(aid, p2, response, channelNumber, status);
62094332d3Sopenharmony_ci}
63094332d3Sopenharmony_ci
64094332d3Sopenharmony_ciint32_t SeImpl::openBasicChannel(const std::vector<uint8_t>& aid, uint8_t p2, std::vector<uint8_t>& response,
65094332d3Sopenharmony_ci    SecureElementStatus& status)
66094332d3Sopenharmony_ci{
67094332d3Sopenharmony_ci    return adaptor_.openBasicChannel(aid, p2, response, status);
68094332d3Sopenharmony_ci}
69094332d3Sopenharmony_ci
70094332d3Sopenharmony_ciint32_t SeImpl::closeChannel(uint8_t channelNumber, SecureElementStatus& status)
71094332d3Sopenharmony_ci{
72094332d3Sopenharmony_ci    return adaptor_.closeChannel(channelNumber, status);
73094332d3Sopenharmony_ci}
74094332d3Sopenharmony_ci
75094332d3Sopenharmony_ciint32_t SeImpl::transmit(const std::vector<uint8_t>& command, std::vector<uint8_t>& response,
76094332d3Sopenharmony_ci    SecureElementStatus& status)
77094332d3Sopenharmony_ci{
78094332d3Sopenharmony_ci    return adaptor_.transmit(command, response, status);
79094332d3Sopenharmony_ci}
80094332d3Sopenharmony_ci
81094332d3Sopenharmony_ciint32_t SeImpl::reset(SecureElementStatus& status)
82094332d3Sopenharmony_ci{
83094332d3Sopenharmony_ci    return adaptor_.reset(status);
84094332d3Sopenharmony_ci}
85094332d3Sopenharmony_ci} // SecureElement
86094332d3Sopenharmony_ci} // HDI
87094332d3Sopenharmony_ci} // OHOS
88