1064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
2064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Copyright (C) 2017 The Android Open Source Project
3064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
4064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Licensed under the Apache License, Version 2.0 (the "License");
5064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * you may not use this file except in compliance with the License.
6064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * You may obtain a copy of the License at
7064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
8064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *      http://www.apache.org/licenses/LICENSE-2.0
9064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
10064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Unless required by applicable law or agreed to in writing, software
11064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * distributed under the License is distributed on an "AS IS" BASIS,
12064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * See the License for the specific language governing permissions and
14064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * limitations under the License.
15064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
16064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
170c74fc78392703e19ba51ce0ced510a55a0a994bsqian#include <radio_hidl_hal_utils_v1_0.h>
18064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
19064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoqusing namespace ::android::hardware::radio::V1_0;
20064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
21064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
22064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSms() for the response returned.
23064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
24064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSms) {
25788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
26fcc61188827e1472965b36041c29b80cbe4079basqian    GsmSmsMessage msg;
27fcc61188827e1472965b36041c29b80cbe4079basqian    msg.smscPdu = "";
28fcc61188827e1472965b36041c29b80cbe4079basqian    msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
29fcc61188827e1472965b36041c29b80cbe4079basqian
30fcc61188827e1472965b36041c29b80cbe4079basqian    radio->sendSms(serial, msg);
31fcc61188827e1472965b36041c29b80cbe4079basqian
32788eb8083059ff0dca686734ceebf942042c4893sqian    EXPECT_EQ(std::cv_status::no_timeout, wait(300));
33fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
34fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
35fcc61188827e1472965b36041c29b80cbe4079basqian
36fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
37e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
38e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
39e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
40e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
41fcc61188827e1472965b36041c29b80cbe4079basqian        EXPECT_EQ(0, radioRsp->sendSmsResult.errorCode);
42fcc61188827e1472965b36041c29b80cbe4079basqian    }
43064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
44064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
45064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
46064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSMSExpectMore() for the response returned.
47064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
48064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSMSExpectMore) {
49788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
50fcc61188827e1472965b36041c29b80cbe4079basqian    GsmSmsMessage msg;
51fcc61188827e1472965b36041c29b80cbe4079basqian    msg.smscPdu = "";
52fcc61188827e1472965b36041c29b80cbe4079basqian    msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
5387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
54fcc61188827e1472965b36041c29b80cbe4079basqian    radio->sendSMSExpectMore(serial, msg);
5587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
56fcc61188827e1472965b36041c29b80cbe4079basqian    // TODO(shuoq): add more test for this API when inserted sim card is
57fcc61188827e1472965b36041c29b80cbe4079basqian    // considered
5887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
59788eb8083059ff0dca686734ceebf942042c4893sqian    EXPECT_EQ(std::cv_status::no_timeout, wait(300));
60fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
61fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
6287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
63fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
64e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
65e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
66e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
67e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
68fcc61188827e1472965b36041c29b80cbe4079basqian    }
69064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
70064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
71064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
72064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingGsmSms() for the response returned.
73064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
74064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingGsmSms) {
75788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
76fcc61188827e1472965b36041c29b80cbe4079basqian    bool success = true;
77064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
78fcc61188827e1472965b36041c29b80cbe4079basqian    radio->acknowledgeLastIncomingGsmSms(serial, success,
79fcc61188827e1472965b36041c29b80cbe4079basqian                                         SmsAcknowledgeFailCause::MEMORY_CAPACITY_EXCEEDED);
80064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
81fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
82fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
83fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
84064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
85fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
86e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp->rspInfo.error,
87e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE},
88e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     CHECK_GENERAL_ERROR));
89fcc61188827e1472965b36041c29b80cbe4079basqian    }
90064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
91064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
92064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
93064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeIncomingGsmSmsWithPdu() for the response returned.
94064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
95064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeIncomingGsmSmsWithPdu) {
96788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
97fcc61188827e1472965b36041c29b80cbe4079basqian    bool success = true;
98fcc61188827e1472965b36041c29b80cbe4079basqian    std::string ackPdu = "";
99064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
100fcc61188827e1472965b36041c29b80cbe4079basqian    radio->acknowledgeIncomingGsmSmsWithPdu(serial, success, ackPdu);
101064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
102fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
103fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
104fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
105064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
106fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
107fcc61188827e1472965b36041c29b80cbe4079basqian        // TODO(shuoq): Will add error check when we know the expected error from QC
108fcc61188827e1472965b36041c29b80cbe4079basqian    }
109064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
110064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
111064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
112064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendCdmaSms() for the response returned.
113064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
114064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendCdmaSms) {
115788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
116fcc61188827e1472965b36041c29b80cbe4079basqian
117fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsAddress
118fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsAddress cdmaSmsAddress;
119fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
120fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
121fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
122fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
123fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
124fcc61188827e1472965b36041c29b80cbe4079basqian
125fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsSubAddress
126fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsSubaddress cdmaSmsSubaddress;
127fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
128fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.odd = false;
129fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
130fcc61188827e1472965b36041c29b80cbe4079basqian
131fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsMessage
132fcc61188827e1472965b36041c29b80cbe4079basqian    android::hardware::radio::V1_0::CdmaSmsMessage cdmaSmsMessage;
133fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.teleserviceId = 4098;
134fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.isServicePresent = false;
135fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.serviceCategory = 0;
136fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.address = cdmaSmsAddress;
137fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
138fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.bearerData =
139fcc61188827e1472965b36041c29b80cbe4079basqian        (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
140fcc61188827e1472965b36041c29b80cbe4079basqian
141fcc61188827e1472965b36041c29b80cbe4079basqian    radio->sendCdmaSms(serial, cdmaSmsMessage);
142fcc61188827e1472965b36041c29b80cbe4079basqian
143fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
144fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
145fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
146fcc61188827e1472965b36041c29b80cbe4079basqian
147fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
148e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
149e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
150e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
151e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
152fcc61188827e1472965b36041c29b80cbe4079basqian    }
153064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
154064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
155064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
156064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingCdmaSms() for the response returned.
157064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
158064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingCdmaSms) {
159788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
160064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
161fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsAck
162fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsAck cdmaSmsAck;
163fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAck.errorClass = CdmaSmsErrorClass::NO_ERROR;
164fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAck.smsCauseCode = 1;
165064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
166fcc61188827e1472965b36041c29b80cbe4079basqian    radio->acknowledgeLastIncomingCdmaSms(serial, cdmaSmsAck);
167064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
168fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
169fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
170fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
171064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
172fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
173e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp->rspInfo.error,
174e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     {RadioError::INVALID_ARGUMENTS, RadioError::NO_SMS_TO_ACK},
175e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     CHECK_GENERAL_ERROR));
176fcc61188827e1472965b36041c29b80cbe4079basqian    }
177064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
178064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
179064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
180064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendImsSms() for the response returned.
181064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
182064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendImsSms) {
183788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
184fcc61188827e1472965b36041c29b80cbe4079basqian
185fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsAddress
186fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsAddress cdmaSmsAddress;
187fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
188fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
189fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
190fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
191fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
192fcc61188827e1472965b36041c29b80cbe4079basqian
193fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsSubAddress
194fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsSubaddress cdmaSmsSubaddress;
195fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
196fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.odd = false;
197fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
198fcc61188827e1472965b36041c29b80cbe4079basqian
199fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsMessage
200fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsMessage cdmaSmsMessage;
201fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.teleserviceId = 4098;
202fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.isServicePresent = false;
203fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.serviceCategory = 0;
204fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.address = cdmaSmsAddress;
205fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
206fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.bearerData =
207fcc61188827e1472965b36041c29b80cbe4079basqian        (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
208fcc61188827e1472965b36041c29b80cbe4079basqian
209fcc61188827e1472965b36041c29b80cbe4079basqian    // Creata an ImsSmsMessage
210fcc61188827e1472965b36041c29b80cbe4079basqian    ImsSmsMessage msg;
211fcc61188827e1472965b36041c29b80cbe4079basqian    msg.tech = RadioTechnologyFamily::THREE_GPP2;
212fcc61188827e1472965b36041c29b80cbe4079basqian    msg.retry = false;
213fcc61188827e1472965b36041c29b80cbe4079basqian    msg.messageRef = 0;
214fcc61188827e1472965b36041c29b80cbe4079basqian    msg.cdmaMessage = (std::vector<CdmaSmsMessage>){cdmaSmsMessage};
215fcc61188827e1472965b36041c29b80cbe4079basqian    msg.gsmMessage = (std::vector<GsmSmsMessage>){};
216fcc61188827e1472965b36041c29b80cbe4079basqian
217fcc61188827e1472965b36041c29b80cbe4079basqian    radio->sendImsSms(serial, msg);
218fcc61188827e1472965b36041c29b80cbe4079basqian
219fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
220fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
221fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
222fcc61188827e1472965b36041c29b80cbe4079basqian
223fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
224e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp->rspInfo.error, {RadioError::INVALID_ARGUMENTS},
225e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     CHECK_GENERAL_ERROR));
226fcc61188827e1472965b36041c29b80cbe4079basqian    }
227064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
228064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
229064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
230064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.getSmscAddress() for the response returned.
231064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
232064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, getSmscAddress) {
233788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
234064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
235fcc61188827e1472965b36041c29b80cbe4079basqian    radio->getSmscAddress(serial);
236064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
237fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
238fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
239fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
240064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
241fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
242e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
243e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
244e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::INVALID_MODEM_STATE, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
245e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
246fcc61188827e1472965b36041c29b80cbe4079basqian    }
247064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
248064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
249064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
250064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.setSmscAddress() for the response returned.
251064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
252064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, setSmscAddress) {
253788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
254fcc61188827e1472965b36041c29b80cbe4079basqian    hidl_string address = hidl_string("smscAddress");
255064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
256fcc61188827e1472965b36041c29b80cbe4079basqian    radio->setSmscAddress(serial, address);
257064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
258fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
259fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
260fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
261064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
262fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
263e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
264e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
265e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_SMS_FORMAT, RadioError::SIM_ABSENT},
266e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
267fcc61188827e1472965b36041c29b80cbe4079basqian    }
268064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
269064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
270064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
271064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToSim() for the response returned.
272064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
273064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToSim) {
274788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
275fcc61188827e1472965b36041c29b80cbe4079basqian    SmsWriteArgs smsWriteArgs;
276fcc61188827e1472965b36041c29b80cbe4079basqian    smsWriteArgs.status = SmsWriteArgsStatus::REC_UNREAD;
277fcc61188827e1472965b36041c29b80cbe4079basqian    smsWriteArgs.smsc = "";
278fcc61188827e1472965b36041c29b80cbe4079basqian    smsWriteArgs.pdu = "01000b916105770203f3000006d4f29c3e9b01";
279fcc61188827e1472965b36041c29b80cbe4079basqian
280fcc61188827e1472965b36041c29b80cbe4079basqian    radio->writeSmsToSim(serial, smsWriteArgs);
281fcc61188827e1472965b36041c29b80cbe4079basqian
282fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
283fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
284fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
285fcc61188827e1472965b36041c29b80cbe4079basqian
286fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
287e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
288e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
289e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::NONE, RadioError::ENCODING_ERR, RadioError::INVALID_ARGUMENTS,
290e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::INVALID_SMSC_ADDRESS, RadioError::MODEM_ERR, RadioError::NETWORK_NOT_READY,
291e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::NO_RESOURCES, RadioError::SIM_ABSENT},
292e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
293fcc61188827e1472965b36041c29b80cbe4079basqian    }
294064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
295064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
296064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
297064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnSim() for the response returned.
298064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
299064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnSim) {
300788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
301fcc61188827e1472965b36041c29b80cbe4079basqian    int index = 1;
302fcc61188827e1472965b36041c29b80cbe4079basqian
303fcc61188827e1472965b36041c29b80cbe4079basqian    radio->deleteSmsOnSim(serial, index);
304fcc61188827e1472965b36041c29b80cbe4079basqian
305fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
306fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
307fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
308fcc61188827e1472965b36041c29b80cbe4079basqian
309fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
310e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
311e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
312e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::NONE, RadioError::ENCODING_ERR, RadioError::INVALID_ARGUMENTS,
313e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::INVALID_MODEM_STATE, RadioError::NO_SUCH_ENTRY, RadioError::MODEM_ERR,
314e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::SIM_ABSENT},
315e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
316fcc61188827e1472965b36041c29b80cbe4079basqian    }
317064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
318064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
319064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
320064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToRuim() for the response returned.
321064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
322064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToRuim) {
323788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
324fcc61188827e1472965b36041c29b80cbe4079basqian
325fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsAddress
326fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsAddress cdmaSmsAddress;
327fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
328fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
329fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
330fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
331fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
332fcc61188827e1472965b36041c29b80cbe4079basqian
333fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsSubAddress
334fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsSubaddress cdmaSmsSubaddress;
335fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
336fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.odd = false;
337fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
338fcc61188827e1472965b36041c29b80cbe4079basqian
339fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsMessage
340fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsMessage cdmaSmsMessage;
341fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.teleserviceId = 4098;
342fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.isServicePresent = false;
343fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.serviceCategory = 0;
344fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.address = cdmaSmsAddress;
345fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
346fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.bearerData =
347fcc61188827e1472965b36041c29b80cbe4079basqian        (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
348fcc61188827e1472965b36041c29b80cbe4079basqian
349fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsWriteArgs
350fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsWriteArgs cdmaSmsWriteArgs;
351fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
352fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsWriteArgs.message = cdmaSmsMessage;
353fcc61188827e1472965b36041c29b80cbe4079basqian
354fcc61188827e1472965b36041c29b80cbe4079basqian    radio->writeSmsToRuim(serial, cdmaSmsWriteArgs);
355fcc61188827e1472965b36041c29b80cbe4079basqian
356fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
357fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
358fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
359fcc61188827e1472965b36041c29b80cbe4079basqian
360fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
361e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
362e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
363e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::NONE, RadioError::INVALID_ARGUMENTS, RadioError::INVALID_SMS_FORMAT,
364e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::INVALID_SMSC_ADDRESS, RadioError::INVALID_STATE, RadioError::MODEM_ERR,
365e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::NO_SUCH_ENTRY, RadioError::SIM_ABSENT},
366e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
367fcc61188827e1472965b36041c29b80cbe4079basqian    }
368064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
369064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
370064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
371064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnRuim() for the response returned.
372064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
373064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnRuim) {
374788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
375fcc61188827e1472965b36041c29b80cbe4079basqian    int index = 1;
376fcc61188827e1472965b36041c29b80cbe4079basqian
377fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsAddress
378fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsAddress cdmaSmsAddress;
379fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
380fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
381fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
382fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
383fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
384fcc61188827e1472965b36041c29b80cbe4079basqian
385fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsSubAddress
386fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsSubaddress cdmaSmsSubaddress;
387fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
388fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.odd = false;
389fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
390fcc61188827e1472965b36041c29b80cbe4079basqian
391fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsMessage
392fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsMessage cdmaSmsMessage;
393fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.teleserviceId = 4098;
394fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.isServicePresent = false;
395fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.serviceCategory = 0;
396fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.address = cdmaSmsAddress;
397fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
398fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsMessage.bearerData =
399fcc61188827e1472965b36041c29b80cbe4079basqian        (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
400fcc61188827e1472965b36041c29b80cbe4079basqian
401fcc61188827e1472965b36041c29b80cbe4079basqian    // Create a CdmaSmsWriteArgs
402fcc61188827e1472965b36041c29b80cbe4079basqian    CdmaSmsWriteArgs cdmaSmsWriteArgs;
403fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
404fcc61188827e1472965b36041c29b80cbe4079basqian    cdmaSmsWriteArgs.message = cdmaSmsMessage;
405fcc61188827e1472965b36041c29b80cbe4079basqian
406fcc61188827e1472965b36041c29b80cbe4079basqian    radio->deleteSmsOnRuim(serial, index);
407fcc61188827e1472965b36041c29b80cbe4079basqian
408fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
409fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
410fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
411fcc61188827e1472965b36041c29b80cbe4079basqian
412fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
413e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(
414e986b85fddeb3412606840e4cdc76051e3cc966esqian            radioRsp->rspInfo.error,
415e986b85fddeb3412606840e4cdc76051e3cc966esqian            {RadioError::NONE, RadioError::INVALID_ARGUMENTS, RadioError::INVALID_MODEM_STATE,
416e986b85fddeb3412606840e4cdc76051e3cc966esqian             RadioError::MODEM_ERR, RadioError::NO_SUCH_ENTRY, RadioError::SIM_ABSENT},
417e986b85fddeb3412606840e4cdc76051e3cc966esqian            CHECK_GENERAL_ERROR));
418fcc61188827e1472965b36041c29b80cbe4079basqian    }
419064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
420064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
421064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
422064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.reportSmsMemoryStatus() for the response returned.
423064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
424064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, reportSmsMemoryStatus) {
425788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
426fcc61188827e1472965b36041c29b80cbe4079basqian    bool available = true;
427064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
428fcc61188827e1472965b36041c29b80cbe4079basqian    radio->reportSmsMemoryStatus(serial, available);
429064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
430fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(std::cv_status::no_timeout, wait());
431fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
432fcc61188827e1472965b36041c29b80cbe4079basqian    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
433064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
434fcc61188827e1472965b36041c29b80cbe4079basqian    if (cardStatus.cardState == CardState::ABSENT) {
435e986b85fddeb3412606840e4cdc76051e3cc966esqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp->rspInfo.error,
436e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE,
437e986b85fddeb3412606840e4cdc76051e3cc966esqian                                      RadioError::MODEM_ERR, RadioError::SIM_ABSENT},
438e986b85fddeb3412606840e4cdc76051e3cc966esqian                                     CHECK_GENERAL_ERROR));
439fcc61188827e1472965b36041c29b80cbe4079basqian    }
440064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
441