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