xref: /btstack/test/hfp/test_sequences.c (revision d212fbd8985bf6624e63b1cc7781dac8d9e298b3)
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 
52dc5611fdSMilanka Ringwald #define TEST_SEQUENCE(name) { (char**)name, sizeof(name) / sizeof(char *)}
53dc5611fdSMilanka Ringwald 
54dc5611fdSMilanka Ringwald /* Service Level Connection (slc) test sequences */
55dc5611fdSMilanka Ringwald 
56dc5611fdSMilanka Ringwald const char * slc_test1[] = {
57dc5611fdSMilanka Ringwald     "AT+BRSF=438",
58dc5611fdSMilanka Ringwald     "+BRSF:1007",
59dc5611fdSMilanka Ringwald     "OK",
60dc5611fdSMilanka Ringwald     "AT+BAC=1,2",
61dc5611fdSMilanka Ringwald     "OK",
62dc5611fdSMilanka Ringwald     "AT+CIND=?",
63dc5611fdSMilanka Ringwald     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))",
64dc5611fdSMilanka Ringwald     "OK",
65dc5611fdSMilanka Ringwald     "AT+CIND?",
66dc5611fdSMilanka Ringwald     "+CIND:1,0,0,3,5,0,0",
67dc5611fdSMilanka Ringwald     "OK",
68dc5611fdSMilanka Ringwald     "AT+CMER=3,0,0,1",
69dc5611fdSMilanka Ringwald     "OK",
70dc5611fdSMilanka Ringwald     "AT+CHLD=?",
71dc5611fdSMilanka Ringwald     "+CHLD:(1,1x,2,2x,3)",
72dc5611fdSMilanka Ringwald     "OK"
73dc5611fdSMilanka Ringwald };
74dc5611fdSMilanka Ringwald 
75dc5611fdSMilanka Ringwald hfp_test_item_t slc_tests[] = {
76dc5611fdSMilanka Ringwald     TEST_SEQUENCE(slc_test1)
77dc5611fdSMilanka Ringwald };
78dc5611fdSMilanka Ringwald 
79dc5611fdSMilanka Ringwald /* Service Level Connection (slc) common commands */
80dc5611fdSMilanka Ringwald const char * slc_cmds_test1[] = {
81dc5611fdSMilanka Ringwald     "AT+BAC=1,3",
82dc5611fdSMilanka Ringwald     "OK"
83dc5611fdSMilanka Ringwald };
84dc5611fdSMilanka Ringwald 
85dc5611fdSMilanka Ringwald hfp_test_item_t slc_cmds_tests[] = {
86dc5611fdSMilanka Ringwald     TEST_SEQUENCE(slc_cmds_test1)
87dc5611fdSMilanka Ringwald };
88c26caa21SMilanka Ringwald 
89dc5611fdSMilanka Ringwald /* Codecs Connection (cc) test sequences */
90dc5611fdSMilanka Ringwald const char * cc_test1[] = {
91dc5611fdSMilanka Ringwald     "AT+BCC",
92dc5611fdSMilanka Ringwald     "OK",
9362656e33SMilanka Ringwald     "NOP",
94dc5611fdSMilanka Ringwald     "+BCS:1",
95dc5611fdSMilanka Ringwald     "AT+BCS=1",
96dc5611fdSMilanka Ringwald     "OK"
97dc5611fdSMilanka Ringwald };
98dc5611fdSMilanka Ringwald 
99dc5611fdSMilanka Ringwald const char * cc_test2[] = {
10062656e33SMilanka Ringwald     "AT+BAC=1,2",
10162656e33SMilanka Ringwald     "OK",
102dc5611fdSMilanka Ringwald     "AT+BCC",
103dc5611fdSMilanka Ringwald     "OK",
104af03d747SMilanka Ringwald     "NOP",
105af03d747SMilanka Ringwald     "BCS:1",
106656f7353SMilanka Ringwald     "AT+BCS=1",
107656f7353SMilanka Ringwald     "OK"
108656f7353SMilanka Ringwald };
109656f7353SMilanka Ringwald 
11062656e33SMilanka Ringwald 
111656f7353SMilanka Ringwald const char * cc_test3[] = {
112656f7353SMilanka Ringwald     "AT+BAC=1,2",
113656f7353SMilanka Ringwald     "OK",
114656f7353SMilanka Ringwald     "AT+BCC",
115656f7353SMilanka Ringwald     "OK",
11662656e33SMilanka Ringwald     "NOP",
117656f7353SMilanka Ringwald     "+BCS:1",
118656f7353SMilanka Ringwald     "AT+BAC=2,3",
119656f7353SMilanka Ringwald     "OK",
12062656e33SMilanka Ringwald     "NOP",
121af03d747SMilanka Ringwald     "+BCS:3",
122af03d747SMilanka Ringwald     "AT+BCS=3",
123656f7353SMilanka Ringwald     "OK"
124656f7353SMilanka Ringwald };
125656f7353SMilanka Ringwald 
12662656e33SMilanka Ringwald const char * cc_test4[] = {
127656f7353SMilanka Ringwald     "AT+BCC",
128656f7353SMilanka Ringwald     "OK",
12962656e33SMilanka Ringwald     "NOP",
130dc5611fdSMilanka Ringwald     "+BCS:1",
131dc5611fdSMilanka Ringwald     "AT+BAC=2,3",
132dc5611fdSMilanka Ringwald     "OK",
13362656e33SMilanka Ringwald     "NOP",
134af03d747SMilanka Ringwald     "+BCS:3",
135af03d747SMilanka Ringwald     "AT+BCS=3",
136dc5611fdSMilanka Ringwald     "OK"
137dc5611fdSMilanka Ringwald };
138dc5611fdSMilanka Ringwald 
139*d212fbd8SMilanka Ringwald const char * cc_test5[] = {
140*d212fbd8SMilanka Ringwald     "+BCS:1",
141*d212fbd8SMilanka Ringwald     "AT+BCS=1",
142*d212fbd8SMilanka Ringwald     "OK"
143*d212fbd8SMilanka Ringwald };
144*d212fbd8SMilanka Ringwald 
145dc5611fdSMilanka Ringwald hfp_test_item_t cc_tests[] = {
14662656e33SMilanka Ringwald     TEST_SEQUENCE(cc_test1),
147*d212fbd8SMilanka Ringwald     // TEST_SEQUENCE(cc_test2),
148*d212fbd8SMilanka Ringwald     // TEST_SEQUENCE(cc_test3),
149*d212fbd8SMilanka Ringwald     // TEST_SEQUENCE(cc_test4),
150*d212fbd8SMilanka Ringwald     // TEST_SEQUENCE(cc_test5)
151dc5611fdSMilanka Ringwald };
152dc5611fdSMilanka Ringwald 
153deaf6c13SMilanka Ringwald /* Incoming call sequence */
154deaf6c13SMilanka Ringwald const char * ic_test1[] = {
155deaf6c13SMilanka Ringwald     "+CIEV:3,1",
156deaf6c13SMilanka Ringwald     "NOP",
157deaf6c13SMilanka Ringwald     "BCS:1",
158deaf6c13SMilanka Ringwald     "AT+BCS=1",
159deaf6c13SMilanka Ringwald     "OK",
160deaf6c13SMilanka Ringwald     "NOP"
161deaf6c13SMilanka Ringwald };
162deaf6c13SMilanka Ringwald 
163deaf6c13SMilanka Ringwald const char * ic_alert_test1[] = {
164deaf6c13SMilanka Ringwald     "NOP",
1651872f848SMilanka Ringwald     "ATA",
1661872f848SMilanka Ringwald     "OK",
1671872f848SMilanka Ringwald     "NOP",
1681872f848SMilanka Ringwald     "+CIEV:2,1", // call = 1
1691872f848SMilanka Ringwald     "NOP",
1701872f848SMilanka Ringwald     "+CIEV:3,0"
171deaf6c13SMilanka Ringwald };
172deaf6c13SMilanka Ringwald 
173deaf6c13SMilanka Ringwald hfp_test_item_t ic_tests[] = {
174deaf6c13SMilanka Ringwald     TEST_SEQUENCE(ic_test1)
175deaf6c13SMilanka Ringwald };
176deaf6c13SMilanka Ringwald 
177dc5611fdSMilanka Ringwald 
178dc5611fdSMilanka Ringwald 
179dc5611fdSMilanka Ringwald //////////////
180dc5611fdSMilanka Ringwald 
181656f7353SMilanka Ringwald static int test_item_size = sizeof(hfp_test_item_t);
182dc5611fdSMilanka Ringwald 
183dc5611fdSMilanka Ringwald // SLC
184656f7353SMilanka Ringwald hfp_test_item_t * hfp_slc_tests(){ return slc_tests;}
185656f7353SMilanka Ringwald int slc_tests_size(){ return sizeof(slc_tests)/test_item_size;}
186dc5611fdSMilanka Ringwald 
187656f7353SMilanka Ringwald char ** default_slc_setup() { return (char **)slc_test1;}
188656f7353SMilanka Ringwald int default_slc_setup_size(){ return sizeof(slc_test1)/sizeof(char*);}
189dc5611fdSMilanka Ringwald 
190656f7353SMilanka Ringwald // SLC commands
191656f7353SMilanka Ringwald hfp_test_item_t * hfp_slc_cmds_tests(){ return slc_cmds_tests;}
192656f7353SMilanka Ringwald int slc_cmds_tests_size(){ return sizeof(slc_cmds_tests)/test_item_size;}
193dc5611fdSMilanka Ringwald 
194656f7353SMilanka Ringwald char ** default_slc_cmds_setup() { return (char **)slc_cmds_test1;}
195656f7353SMilanka Ringwald int default_slc_cmds_setup_size(){ return sizeof(slc_cmds_test1)/sizeof(char*);}
196dc5611fdSMilanka Ringwald 
197dc5611fdSMilanka Ringwald // CC
198656f7353SMilanka Ringwald hfp_test_item_t * hfp_cc_tests(){ return cc_tests;}
199deaf6c13SMilanka Ringwald int cc_tests_size(){ return sizeof(cc_tests) /test_item_size;}
200deaf6c13SMilanka Ringwald 
201656f7353SMilanka Ringwald char ** default_cc_setup() { return (char **)cc_test1;}
202656f7353SMilanka Ringwald int default_cc_setup_size(){ return sizeof(cc_test1)/sizeof(char*);}
203656f7353SMilanka Ringwald 
204deaf6c13SMilanka Ringwald // IC
205deaf6c13SMilanka Ringwald char ** default_ic_setup() { return (char **)ic_test1;}
206deaf6c13SMilanka Ringwald int default_ic_setup_size(){ return sizeof(ic_test1)/sizeof(char*);}
207656f7353SMilanka Ringwald 
208deaf6c13SMilanka Ringwald char ** alert_ic_setup() { return (char **)ic_alert_test1;}
209deaf6c13SMilanka Ringwald int alert_ic_setup_size(){ return sizeof(ic_alert_test1)/sizeof(char*);}
210dc5611fdSMilanka Ringwald