radio_hidl_hal_sms.cpp revision 064ee51e0793ab7c8ad8cc440843c995f145e0a4
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
17064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq#include<radio_hidl_hal_utils.h>
18064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
19064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoqusing namespace ::android::hardware::radio::V1_0;
20064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
21064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
22064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSms() for the response returned.
23064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
24064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSms) {
25064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
26064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    GsmSmsMessage msg;
27064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.smscPdu = "";
28064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
29064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
30064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->sendSms(++serial, msg);
31064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
32064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
33064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
34064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
35064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
36064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
37064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_STATE, radioRsp->rspInfo.error);
38064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(0, radioRsp->sendSmsResult.errorCode);
39064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
40064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
41064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ("", radioRsp->sendSmsResult.ackPDU);
42064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(-1, radioRsp->sendSmsResult.errorCode);
43064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
44064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
45064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
46064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
47064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSMSExpectMore() for the response returned.
48064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
49064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSMSExpectMore) {
50064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
51064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    GsmSmsMessage msg;
52064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.smscPdu = "";
53064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
54064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
55064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->sendSMSExpectMore(++serial, msg);
56064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
57064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // TODO(shuoq): add more test for this API when inserted sim card is considered
58064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
59064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
60064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
61064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
62064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
63064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
64064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_STATE, radioRsp->rspInfo.error);
65064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
66064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
67064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ("", radioRsp->sendSmsResult.ackPDU);
68064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(-1, radioRsp->sendSmsResult.errorCode);
69064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
70064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
71064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
72064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
73064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingGsmSms() for the response returned.
74064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
75064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingGsmSms) {
76064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
77064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    bool success = true;
78064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
79064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->acknowledgeLastIncomingGsmSms(++serial, success,
80064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        SmsAcknowledgeFailCause::MEMORY_CAPACITY_EXCEEDED);
81064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
82064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
83064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
84064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
85064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
86064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
87064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_STATE, radioRsp->rspInfo.error);
88064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
89064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will test right behavior when inserted sim card is considered
90064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
91064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
92064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
93064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
94064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeIncomingGsmSmsWithPdu() for the response returned.
95064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
96064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeIncomingGsmSmsWithPdu) {
97064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
98064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    bool success = true;
99064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    std::string ackPdu = "";
100064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
101064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->acknowledgeIncomingGsmSmsWithPdu(++serial, success, ackPdu);
102064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
103064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
104064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
105064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
106064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
107064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
108064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
109064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
110064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will test right behavior when inserted sim card is considered
111064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
112064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
113064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
114064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
115064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendCdmaSms() for the response returned.
116064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
117064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendCdmaSms) {
118064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
119064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
120064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsAddress
121064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsAddress cdmaSmsAddress;
122064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
123064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
124064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
125064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
126064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digits = (std::vector<uint8_t>) {11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
127064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
128064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsSubAddress
129064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsSubaddress cdmaSmsSubaddress;
130064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
131064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.odd = false;
132064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.digits = (std::vector<uint8_t>) {};
133064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
134064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsMessage
135064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    android::hardware::radio::V1_0::CdmaSmsMessage cdmaSmsMessage;
136064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.teleserviceId = 4098;
137064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.isServicePresent = false;
138064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.serviceCategory = 0;
139064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.address = cdmaSmsAddress;
140064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
141064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.bearerData = (std::vector<uint8_t>)
142064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        {15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
143064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
144064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->sendCdmaSms(++serial, cdmaSmsMessage);
145064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
146064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
147064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
148064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
149064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
150064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
151064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
152064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
153064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): radioRsp->sendSmsResult needs to be investigated when Sim card is in
154064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
155064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
156064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
157064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
158064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingCdmaSms() for the response returned.
159064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
160064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingCdmaSms) {
161064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
162064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
163064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsAck
164064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsAck cdmaSmsAck;
165064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAck.errorClass = CdmaSmsErrorClass::NO_ERROR;
166064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAck.smsCauseCode = 1;
167064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
168064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->acknowledgeLastIncomingCdmaSms(++serial, cdmaSmsAck);
169064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
170064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
171064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
172064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
173064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
174064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
175064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NO_SMS_TO_ACK, radioRsp->rspInfo.error);
176064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
177064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NO_SMS_TO_ACK, radioRsp->rspInfo.error);
178064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
179064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
180064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
181064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
182064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendImsSms() for the response returned.
183064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
184064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendImsSms) {
185064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 1;
186064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
187064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsAddress
188064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsAddress cdmaSmsAddress;
189064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
190064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
191064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
192064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
193064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digits = (std::vector<uint8_t>) {11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
194064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
195064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsSubAddress
196064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsSubaddress cdmaSmsSubaddress;
197064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
198064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.odd = false;
199064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.digits = (std::vector<uint8_t>) {};
200064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
201064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsMessage
202064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsMessage cdmaSmsMessage;
203064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.teleserviceId = 4098;
204064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.isServicePresent = false;
205064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.serviceCategory = 0;
206064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.address = cdmaSmsAddress;
207064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
208064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.bearerData = (std::vector<uint8_t>)
209064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        {15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
210064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
211064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Creata an ImsSmsMessage
212064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    ImsSmsMessage msg;
213064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.tech = RadioTechnologyFamily::THREE_GPP2;
214064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.retry = false;
215064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.messageRef = 0;
216064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.cdmaMessage = (std::vector<CdmaSmsMessage>) {cdmaSmsMessage};
217064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    msg.gsmMessage = (std::vector<GsmSmsMessage>) {};
218064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
219064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->sendImsSms(serial, msg);
220064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
221064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
222064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
223064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
224064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
225064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
226064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
227064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
228064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
229064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): radioRsp->sendSmsResult needs to be investigated when sim card is in
230064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
231064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
232064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
233064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
234064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.getSmscAddress() for the response returned.
235064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
236064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, getSmscAddress) {
237064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
238064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
239064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->getSmscAddress(++serial);
240064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
241064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
242064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
243064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
244064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
245064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
246064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
247064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
248064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
249064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): radioRsp->smscAddress needs to be investigated when Sim card is in
250064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
251064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
252064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
253064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
254064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.setSmscAddress() for the response returned.
255064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
256064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, setSmscAddress) {
257064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
258064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    hidl_string address = hidl_string("smscAddress");
259064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
260064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->setSmscAddress(++serial, address);
261064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
262064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
263064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
264064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
265064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
266064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
267064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_SMS_FORMAT, radioRsp->rspInfo.error);
268064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
269064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::INVALID_SMS_FORMAT, radioRsp->rspInfo.error);
270064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
271064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
272064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
273064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
274064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToSim() for the response returned.
275064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
276064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToSim) {
277064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
278064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    SmsWriteArgs smsWriteArgs;
279064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    smsWriteArgs.status = SmsWriteArgsStatus::REC_UNREAD;
280064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    smsWriteArgs.smsc = "";
281064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    smsWriteArgs.pdu = "01000b916105770203f3000006d4f29c3e9b01";
282064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
283064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->writeSmsToSim(++serial, smsWriteArgs);
284064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
285064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
286064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
287064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
288064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
289064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
290064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
291064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
292064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): radioRsp->writeSmsToSimIndex needs to be investigated when Sim card is in
293064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
294064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
295064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
296064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
297064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnSim() for the response returned.
298064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
299064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnSim) {
300064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
301064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int index = 1;
302064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
303064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->deleteSmsOnSim(++serial, index);
304064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
305064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
306064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
307064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
308064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
309064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
310064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
311064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
312064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NO_SUCH_ENTRY, radioRsp->rspInfo.error);
313064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
314064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
315064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
316064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
317064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToRuim() for the response returned.
318064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
319064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToRuim) {
320064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
321064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
322064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsAddress
323064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsAddress cdmaSmsAddress;
324064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
325064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
326064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
327064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
328064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digits = (std::vector<uint8_t>) {11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
329064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
330064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsSubAddress
331064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsSubaddress cdmaSmsSubaddress;
332064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
333064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.odd = false;
334064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.digits = (std::vector<uint8_t>) {};
335064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
336064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsMessage
337064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsMessage cdmaSmsMessage;
338064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.teleserviceId = 4098;
339064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.isServicePresent = false;
340064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.serviceCategory = 0;
341064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.address = cdmaSmsAddress;
342064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
343064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.bearerData = (std::vector<uint8_t>)
344064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        {15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
345064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
346064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsWriteArgs
347064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsWriteArgs cdmaSmsWriteArgs;
348064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
349064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsWriteArgs.message = cdmaSmsMessage;
350064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
351064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->writeSmsToRuim(++serial, cdmaSmsWriteArgs);
352064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
353064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
354064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
355064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
356064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
357064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
358064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
359064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
360064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): radioRsp->writeSmsToRuimIndex needs to be investigated when sim card is in
361064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
362064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
363064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
364064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
365064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnRuim() for the response returned.
366064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
367064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnRuim) {
368064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
369064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int index = 1;
370064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
371064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsAddress
372064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsAddress cdmaSmsAddress;
373064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
374064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
375064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
376064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
377064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsAddress.digits = (std::vector<uint8_t>) {11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
378064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
379064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsSubAddress
380064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsSubaddress cdmaSmsSubaddress;
381064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
382064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.odd = false;
383064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsSubaddress.digits = (std::vector<uint8_t>) {};
384064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
385064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsMessage
386064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsMessage cdmaSmsMessage;
387064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.teleserviceId = 4098;
388064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.isServicePresent = false;
389064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.serviceCategory = 0;
390064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.address = cdmaSmsAddress;
391064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
392064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsMessage.bearerData = (std::vector<uint8_t>)
393064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        {15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
394064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
395064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    // Create a CdmaSmsWriteArgs
396064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    CdmaSmsWriteArgs cdmaSmsWriteArgs;
397064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
398064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    cdmaSmsWriteArgs.message = cdmaSmsMessage;
399064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
400064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->deleteSmsOnRuim(++serial, index);
401064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
402064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
403064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
404064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
405064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
406064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
407064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
408064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
409064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will test right behavior when inserted sim card is considered
410064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
411064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
412064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
413064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
414064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.reportSmsMemoryStatus() for the response returned.
415064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
416064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, reportSmsMemoryStatus) {
417064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    int serial = 0;
418064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    bool available = true;
419064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
420064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    radio->reportSmsMemoryStatus(++serial, available);
421064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
422064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(std::cv_status::no_timeout, wait());
423064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
424064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
425064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
426064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    if (cardStatus.cardState == CardState::ABSENT) {
427064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        // TODO(shuoq): Will add error check when we know the expected error from QC
428064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    } else {
429064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq        EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
430064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq    }
431064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
432