xref: /btstack/test/hfp/test_sequences.c (revision 0cacd247cdf30b555202f0b490d22da0a62c51f9)
1dc5611fdSMilanka Ringwald /*
2dc5611fdSMilanka Ringwald  * Copyright (C) 2014 BlueKitchen GmbH
3dc5611fdSMilanka Ringwald  *
4dc5611fdSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5dc5611fdSMilanka Ringwald  * modification, are permitted provided that the following conditions
6dc5611fdSMilanka Ringwald  * are met:
7dc5611fdSMilanka Ringwald  *
8dc5611fdSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9dc5611fdSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10dc5611fdSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11dc5611fdSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12dc5611fdSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13dc5611fdSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14dc5611fdSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15dc5611fdSMilanka Ringwald  *    from this software without specific prior written permission.
16dc5611fdSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17dc5611fdSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18dc5611fdSMilanka Ringwald  *    monetary gain.
19dc5611fdSMilanka Ringwald  *
20dc5611fdSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21dc5611fdSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22dc5611fdSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23dc5611fdSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24dc5611fdSMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25dc5611fdSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26dc5611fdSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27dc5611fdSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28dc5611fdSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29dc5611fdSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30dc5611fdSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31dc5611fdSMilanka Ringwald  * SUCH DAMAGE.
32dc5611fdSMilanka Ringwald  *
33dc5611fdSMilanka Ringwald  * Please inquire about commercial licensing options at
34dc5611fdSMilanka Ringwald  * [email protected]
35dc5611fdSMilanka Ringwald  *
36dc5611fdSMilanka Ringwald  */
37dc5611fdSMilanka Ringwald 
38dc5611fdSMilanka Ringwald // *****************************************************************************
39dc5611fdSMilanka Ringwald //
40dc5611fdSMilanka Ringwald // HFP Test Sequences
41dc5611fdSMilanka Ringwald //
42dc5611fdSMilanka Ringwald // *****************************************************************************
43dc5611fdSMilanka Ringwald 
44dc5611fdSMilanka Ringwald #include <stdint.h>
45dc5611fdSMilanka Ringwald #include <stdio.h>
46dc5611fdSMilanka Ringwald #include <stdlib.h>
47dc5611fdSMilanka Ringwald #include <string.h>
48dc5611fdSMilanka Ringwald 
49dc5611fdSMilanka Ringwald #include "test_sequences.h"
50dc5611fdSMilanka Ringwald 
51dc5611fdSMilanka Ringwald 
52*0cacd247SMilanka Ringwald #define TEST_SEQUENCE(test_sequence) { (char *)#test_sequence, (char**)test_sequence, sizeof(test_sequence) / sizeof(char *)}
53dc5611fdSMilanka Ringwald 
54dc5611fdSMilanka Ringwald /* Service Level Connection (slc) test sequences */
55dc5611fdSMilanka Ringwald 
56555cc8adSMilanka Ringwald // with codec negotiation feature
57dc5611fdSMilanka Ringwald const char * slc_test1[] = {
58*0cacd247SMilanka Ringwald     "AT+BRSF=127",
59*0cacd247SMilanka Ringwald     "+BRSF:4079",
60dc5611fdSMilanka Ringwald     "OK",
61dc5611fdSMilanka Ringwald     "AT+BAC=1,2",
62dc5611fdSMilanka Ringwald     "OK",
63dc5611fdSMilanka Ringwald     "AT+CIND=?",
64dc5611fdSMilanka Ringwald     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))",
65dc5611fdSMilanka Ringwald     "OK",
66dc5611fdSMilanka Ringwald     "AT+CIND?",
67dc5611fdSMilanka Ringwald     "+CIND:1,0,0,3,5,0,0",
68dc5611fdSMilanka Ringwald     "OK",
69dc5611fdSMilanka Ringwald     "AT+CMER=3,0,0,1",
70dc5611fdSMilanka Ringwald     "OK",
71dc5611fdSMilanka Ringwald     "AT+CHLD=?",
72dc5611fdSMilanka Ringwald     "+CHLD:(1,1x,2,2x,3)",
73dc5611fdSMilanka Ringwald     "OK"
74dc5611fdSMilanka Ringwald };
75dc5611fdSMilanka Ringwald 
76555cc8adSMilanka Ringwald // without codec negotiation feature
77555cc8adSMilanka Ringwald const char * slc_test2[] = {
78555cc8adSMilanka Ringwald     "AT+BRSF=438",
79555cc8adSMilanka Ringwald     "+BRSF:495",
80555cc8adSMilanka Ringwald     "OK",
81555cc8adSMilanka Ringwald     "AT+CIND=?",
82555cc8adSMilanka Ringwald     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))",
83555cc8adSMilanka Ringwald     "OK",
84555cc8adSMilanka Ringwald     "AT+CIND?",
85555cc8adSMilanka Ringwald     "+CIND:1,0,0,3,5,0,0",
86555cc8adSMilanka Ringwald     "OK",
87555cc8adSMilanka Ringwald     "AT+CMER=3,0,0,1",
88555cc8adSMilanka Ringwald     "OK",
89555cc8adSMilanka Ringwald     "AT+CHLD=?",
90555cc8adSMilanka Ringwald     "+CHLD:(1,1x,2,2x,3)",
91555cc8adSMilanka Ringwald     "OK"
92555cc8adSMilanka Ringwald };
93555cc8adSMilanka Ringwald 
94*0cacd247SMilanka Ringwald 
95dc5611fdSMilanka Ringwald hfp_test_item_t slc_tests[] = {
96555cc8adSMilanka Ringwald     TEST_SEQUENCE(slc_test1),
97555cc8adSMilanka Ringwald     TEST_SEQUENCE(slc_test2)
98dc5611fdSMilanka Ringwald };
99dc5611fdSMilanka Ringwald 
100dc5611fdSMilanka Ringwald /* Service Level Connection (slc) common commands */
101dc5611fdSMilanka Ringwald const char * slc_cmds_test1[] = {
102dc5611fdSMilanka Ringwald     "AT+BAC=1,3",
103dc5611fdSMilanka Ringwald     "OK"
104dc5611fdSMilanka Ringwald };
105dc5611fdSMilanka Ringwald 
106dc5611fdSMilanka Ringwald hfp_test_item_t slc_cmds_tests[] = {
107dc5611fdSMilanka Ringwald     TEST_SEQUENCE(slc_cmds_test1)
108dc5611fdSMilanka Ringwald };
109c26caa21SMilanka Ringwald 
110dc5611fdSMilanka Ringwald /* Codecs Connection (cc) test sequences */
111dc5611fdSMilanka Ringwald const char * cc_test1[] = {
112dc5611fdSMilanka Ringwald     "AT+BCC",
113dc5611fdSMilanka Ringwald     "OK",
114dc5611fdSMilanka Ringwald     "+BCS:1",
115dc5611fdSMilanka Ringwald     "AT+BCS=1",
116dc5611fdSMilanka Ringwald     "OK"
117dc5611fdSMilanka Ringwald };
118dc5611fdSMilanka Ringwald 
119dc5611fdSMilanka Ringwald const char * cc_test2[] = {
12062656e33SMilanka Ringwald     "AT+BAC=1,2",
12162656e33SMilanka Ringwald     "OK",
122dc5611fdSMilanka Ringwald     "AT+BCC",
123dc5611fdSMilanka Ringwald     "OK",
124af03d747SMilanka Ringwald     "BCS:1",
125656f7353SMilanka Ringwald     "AT+BCS=1",
126656f7353SMilanka Ringwald     "OK"
127656f7353SMilanka Ringwald };
128656f7353SMilanka Ringwald 
12962656e33SMilanka Ringwald 
130656f7353SMilanka Ringwald const char * cc_test3[] = {
131656f7353SMilanka Ringwald     "AT+BAC=1,2",
132656f7353SMilanka Ringwald     "OK",
133656f7353SMilanka Ringwald     "AT+BCC",
134656f7353SMilanka Ringwald     "OK",
135656f7353SMilanka Ringwald     "+BCS:1",
136656f7353SMilanka Ringwald     "AT+BAC=2,3",
137656f7353SMilanka Ringwald     "OK",
138af03d747SMilanka Ringwald     "+BCS:3",
139af03d747SMilanka Ringwald     "AT+BCS=3",
140656f7353SMilanka Ringwald     "OK"
141656f7353SMilanka Ringwald };
142656f7353SMilanka Ringwald 
14362656e33SMilanka Ringwald const char * cc_test4[] = {
144656f7353SMilanka Ringwald     "AT+BCC",
145656f7353SMilanka Ringwald     "OK",
146dc5611fdSMilanka Ringwald     "+BCS:1",
147dc5611fdSMilanka Ringwald     "AT+BAC=2,3",
148dc5611fdSMilanka Ringwald     "OK",
149af03d747SMilanka Ringwald     "+BCS:3",
150af03d747SMilanka Ringwald     "AT+BCS=3",
151dc5611fdSMilanka Ringwald     "OK"
152dc5611fdSMilanka Ringwald };
153dc5611fdSMilanka Ringwald 
154d212fbd8SMilanka Ringwald 
155dc5611fdSMilanka Ringwald hfp_test_item_t cc_tests[] = {
15662656e33SMilanka Ringwald     TEST_SEQUENCE(cc_test1),
157ec0ee77dSMilanka Ringwald     TEST_SEQUENCE(cc_test2),
158ec0ee77dSMilanka Ringwald     TEST_SEQUENCE(cc_test3),
159ec0ee77dSMilanka Ringwald     TEST_SEQUENCE(cc_test4)
160dc5611fdSMilanka Ringwald };
161dc5611fdSMilanka Ringwald 
162deaf6c13SMilanka Ringwald /* Incoming call sequence */
163deaf6c13SMilanka Ringwald const char * ic_test1[] = {
164deaf6c13SMilanka Ringwald     "+CIEV:3,1",
165deaf6c13SMilanka Ringwald     "BCS:1",
166deaf6c13SMilanka Ringwald     "AT+BCS=1",
167deaf6c13SMilanka Ringwald     "OK",
168deaf6c13SMilanka Ringwald     "NOP"
169deaf6c13SMilanka Ringwald };
170deaf6c13SMilanka Ringwald 
171deaf6c13SMilanka Ringwald const char * ic_alert_test1[] = {
1721872f848SMilanka Ringwald     "ATA",
1731872f848SMilanka Ringwald     "OK",
1741872f848SMilanka Ringwald     "+CIEV:2,1", // call = 1
175a8714e14SMilanka Ringwald     "+CIEV:3,0",
176a8714e14SMilanka Ringwald };
177a8714e14SMilanka Ringwald 
178a8714e14SMilanka Ringwald const char * ic_ag_terminates_call[] = {
179a8714e14SMilanka Ringwald     // AG terminates call
180a8714e14SMilanka Ringwald     "+CIEV:2,0"
181a8714e14SMilanka Ringwald };
182a8714e14SMilanka Ringwald 
183a8714e14SMilanka Ringwald const char * ic_hf_terminates_call[] = {
184a8714e14SMilanka Ringwald     // HF terminates call
185a8714e14SMilanka Ringwald     "AT+CHUP",
186968c1e89SMilanka Ringwald     "OK",
187a8714e14SMilanka Ringwald     "+CIEV:2,0"
188deaf6c13SMilanka Ringwald };
189deaf6c13SMilanka Ringwald 
190deaf6c13SMilanka Ringwald hfp_test_item_t ic_tests[] = {
191deaf6c13SMilanka Ringwald     TEST_SEQUENCE(ic_test1)
192deaf6c13SMilanka Ringwald };
193deaf6c13SMilanka Ringwald 
194*0cacd247SMilanka Ringwald // PTS test sequences
195dc5611fdSMilanka Ringwald 
196*0cacd247SMilanka Ringwald const char * TC_AG_SLC_BV_01_C[] = {
197*0cacd247SMilanka Ringwald     "AT+BRSF=127" ,
198*0cacd247SMilanka Ringwald     "+BRSF:4079" ,
199*0cacd247SMilanka Ringwald     "OK" ,
200*0cacd247SMilanka Ringwald     "AT+CIND=?" ,
201*0cacd247SMilanka Ringwald     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
202*0cacd247SMilanka Ringwald     "OK" ,
203*0cacd247SMilanka Ringwald     "AT+CIND?" ,
204*0cacd247SMilanka Ringwald     "+CIND:1,0,0,3,5,0,0" ,
205*0cacd247SMilanka Ringwald     "OK" ,
206*0cacd247SMilanka Ringwald     "AT+CMER=3,0,0,1" ,
207*0cacd247SMilanka Ringwald     "OK" ,
208*0cacd247SMilanka Ringwald     "AT+CHLD=?" ,
209*0cacd247SMilanka Ringwald     "+CHLD:(1,1x,2,2x,3)" ,
210*0cacd247SMilanka Ringwald     "OK" ,
211*0cacd247SMilanka Ringwald     "AT+VGS=9" ,
212*0cacd247SMilanka Ringwald     "OK" ,
213*0cacd247SMilanka Ringwald     "AT+VGM=9" ,
214*0cacd247SMilanka Ringwald     "OK" ,
215*0cacd247SMilanka Ringwald     "AT+CLIP=1" ,
216*0cacd247SMilanka Ringwald     "OK" ,
217*0cacd247SMilanka Ringwald     "AT+CCWA=1" ,
218*0cacd247SMilanka Ringwald     "OK" ,
219*0cacd247SMilanka Ringwald     "AT+CMEE=1" ,
220*0cacd247SMilanka Ringwald     "OK"
221*0cacd247SMilanka Ringwald };
222*0cacd247SMilanka Ringwald 
223*0cacd247SMilanka Ringwald hfp_test_item_t pts_slc_tests[] = {
224*0cacd247SMilanka Ringwald     TEST_SEQUENCE(TC_AG_SLC_BV_01_C)
225*0cacd247SMilanka Ringwald };
226dc5611fdSMilanka Ringwald 
227dc5611fdSMilanka Ringwald //////////////
228dc5611fdSMilanka Ringwald 
229656f7353SMilanka Ringwald static int test_item_size = sizeof(hfp_test_item_t);
230dc5611fdSMilanka Ringwald 
231dc5611fdSMilanka Ringwald // SLC
232*0cacd247SMilanka Ringwald int hfp_slc_tests_size(){ return sizeof(slc_tests)/test_item_size;}
233656f7353SMilanka Ringwald hfp_test_item_t * hfp_slc_tests(){ return slc_tests;}
234*0cacd247SMilanka Ringwald hfp_test_item_t * default_hfp_slc_test(){return  &slc_tests[0];}
235dc5611fdSMilanka Ringwald 
236656f7353SMilanka Ringwald // SLC commands
237*0cacd247SMilanka Ringwald int hfp_slc_cmds_tests_size(){ return sizeof(slc_cmds_tests)/test_item_size;}
238656f7353SMilanka Ringwald hfp_test_item_t * hfp_slc_cmds_tests(){ return slc_cmds_tests;}
239*0cacd247SMilanka Ringwald hfp_test_item_t * default_slc_cmds_test() { return  &slc_tests[0];}
240dc5611fdSMilanka Ringwald 
241dc5611fdSMilanka Ringwald // CC
242*0cacd247SMilanka Ringwald int hfp_cc_tests_size(){ return sizeof(cc_tests) /test_item_size;}
243656f7353SMilanka Ringwald hfp_test_item_t * hfp_cc_tests(){ return cc_tests;}
244*0cacd247SMilanka Ringwald hfp_test_item_t * default_hfp_cc_test(){ return &cc_tests[0];}
245deaf6c13SMilanka Ringwald 
246*0cacd247SMilanka Ringwald // PTS
247*0cacd247SMilanka Ringwald int hfp_pts_slc_tests_size(){ return sizeof(pts_slc_tests)/test_item_size;}
248*0cacd247SMilanka Ringwald hfp_test_item_t * hfp_pts_slc_tests(){ return pts_slc_tests;}
249656f7353SMilanka Ringwald 
250a8714e14SMilanka Ringwald