19823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
29823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Copyright (C) 2017 The Android Open Source Project
39823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq *
49823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Licensed under the Apache License, Version 2.0 (the "License");
59823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * you may not use this file except in compliance with the License.
69823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * You may obtain a copy of the License at
79823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq *
89823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq *      http://www.apache.org/licenses/LICENSE-2.0
99823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq *
109823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Unless required by applicable law or agreed to in writing, software
119823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * distributed under the License is distributed on an "AS IS" BASIS,
129823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * See the License for the specific language governing permissions and
149823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * limitations under the License.
159823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
169823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
1787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma#include <sap_hidl_hal_utils.h>
189823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
199823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
209823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test ISap.connectReq() for the response returned.
219823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
229823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, connectReq) {
23fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
24fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t maxMsgSize = 100;
259823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
26fcc61188827e1472965b36041c29b80cbe4079basqian    sap->connectReq(token, maxMsgSize);
27fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
28fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
299823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
309823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
319823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
329823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.disconnectReq() for the response returned
339823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
349823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, disconnectReq) {
35fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
369823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
37fcc61188827e1472965b36041c29b80cbe4079basqian    sap->disconnectReq(token);
38fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
39fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
409823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
419823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
429823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
439823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.apduReq() for the response returned.
449823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
459823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, apduReq) {
46fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
47fcc61188827e1472965b36041c29b80cbe4079basqian    SapApduType sapApduType = SapApduType::APDU;
48fcc61188827e1472965b36041c29b80cbe4079basqian    android::hardware::hidl_vec<uint8_t> command = {};
49fcc61188827e1472965b36041c29b80cbe4079basqian
50fcc61188827e1472965b36041c29b80cbe4079basqian    sap->apduReq(token, sapApduType, command);
51fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
52fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
53fcc61188827e1472965b36041c29b80cbe4079basqian
54fcc61188827e1472965b36041c29b80cbe4079basqian    ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
55fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
56fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
57fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_REMOVED == sapCb->sapResultCode);
589823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
599823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
609823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
619823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.transferAtrReq() for the response returned.
629823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
639823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, transferAtrReq) {
64fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
659823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
66fcc61188827e1472965b36041c29b80cbe4079basqian    sap->transferAtrReq(token);
67fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
68fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
699823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
70fcc61188827e1472965b36041c29b80cbe4079basqian    ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
71fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode ||
72fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
73fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_REMOVED == sapCb->sapResultCode);
749823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
759823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
769823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
779823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.powerReq() for the response returned.
789823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
799823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, powerReq) {
80fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
81fcc61188827e1472965b36041c29b80cbe4079basqian    bool state = true;
82fcc61188827e1472965b36041c29b80cbe4079basqian
83fcc61188827e1472965b36041c29b80cbe4079basqian    sap->powerReq(token, state);
84fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
85fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
86fcc61188827e1472965b36041c29b80cbe4079basqian
87fcc61188827e1472965b36041c29b80cbe4079basqian    ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
88fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
89fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
90fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_REMOVED == sapCb->sapResultCode ||
91fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_ALREADY_POWERED_ON == sapCb->sapResultCode);
929823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
939823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
949823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
959823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.resetSimReq() for the response returned.
969823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
979823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, resetSimReq) {
98fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
999823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
100fcc61188827e1472965b36041c29b80cbe4079basqian    sap->resetSimReq(token);
101fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
102fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
1039823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
104fcc61188827e1472965b36041c29b80cbe4079basqian    ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
105fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
106fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
107fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::CARD_REMOVED == sapCb->sapResultCode);
1089823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
1099823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
1109823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
1119823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.transferCardReaderStatusReq() for the response returned.
1129823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
1139823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, transferCardReaderStatusReq) {
114fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
1159823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
116fcc61188827e1472965b36041c29b80cbe4079basqian    sap->transferCardReaderStatusReq(token);
117fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
118fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
1199823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
120fcc61188827e1472965b36041c29b80cbe4079basqian    ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
121fcc61188827e1472965b36041c29b80cbe4079basqian                SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode);
1229823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
1239823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
1249823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/*
1259823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Test IRadio.setTransferProtocolReq() for the response returned.
1269823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */
1279823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqTEST_F(SapHidlTest, setTransferProtocolReq) {
128fcc61188827e1472965b36041c29b80cbe4079basqian    int32_t token = GetRandomSerialNumber();
129fcc61188827e1472965b36041c29b80cbe4079basqian    SapTransferProtocol sapTransferProtocol = SapTransferProtocol::T0;
1309823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
131fcc61188827e1472965b36041c29b80cbe4079basqian    sap->setTransferProtocolReq(token, sapTransferProtocol);
132fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
133fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(sapCb->sapResponseToken, token);
1349823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq
135fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(SapResultCode::NOT_SUPPORTED, sapCb->sapResultCode);
1369823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq}
137