xref: /btstack/test/hfp/test_sequences.c (revision a484130c09e8d2a02a11deb14ecadc15f0217953)
1 /*
2  * Copyright (C) 2014 BlueKitchen GmbH
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holders nor the names of
14  *    contributors may be used to endorse or promote products derived
15  *    from this software without specific prior written permission.
16  * 4. Any redistribution, use, or modification is done solely for
17  *    personal benefit and not for any commercial purpose or for
18  *    monetary gain.
19  *
20  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * Please inquire about commercial licensing options at
34  * [email protected]
35  *
36  */
37 
38 // *****************************************************************************
39 //
40 // HFP Test Sequences
41 //
42 // *****************************************************************************
43 
44 #include <stdint.h>
45 #include <stdio.h>
46 #include <stdlib.h>
47 #include <string.h>
48 
49 #include "test_sequences.h"
50 
51 
52 #define TEST_SEQUENCE(test_sequence) { (char *)#test_sequence, (char**)test_sequence, sizeof(test_sequence) / sizeof(char *)}
53 
54 /* Service Level Connection (slc) common commands */
55 const char * slc_cmds_test1[] = {
56     "AT+BAC=1,3",
57     "OK"
58 };
59 
60 hfp_test_item_t slc_cmds_tests[] = {
61     TEST_SEQUENCE(slc_cmds_test1)
62 };
63 
64 /* Codecs Connection (cc) test sequences */
65 const char * cc_test1[] = {
66     "AT+BCC",
67     "OK",
68     "+BCS:1",
69     "AT+BCS=1",
70     "OK"
71 };
72 
73 const char * cc_test2[] = {
74     "AT+BAC=1,2",
75     "OK",
76     "AT+BCC",
77     "OK",
78     "+BCS:1",
79     "AT+BCS=1",
80     "OK"
81 };
82 
83 
84 const char * cc_test3[] = {
85     "AT+BAC=1,2",
86     "OK",
87     "AT+BCC",
88     "OK",
89     "+BCS:1",
90     "AT+BAC=2,3",
91     "OK",
92     "+BCS:3",
93     "AT+BCS=3",
94     "OK"
95 };
96 
97 const char * cc_test4[] = {
98     "AT+BCC",
99     "OK",
100     "+BCS:1",
101     "AT+BAC=2,3",
102     "OK",
103     "+BCS:3",
104     "AT+BCS=3",
105     "OK"
106 };
107 
108 
109 hfp_test_item_t cc_tests[] = {
110     TEST_SEQUENCE(cc_test1),
111     TEST_SEQUENCE(cc_test2),
112     TEST_SEQUENCE(cc_test3),
113     TEST_SEQUENCE(cc_test4)
114 };
115 
116 /* Incoming call sequence */
117 const char * ic_test1[] = {
118     "+CIEV:3,1",
119     "BCS:1",
120     "AT+BCS=1",
121     "OK"
122 };
123 
124 const char * ic_alert_test1[] = {
125     "ATA",
126     "OK",
127     "+CIEV:2,1", // call = 1
128     "+CIEV:3,0",
129 };
130 
131 const char * ic_ag_terminates_call[] = {
132     // AG terminates call
133     "+CIEV:2,0"
134 };
135 
136 const char * ic_hf_terminates_call[] = {
137     // HF terminates call
138     "AT+CHUP",
139     "OK",
140     "+CIEV:2,0"
141 };
142 
143 hfp_test_item_t ic_tests[] = {
144     TEST_SEQUENCE(ic_test1)
145 };
146 
147 /* PTS test sequences - SLC Group */
148 
149 const char * TC_AG_SLC_BV_01_C[] = {
150     "USER:a",
151     "AT+BRSF=127" ,
152     "+BRSF:4079" ,
153     "OK" ,
154     "AT+CIND=?" ,
155     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
156     "OK" ,
157     "AT+CIND?" ,
158     "+CIND:1,0,0,3,5,0,0" ,
159     "OK" ,
160     "AT+CMER=3,0,0,1" ,
161     "OK" ,
162     "AT+CHLD=?" ,
163     "+CHLD:(1,1x,2,2x,3)" ,
164     "OK" ,
165     "AT+VGS=9" ,
166     "OK" ,
167     "AT+VGM=9" ,
168     "OK" ,
169     "AT+CLIP=1" ,
170     "OK" ,
171     "AT+CCWA=1" ,
172     "OK" ,
173     "AT+CMEE=1" ,
174     "OK"
175 };
176 
177 const char * TC_AG_SLC_BV_02_C[] = {
178     "USER:a",
179     "AT+BRSF=127" ,
180     "+BRSF:4079" ,
181     "OK" ,
182     "AT+CIND=?" ,
183     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
184     "OK" ,
185     "AT+CIND?" ,
186     "+CIND:1,0,0,3,5,0,0" ,
187     "OK" ,
188     "AT+CMER=3,0,0,1" ,
189     "OK" ,
190     "AT+CHLD=?" ,
191     "+CHLD:(1,1x,2,2x,3)" ,
192     "OK" ,
193     "AT+VGS=9" ,
194     "OK" ,
195     "AT+VGM=9" ,
196     "OK" ,
197     "AT+CLIP=1" ,
198     "OK" ,
199     "AT+CCWA=1" ,
200     "OK" ,
201     "AT+CMEE=1" ,
202     "OK"
203 };
204 
205 const char * TC_AG_SLC_BV_03_C[] = {
206     "USER:a",
207     "AT+BRSF=125" ,
208     "+BRSF:4079" ,
209     "OK" ,
210     "AT+CIND=?" ,
211     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
212     "OK" ,
213     "AT+CIND?" ,
214     "+CIND:1,0,0,3,5,0,0" ,
215     "OK" ,
216     "AT+CMER=3,0,0,1" ,
217     "OK" ,
218     "AT+VGS=9" ,
219     "OK" ,
220     "AT+VGM=9" ,
221     "OK" ,
222     "AT+CLIP=1" ,
223     "OK" ,
224     "AT+CCWA=1" ,
225     "OK" ,
226     "AT+CMEE=1" ,
227     "OK"
228 };
229 
230 const char * TC_AG_SLC_BV_04_C[] = {
231     "USER:a",
232     "AT+BRSF=125" ,
233     "+BRSF:4079" ,
234     "OK" ,
235     "AT+CIND=?" ,
236     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
237     "OK" ,
238     "AT+CIND?" ,
239     "+CIND:1,0,0,3,5,0,0" ,
240     "OK" ,
241     "AT+CMER=3,0,0,1" ,
242     "OK" ,
243     "AT+VGS=9" ,
244     "OK" ,
245     "AT+VGM=9" ,
246     "OK" ,
247     "AT+CLIP=1" ,
248     "OK" ,
249     "AT+CCWA=1" ,
250     "OK" ,
251     "AT+CMEE=1" ,
252     "OK"
253 };
254 
255 const char * TC_AG_SLC_BV_05_I[] = {
256     "USER:a",
257     "AT+BRSF=255" ,
258     "+BRSF:4079" ,
259     "OK" ,
260     "AT+BAC=1" ,
261     "OK" ,
262     "AT+CIND=?" ,
263     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
264     "OK" ,
265     "AT+CIND?" ,
266     "+CIND:1,0,0,3,5,0,0" ,
267     "OK" ,
268     "AT+CMER=3,0,0,1" ,
269     "OK" ,
270     "AT+CHLD=?" ,
271     "+CHLD:(1,1x,2,2x,3)" ,
272     "OK" ,
273     "AT+VGS=9" ,
274     "OK" ,
275     "AT+VGM=9" ,
276     "OK" ,
277     "AT+CLIP=1" ,
278     "OK" ,
279     "AT+CCWA=1" ,
280     "OK" ,
281     "AT+CMEE=1" ,
282     "OK"
283 };
284 
285 const char * TC_AG_SLC_BV_06_I[] = {
286     "USER:a",
287     "AT+BRSF=255" ,
288     "+BRSF:4079" ,
289     "OK" ,
290     "AT+BAC=1" ,
291     "OK" ,
292     "AT+CIND=?" ,
293     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
294     "OK" ,
295     "AT+CIND?" ,
296     "+CIND:1,0,0,3,5,0,0" ,
297     "OK" ,
298     "AT+CMER=3,0,0,1" ,
299     "OK" ,
300     "AT+CHLD=?" ,
301     "+CHLD:(1,1x,2,2x,3)" ,
302     "OK" ,
303     "AT+VGS=9" ,
304     "OK" ,
305     "AT+VGM=9" ,
306     "OK" ,
307     "AT+CLIP=1" ,
308     "OK" ,
309     "AT+CCWA=1" ,
310     "OK" ,
311     "AT+CMEE=1" ,
312     "OK"
313 };
314 
315 const char * TC_AG_SLC_BV_07_I[] = {
316     "USER:a",
317     "AT+BRSF=127" ,
318     "+BRSF:4079" ,
319     "OK" ,
320     "AT+CIND=?" ,
321     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
322     "OK" ,
323     "AT+CIND?" ,
324     "+CIND:1,0,0,3,5,0,0" ,
325     "OK" ,
326     "AT+CMER=3,0,0,1" ,
327     "OK" ,
328     "AT+CHLD=?" ,
329     "+CHLD:(1,1x,2,2x,3)" ,
330     "OK" ,
331     "AT+VGS=9" ,
332     "OK" ,
333     "AT+VGM=9" ,
334     "OK" ,
335     "AT+CLIP=1" ,
336     "OK" ,
337     "AT+CCWA=1" ,
338     "OK" ,
339     "AT+CMEE=1" ,
340     "OK"
341 };
342 
343 const char * TC_AG_SLC_BV_09_I[] = {
344     "USER:a",
345     "AT+BRSF=895" ,
346     "+BRSF:4079" ,
347     "OK" ,
348     "AT+CIND=?" ,
349     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
350     "OK" ,
351     "AT+CIND?" ,
352     "+CIND:1,0,0,3,5,0,0" ,
353     "OK" ,
354     "AT+CMER=3,0,0,1" ,
355     "OK" ,
356     "AT+CHLD=?" ,
357     "+CHLD:(1,1x,2,2x,3)" ,
358     "OK" ,
359     "AT+BIND=1,99" ,
360     "OK" ,
361     "AT+BIND=?" ,
362     "+BIND:(1,2,)" ,
363     "OK" ,
364     "AT+BIND?" ,
365     "+BIND:1,1",
366     "+BIND:2,1" ,
367     "OK" ,
368     "AT+VGS=9" ,
369     "OK" ,
370     "AT+VGM=9" ,
371     "OK" ,
372     "AT+CLIP=1" ,
373     "OK" ,
374     "AT+CCWA=1" ,
375     "OK" ,
376     "AT+CMEE=1" ,
377     "OK"
378 };
379 
380 const char * TC_AG_SLC_BV_10_I[] = {
381     "USER:a",
382     "AT+BRSF=127" ,
383     "+BRSF:4079" ,
384     "OK" ,
385     "AT+CIND=?" ,
386     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
387     "OK" ,
388     "AT+CIND?" ,
389     "+CIND:1,0,0,3,5,0,0" ,
390     "OK" ,
391     "AT+CMER=3,0,0,1" ,
392     "OK" ,
393     "AT+CHLD=?" ,
394     "+CHLD:(1,1x,2,2x,3)" ,
395     "OK" ,
396     "AT+VGS=9" ,
397     "OK" ,
398     "AT+VGM=9" ,
399     "OK" ,
400     "AT+CLIP=1" ,
401     "OK" ,
402     "AT+CCWA=1" ,
403     "OK" ,
404     "AT+CMEE=1" ,
405     "OK"
406 };
407 
408 hfp_test_item_t pts_ag_slc_tests[] = {
409     TEST_SEQUENCE(TC_AG_SLC_BV_01_C),
410     TEST_SEQUENCE(TC_AG_SLC_BV_02_C),
411     TEST_SEQUENCE(TC_AG_SLC_BV_03_C),
412     TEST_SEQUENCE(TC_AG_SLC_BV_04_C),
413     TEST_SEQUENCE(TC_AG_SLC_BV_05_I),
414     TEST_SEQUENCE(TC_AG_SLC_BV_06_I),
415     TEST_SEQUENCE(TC_AG_SLC_BV_07_I),
416     TEST_SEQUENCE(TC_AG_SLC_BV_09_I),
417     TEST_SEQUENCE(TC_AG_SLC_BV_10_I)
418 };
419 
420 
421 const char * TC_HF_SLC_BV_01_C[] = {
422     "AT+BRSF=951" ,
423     "+BRSF: 511" ,
424     "OK" ,
425     "AT+CIND=?" ,
426     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
427     "OK" ,
428     "AT+CIND?" ,
429     "+CIND: 1,0,0,0,5,0,5" ,
430     "OK" ,
431     "AT+CMER=3,0,0,1" ,
432     "OK" ,
433     "AT+CHLD=?" ,
434     "+CHLD: (0,1,1x,2,2x,3,4)" ,
435     "OK" ,
436     "USER:Q",
437     "+BSIR: 0" ,
438     "USER:O", // 'AT+VGS=9" ,
439     "OK" ,
440     "OK"
441 };
442 
443 const char * TC_HF_SLC_BV_02_C[] = {
444     "AT+BRSF=951" ,
445     "+BRSF: 511" ,
446     "OK" ,
447     "AT+CIND=?" ,
448     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
449     "OK" ,
450     "AT+CIND?" ,
451     "+CIND: 1,0,0,0,5,0,5" ,
452     "OK" ,
453     "AT+CMER=3,0,0,1" ,
454     "OK" ,
455     "AT+CHLD=?" ,
456     "+CHLD: (0,1,1x,2,2x,3,4)" ,
457     "OK" ,
458     "USER:Q", // "AT+VGM=9" ,
459     "USER:O", // 'AT+VGS=9" ,
460     "+BSIR: 0" ,
461     "OK" ,
462     "OK"
463 };
464 
465 const char * TC_HF_SLC_BV_03_C[] = {
466     "AT+BRSF=951" ,
467     "+BRSF: 510" ,
468     "OK" ,
469     "AT+CIND=?" ,
470     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
471     "OK" ,
472     "AT+CIND?" ,
473     "+CIND: 1,0,0,0,5,0,5" ,
474     "OK" ,
475     "AT+CMER=3,0,0,1" ,
476     "OK" ,
477     "USER:Q", // "AT+VGM=9" ,
478     "USER:O", // 'AT+VGS=9" ,
479     "+BSIR: 0" ,
480     "OK" ,
481     "OK"
482 };
483 
484 const char * TC_HF_SLC_BV_04_C[] = {
485     "AT+BRSF=951" ,
486     "+BRSF: 510" ,
487     "OK" ,
488     "AT+CIND=?" ,
489     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
490     "OK" ,
491     "AT+CIND?" ,
492     "+CIND: 1,0,0,0,5,0,5" ,
493     "OK" ,
494     "AT+CMER=3,0,0,1" ,
495     "OK" ,
496     "USER:Q", // "AT+VGM=9" ,
497     "USER:O", // 'AT+VGS=9" ,
498     "+BSIR: 0" ,
499     "OK" ,
500     "OK"
501 };
502 
503 const char * TC_HF_SLC_BV_05_I[] = {
504     "AT+BRSF=951" ,
505     "+BRSF: 1023" ,
506     "OK" ,
507     "AT+BAC=1,2" ,
508     "OK" ,
509     "AT+CIND=?" ,
510     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
511     "OK" ,
512     "AT+CIND?" ,
513     "+CIND: 1,0,0,0,5,0,5" ,
514     "OK" ,
515     "AT+CMER=3,0,0,1" ,
516     "OK" ,
517     "AT+CHLD=?" ,
518     "+CHLD: (0,1,1x,2,2x,3,4)" ,
519     "OK" ,
520     "USER:Q", // "AT+VGM=9" ,
521     "USER:O", // 'AT+VGS=9" ,
522     "+BSIR: 0" ,
523     "OK" ,
524     "OK"
525 };
526 
527 const char * TC_HF_SLC_BV_06_I[] = {
528     "AT+BRSF=951" ,
529     "+BRSF: 1023" ,
530     "OK" ,
531     "AT+BAC=1,2" ,
532     "OK" ,
533     "AT+CIND=?" ,
534     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
535     "OK" ,
536     "AT+CIND?" ,
537     "+CIND: 1,0,0,0,5,0,5" ,
538     "OK" ,
539     "AT+CMER=3,0,0,1" ,
540     "OK" ,
541     "AT+CHLD=?" ,
542     "+CHLD: (0,1,1x,2,2x,3,4)" ,
543     "OK" ,
544     "USER:Q", // "AT+VGM=9" ,
545     "USER:O", // 'AT+VGS=9" ,
546     "+BSIR: 0" ,
547     "OK" ,
548     "OK"
549 };
550 
551 const char * TC_HF_SLC_BV_08_I[] = {
552     "AT+BRSF=951" ,
553     "+BRSF: 511" ,
554     "OK" ,
555     "AT+CIND=?" ,
556     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
557     "OK" ,
558     "AT+CIND?" ,
559     "+CIND: 1,0,0,0,5,0,5" ,
560     "OK" ,
561     "AT+CMER=3,0,0,1" ,
562     "OK" ,
563     "AT+CHLD=?" ,
564     "+CHLD: (0,1,1x,2,2x,3,4)" ,
565     "OK" ,
566     "USER:Q", // "AT+VGM=9" ,
567     "USER:O", // 'AT+VGS=9" ,
568     "+BSIR: 0" ,
569     "OK" ,
570     "OK"
571 };
572 
573 const char * TC_HF_SLC_BV_09_I[] = {
574     "AT+BRSF=951" ,
575     "+BRSF: 3583" ,
576     "OK" ,
577     "AT+CIND=?" ,
578     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
579     "OK" ,
580     "AT+CIND?" ,
581     "+CIND: 1,0,0,0,5,0,5" ,
582     "OK" ,
583     "AT+CMER=3,0,0,1" ,
584     "OK" ,
585     "AT+CHLD=?" ,
586     "+CHLD: (0,1,1x,2,2x,3,4)" ,
587     "OK" ,
588     "AT+BIND=1" ,
589     "OK" ,
590     "AT+BIND=?" ,
591     "+BIND: (1)" ,
592     "OK" ,
593     "AT+BIND?" ,
594     "+BIND: 1,1" ,
595     "OK" ,
596     "USER:Q", // "AT+VGM=9" ,
597     "USER:O", // 'AT+VGS=9" ,
598     "+BSIR: 0" ,
599     "OK" ,
600     "OK"
601 };
602 
603 const char * TC_HF_SLC_BV_10_I[] = {
604     "AT+BRSF=951" ,
605     "+BRSF: 511" ,
606     "OK" ,
607     "AT+CIND=?" ,
608     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
609     "OK" ,
610     "AT+CIND?" ,
611     "+CIND: 1,0,0,0,5,0,5" ,
612     "OK" ,
613     "AT+CMER=3,0,0,1" ,
614     "OK" ,
615     "AT+CHLD=?" ,
616     "+CHLD: (0,1,1x,2,2x,3,4)" ,
617     "OK" ,
618     "USER:Q", // "AT+VGM=9" ,
619     "USER:O", // 'AT+VGS=9" ,
620     "+BSIR: 0" ,
621     "OK" ,
622     "OK"
623 };
624 
625 hfp_test_item_t pts_hf_slc_tests[] = {
626     TEST_SEQUENCE(TC_HF_SLC_BV_01_C),
627     TEST_SEQUENCE(TC_HF_SLC_BV_02_C),
628     TEST_SEQUENCE(TC_HF_SLC_BV_03_C),
629     TEST_SEQUENCE(TC_HF_SLC_BV_04_C),
630     TEST_SEQUENCE(TC_HF_SLC_BV_05_I),
631     TEST_SEQUENCE(TC_HF_SLC_BV_06_I),
632     TEST_SEQUENCE(TC_HF_SLC_BV_08_I),
633     TEST_SEQUENCE(TC_HF_SLC_BV_09_I),
634     TEST_SEQUENCE(TC_HF_SLC_BV_10_I),
635 };
636 
637 
638 /* PTS test sequences - ATA Group */
639 
640 const char * TC_AG_ATA_BV_01_I[] = {
641     "USER:a",
642     "AT+BRSF=127" ,
643     "+BRSF:4079" ,
644     "OK" ,
645     "AT+CIND=?" ,
646     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
647     "OK" ,
648     "AT+CIND?" ,
649     "+CIND:1,0,0,3,5,0,0" ,
650     "OK" ,
651     "AT+CMER=3,0,0,1" ,
652     "OK" ,
653     "AT+CHLD=?" ,
654     "+CHLD:(1,1x,2,2x,3)" ,
655     "OK" ,
656     "AT+VGS=9" ,
657     "OK" ,
658     "AT+VGM=9" ,
659     "OK" ,
660     "AT+CLIP=1" ,
661     "OK" ,
662     "AT+CCWA=1" ,
663     "OK" ,
664     "AT+CMEE=1" ,
665     "OK" ,
666     "USER:c",
667     "+CIEV:3,1" ,
668     "RING" ,
669     "+CLIP: \"1234567\",129" ,
670     "ATA" ,
671     "OK" ,
672     "+CIEV:2,1" ,
673     "+CIEV:3,0" ,
674     "USER:C",
675     "USER:B",
676     "USER:t",
677     "+CIEV:2,0"
678 };
679 
680 const char * TC_AG_ATA_BV_02_I[] = {
681     "USER:a",
682     "AT+BRSF=127" ,
683     "+BRSF:4079" ,
684     "OK" ,
685     "AT+CIND=?" ,
686     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
687     "OK" ,
688     "AT+CIND?" ,
689     "+CIND:1,0,0,3,5,0,0" ,
690     "OK" ,
691     "AT+CMER=3,0,0,1" ,
692     "OK" ,
693     "AT+CHLD=?" ,
694     "+CHLD:(1,1x,2,2x,3)" ,
695     "OK" ,
696     "AT+VGS=9" ,
697     "OK" ,
698     "AT+VGM=9" ,
699     "OK" ,
700     "AT+CLIP=1" ,
701     "OK" ,
702     "AT+CCWA=1" ,
703     "OK" ,
704     "AT+CMEE=1" ,
705     "OK" ,
706     "USER:c",
707     "+CIEV:3,1" ,
708     "RING" ,
709     "+CLIP: \"1234567\",129" ,
710     "ATA" ,
711     "OK" ,
712     "+CIEV:2,1" ,
713     "+CIEV:3,0" ,
714     "USER:C",
715     "USER:t",
716     "+CIEV:2,0"
717 };
718 
719 hfp_test_item_t pts_ag_ata_tests[] = {
720     TEST_SEQUENCE(TC_AG_ATA_BV_01_I),
721     TEST_SEQUENCE(TC_AG_ATA_BV_02_I)
722 };
723 
724 const char * TC_HF_ATA_BV_01_I[] = {
725     "AT+BRSF=951" ,
726     "+BRSF: 511" ,
727     "OK" ,
728     "AT+CIND=?" ,
729     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
730     "OK" ,
731     "AT+CIND?" ,
732     "+CIND: 1,0,0,0,5,0,5" ,
733     "OK" ,
734     "AT+CMER=3,0,0,1" ,
735     "OK" ,
736     "AT+CHLD=?" ,
737     "+CHLD: (0,1,1x,2,2x,3,4)" ,
738     "OK" ,
739     "AT+VGM=9" ,
740     "AT+VGS=9" ,
741     "+BSIR: 0" ,
742     "OK" ,
743     "OK" ,
744     "+CIEV: 3,1" ,
745     "RING" ,
746     "RING" ,
747     "RING" ,
748     "USER:f", // "ATA" ,
749     "OK" ,
750     "+CIEV: 2,1" ,
751     "+CIEV: 3,0" ,
752     "USER:B",
753     "+CIEV: 2,0"
754 };
755 
756 const char * TC_HF_ATA_BV_02_I[] = {
757     "AT+BRSF=951" ,
758     "+BRSF: 511" ,
759     "OK" ,
760     "AT+CIND=?" ,
761     "+CIND: (\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"callheld\",(0-2)),(\"signal\",(0-5)),(\"roam\",(0-1)),(\"battchg\",(0-5))" ,
762     "OK" ,
763     "AT+CIND?" ,
764     "+CIND: 1,0,0,0,5,0,5" ,
765     "OK" ,
766     "AT+CMER=3,0,0,1" ,
767     "OK" ,
768     "AT+CHLD=?" ,
769     "+CHLD: (0,1,1x,2,2x,3,4)" ,
770     "OK" ,
771     "AT+VGM=9" ,
772     "AT+VGS=9" ,
773     "+BSIR: 0" ,
774     "OK" ,
775     "OK" ,
776     "+CIEV: 3,1" ,
777     "RING" ,
778     "RING" ,
779     "USER:f", // "ATA" ,
780     "OK" ,
781     "+CIEV: 2,1" ,
782     "+CIEV: 3,0" ,
783     "USER:t"
784 };
785 
786 hfp_test_item_t pts_hf_ata_tests[] = {
787     TEST_SEQUENCE(TC_HF_ATA_BV_01_I),
788     TEST_SEQUENCE(TC_HF_ATA_BV_02_I)
789 };
790 
791 
792 /* PTS test sequences - TWC Group */
793 
794 const char * TC_AG_TWC_BV_01_I[] = {
795     "USER:a",
796     "AT+BRSF=127" ,
797     "+BRSF:4079" ,
798     "OK" ,
799     "AT+CIND=?" ,
800     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
801     "OK" ,
802     "AT+CIND?" ,
803     "+CIND:1,0,0,3,5,0,0" ,
804     "OK" ,
805     "AT+CMER=3,0,0,1" ,
806     "OK" ,
807     "AT+CHLD=?" ,
808     "+CHLD:(1,1x,2,2x,3)" ,
809     "OK" ,
810     "AT+VGS=9" ,
811     "OK" ,
812     "AT+VGM=9" ,
813     "OK" ,
814     "AT+CLIP=1" ,
815     "OK" ,
816     "AT+CCWA=1" ,
817     "OK" ,
818     "AT+CMEE=1" ,
819     "OK" ,
820     "USER:c",
821     "+CIEV:3,1" ,
822     "RING" ,
823     "+CLIP: \"1234567\",129" ,
824     "ATA" ,
825     "OK" ,
826     "+CIEV:2,1" ,
827     "+CIEV:3,0" ,
828     "USER:m",
829     "+CCWA: \"7654321\",129" ,
830     "+CIEV:3,1" ,
831     "AT+CHLD=0" ,
832     "OK" ,
833     "+CIEV:3,0" ,
834     "USER:C",
835     "+CIEV:2,0",
836     "USER:t"
837 };
838 
839 const char * TC_AG_TWC_BV_02_I[] = {
840     "USER:a",
841     "AT+BRSF=127" ,
842     "+BRSF:4079" ,
843     "OK" ,
844     "AT+CIND=?" ,
845     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
846     "OK" ,
847     "AT+CIND?" ,
848     "+CIND:1,0,0,3,5,0,0" ,
849     "OK" ,
850     "AT+CMER=3,0,0,1" ,
851     "OK" ,
852     "AT+CHLD=?" ,
853     "+CHLD:(1,1x,2,2x,3)" ,
854     "OK" ,
855     "AT+VGS=9" ,
856     "OK" ,
857     "AT+VGM=9" ,
858     "OK" ,
859     "AT+CLIP=1" ,
860     "OK" ,
861     "AT+CCWA=1" ,
862     "OK" ,
863     "AT+CMEE=1" ,
864     "OK" ,
865     "USER:c",
866     "+CIEV:3,1" ,
867     "RING" ,
868     "+CLIP: \"1234567\",129" ,
869     "ATA" ,
870     "OK" ,
871     "+CIEV:2,1" ,
872     "+CIEV:3,0" ,
873     "USER:m",
874     "+CCWA: \"7654321\",129" ,
875     "+CIEV:3,1" ,
876     "AT+CHLD=1" ,
877     "OK" ,
878     "+CIEV:3,0" ,
879     "USER:C",
880     "+CIEV:2,0",
881     "USER:t"
882 };
883 
884 const char * TC_AG_TWC_BV_03_I[] = {
885     "USER:a",
886     "AT+BRSF=127" ,
887     "+BRSF:4079" ,
888     "OK" ,
889     "AT+CIND=?" ,
890     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
891     "OK" ,
892     "AT+CIND?" ,
893     "+CIND:1,0,0,3,5,0,0" ,
894     "OK" ,
895     "AT+CMER=3,0,0,1" ,
896     "OK" ,
897     "AT+CHLD=?" ,
898     "+CHLD:(1,1x,2,2x,3)" ,
899     "OK" ,
900     "AT+VGS=9" ,
901     "OK" ,
902     "AT+VGM=9" ,
903     "OK" ,
904     "AT+CLIP=1" ,
905     "OK" ,
906     "AT+CCWA=1" ,
907     "OK" ,
908     "AT+CMEE=1" ,
909     "OK" ,
910     "USER:c",
911     "+CIEV:3,1" ,
912     "RING" ,
913     "+CLIP: \"1234567\",129" ,
914     "ATA" ,
915     "OK" ,
916     "+CIEV:2,1" ,
917     "+CIEV:3,0" ,
918     "USER:m",
919     "+CCWA: \"7654321\",129" ,
920     "+CIEV:3,1" ,
921     "AT+CHLD=2" ,
922     "OK" ,
923     "+CIEV:3,0" ,
924     "+CIEV:7,1" ,
925     "AT+CHLD=2" ,
926     "OK" ,
927     "+CIEV:7,1" ,
928     "AT+CHLD=1" ,
929     "OK" ,
930     "+CIEV:7,0" ,
931     "USER:C",
932     "+CIEV:2,0",
933     "USER:t"
934 };
935 
936 const char * TC_AG_TWC_BV_04_I[] = {
937     "USER:c",
938     "USER:e",
939     "USER:m",
940     "USER:e",
941     "USER:a",
942     "AT+BRSF=127" ,
943     "+BRSF:4079" ,
944     "OK" ,
945     "AT+CIND=?" ,
946     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
947     "OK" ,
948     "AT+CIND?" ,
949     "+CIND:1,1,0,3,5,0,1" ,
950     "OK" ,
951     "AT+CMER=3,0,0,1" ,
952     "OK" ,
953     "AT+CHLD=?" ,
954     "+CHLD:(1,1x,2,2x,3)" ,
955     "OK" ,
956     "AT+VGS=9" ,
957     "OK" ,
958     "AT+VGM=9" ,
959     "OK" ,
960     "AT+CLIP=1" ,
961     "OK" ,
962     "AT+CCWA=1" ,
963     "OK" ,
964     "AT+CMEE=1" ,
965     "OK" ,
966     "AT+CHLD=3" ,
967     "OK" ,
968     "USER:C",
969     "+CIEV:7,0" ,
970     "+CIEV:2,0",
971     "USER:t"
972 };
973 
974 const char * TC_AG_TWC_BV_05_I[] = {
975     "USER:a" ,
976     "AT+BRSF=127" ,
977     "+BRSF:4079" ,
978     "OK" ,
979     "AT+CIND=?" ,
980     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
981     "OK" ,
982     "AT+CIND?" ,
983     "+CIND:1,0,0,3,5,0,0" ,
984     "OK" ,
985     "AT+CMER=3,0,0,1" ,
986     "OK" ,
987     "AT+CHLD=?" ,
988     "+CHLD:(1,1x,2,2x,3)" ,
989     "OK" ,
990     "AT+VGS=9" ,
991     "OK" ,
992     "AT+VGM=9" ,
993     "OK" ,
994     "AT+CLIP=1" ,
995     "OK" ,
996     "AT+CCWA=1" ,
997     "OK" ,
998     "AT+CMEE=1" ,
999     "OK" ,
1000     "USER:c" ,
1001     "+CIEV:3,1" ,
1002     "RING" ,
1003     "+CLIP: \"1234567\",129" ,
1004     "ATA" ,
1005     "OK" ,
1006     "+CIEV:2,1" ,
1007     "+CIEV:3,0" ,
1008     "AT+BLDN" ,
1009     "+CIEV:7,2" ,
1010     "OK" ,
1011     "+CIEV:3,2" ,
1012     "USER:j" ,
1013     "+CIEV:2,1" ,
1014     "+CIEV:3,0" ,
1015     "+CIEV:7,1" ,
1016     "AT+CHLD=1" ,
1017     "OK" ,
1018     "+CIEV:7,0" ,
1019     "USER:C" ,
1020     "+CIEV:2,0" ,
1021     "USER:t"
1022 };
1023 
1024 const char * TC_AG_TWC_BV_06_I[] = {
1025     "USER:a" ,
1026     "AT+BRSF=127" ,
1027     "+BRSF:4079" ,
1028     "OK" ,
1029     "AT+CIND=?" ,
1030     "+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"battchg\",(0,5)),(\"signal\",(0,5)),(\"roam\",(0,1)),(\"callheld\",(0,2))" ,
1031     "OK" ,
1032     "AT+CIND?" ,
1033     "+CIND:1,0,0,3,5,0,0" ,
1034     "OK" ,
1035     "AT+CMER=3,0,0,1" ,
1036     "OK" ,
1037     "AT+CHLD=?" ,
1038     "+CHLD:(1,1x,2,2x,3)" ,
1039     "OK" ,
1040     "AT+VGS=9" ,
1041     "OK" ,
1042     "AT+VGM=9" ,
1043     "OK" ,
1044     "AT+CLIP=1" ,
1045     "OK" ,
1046     "AT+CCWA=1" ,
1047     "OK" ,
1048     "AT+CMEE=1" ,
1049     "OK" ,
1050     "USER:c" ,
1051     "+CIEV:3,1" ,
1052     "RING" ,
1053     "+CLIP: \"1234567\",129" ,
1054     "ATA" ,
1055     "OK" ,
1056     "+CIEV:2,1" ,
1057     "+CIEV:3,0" ,
1058     "USER:m" ,
1059     "+CCWA: \"7654321\",129" ,
1060     "+CIEV:3,1" ,
1061     "AT+CHLD=2" ,
1062     "OK" ,
1063     "+CIEV:3,0" ,
1064     "+CIEV:7,1" ,
1065     "AT+CHLD=4" ,
1066     "OK" ,
1067     "+CIEV:2,0" ,
1068     "+CIEV:7,0" ,
1069     "USER:B" ,
1070     "USER:A"
1071 };
1072 
1073 hfp_test_item_t pts_ag_twc_tests[] = {
1074     TEST_SEQUENCE(TC_AG_TWC_BV_01_I),
1075     TEST_SEQUENCE(TC_AG_TWC_BV_02_I),
1076     TEST_SEQUENCE(TC_AG_TWC_BV_03_I),
1077     TEST_SEQUENCE(TC_AG_TWC_BV_04_I),
1078     TEST_SEQUENCE(TC_AG_TWC_BV_05_I),
1079     TEST_SEQUENCE(TC_AG_TWC_BV_06_I)
1080 };
1081 
1082 
1083 const char * TC_HF_TWC_BV_01_I[] = {
1084 
1085 };
1086 const char * TC_HF_TWC_BV_02_I[] = {
1087 
1088 };
1089 const char * TC_HF_TWC_BV_03_I[] = {
1090 
1091 };
1092 const char * TC_HF_TWC_BV_04_I[] = {
1093 
1094 };
1095 const char * TC_HF_TWC_BV_05_I[] = {
1096 
1097 };
1098 const char * TC_HF_TWC_BV_06_I[] = {
1099 
1100 };
1101 hfp_test_item_t pts_hf_twc_tests[] = {
1102     TEST_SEQUENCE(TC_HF_TWC_BV_01_I),
1103     TEST_SEQUENCE(TC_HF_TWC_BV_02_I),
1104     TEST_SEQUENCE(TC_HF_TWC_BV_03_I),
1105     TEST_SEQUENCE(TC_HF_TWC_BV_04_I),
1106     TEST_SEQUENCE(TC_HF_TWC_BV_05_I),
1107     TEST_SEQUENCE(TC_HF_TWC_BV_06_I)
1108 };
1109 
1110 
1111 /* PTS test sequences - ECS Group */
1112 const char * TC_AG_ECS_BV_01_I[] = {};
1113 const char * TC_AG_ECS_BV_02_I[] = {};
1114 const char * TC_AG_ECS_BV_03_I[] = {};
1115 
1116 
1117 hfp_test_item_t pts_ag_ecs_tests[] = {
1118     TEST_SEQUENCE(TC_AG_ECS_BV_01_I),
1119     TEST_SEQUENCE(TC_AG_ECS_BV_02_I),
1120     TEST_SEQUENCE(TC_AG_ECS_BV_03_I)
1121 };
1122 
1123 
1124 const char * TC_HF_ECS_BV_01_I[] = {};
1125 const char * TC_HF_ECS_BV_02_I[] = {};
1126 const char * TC_HF_ECS_BV_03_I[] = {};
1127 
1128 hfp_test_item_t pts_hf_ecs_tests[] = {
1129     TEST_SEQUENCE(TC_HF_ECS_BV_01_I),
1130     TEST_SEQUENCE(TC_HF_ECS_BV_02_I),
1131     TEST_SEQUENCE(TC_HF_ECS_BV_03_I)
1132 };
1133 
1134 
1135 /* PTS test sequences - ECC Group */
1136 const char * TC_AG_ECC_BV_01_I[] = {};
1137 const char * TC_AG_ECC_BV_02_I[] = {};
1138 const char * TC_AG_ECC_BV_03_I[] = {};
1139 const char * TC_AG_ECC_BV_04_I[] = {};
1140 
1141 hfp_test_item_t pts_ag_ecc_tests[] = {
1142     TEST_SEQUENCE(TC_AG_ECC_BV_01_I),
1143     TEST_SEQUENCE(TC_AG_ECC_BV_02_I),
1144     TEST_SEQUENCE(TC_AG_ECC_BV_03_I),
1145     TEST_SEQUENCE(TC_AG_ECC_BV_04_I)
1146 };
1147 
1148 const char * TC_HF_ECC_BV_01_I[] = {};
1149 const char * TC_HF_ECC_BV_02_I[] = {};
1150 const char * TC_HF_ECC_BV_03_I[] = {};
1151 const char * TC_HF_ECC_BV_04_I[] = {};
1152 
1153 hfp_test_item_t pts_hf_ecc_tests[] = {
1154     TEST_SEQUENCE(TC_HF_ECC_BV_01_I),
1155     TEST_SEQUENCE(TC_HF_ECC_BV_02_I),
1156     TEST_SEQUENCE(TC_HF_ECC_BV_03_I),
1157     TEST_SEQUENCE(TC_HF_ECC_BV_04_I)
1158 };
1159 
1160 
1161 /* PTS test sequences - RHH Group */
1162 const char * TC_AG_RHH_BV_01_I[] = {};
1163 const char * TC_AG_RHH_BV_02_I[] = {};
1164 const char * TC_AG_RHH_BV_03_I[] = {};
1165 const char * TC_AG_RHH_BV_04_I[] = {};
1166 const char * TC_AG_RHH_BV_05_I[] = {};
1167 const char * TC_AG_RHH_BV_06_I[] = {};
1168 const char * TC_AG_RHH_BV_07_I[] = {};
1169 const char * TC_AG_RHH_BV_08_I[] = {};
1170 
1171 hfp_test_item_t pts_ag_rhh_tests[] = {
1172     TEST_SEQUENCE(TC_AG_RHH_BV_01_I),
1173     TEST_SEQUENCE(TC_AG_RHH_BV_02_I),
1174     TEST_SEQUENCE(TC_AG_RHH_BV_03_I),
1175     TEST_SEQUENCE(TC_AG_RHH_BV_04_I),
1176     TEST_SEQUENCE(TC_AG_RHH_BV_05_I),
1177     TEST_SEQUENCE(TC_AG_RHH_BV_06_I),
1178     TEST_SEQUENCE(TC_AG_RHH_BV_07_I),
1179     TEST_SEQUENCE(TC_AG_RHH_BV_08_I)
1180 };
1181 
1182 const char * TC_HF_RHH_BV_01_I[] = {};
1183 const char * TC_HF_RHH_BV_02_I[] = {};
1184 const char * TC_HF_RHH_BV_03_I[] = {};
1185 const char * TC_HF_RHH_BV_04_I[] = {};
1186 const char * TC_HF_RHH_BV_05_I[] = {};
1187 const char * TC_HF_RHH_BV_06_I[] = {};
1188 const char * TC_HF_RHH_BV_07_I[] = {};
1189 const char * TC_HF_RHH_BV_08_I[] = {};
1190 
1191 hfp_test_item_t pts_hf_rhh_tests[] = {
1192     TEST_SEQUENCE(TC_HF_RHH_BV_01_I),
1193     TEST_SEQUENCE(TC_HF_RHH_BV_02_I),
1194     TEST_SEQUENCE(TC_HF_RHH_BV_03_I),
1195     TEST_SEQUENCE(TC_HF_RHH_BV_04_I),
1196     TEST_SEQUENCE(TC_HF_RHH_BV_05_I),
1197     TEST_SEQUENCE(TC_HF_RHH_BV_06_I),
1198     TEST_SEQUENCE(TC_HF_RHH_BV_07_I),
1199     TEST_SEQUENCE(TC_HF_RHH_BV_08_I)
1200 };
1201 
1202 /////////
1203 static int test_item_size = sizeof(hfp_test_item_t);
1204 
1205 // CC
1206 int hfp_cc_tests_size(){ return sizeof(cc_tests) /test_item_size;}
1207 hfp_test_item_t * hfp_cc_tests(){ return cc_tests;}
1208 hfp_test_item_t * default_hfp_cc_test(){ return &cc_tests[0];}
1209 
1210 // PTS - SLC Group
1211 int hfp_pts_ag_slc_tests_size(){ return sizeof(pts_ag_slc_tests)/test_item_size;}
1212 hfp_test_item_t * hfp_pts_ag_slc_tests(){ return pts_ag_slc_tests;}
1213 
1214 int hfp_pts_hf_slc_tests_size(){ return sizeof(pts_hf_slc_tests)/test_item_size;}
1215 hfp_test_item_t * hfp_pts_hf_slc_tests(){ return pts_hf_slc_tests;}
1216 
1217 // PTS - ATA Group
1218 int hfp_pts_ag_ata_tests_size(){ return sizeof(pts_ag_ata_tests)/test_item_size;}
1219 hfp_test_item_t * hfp_pts_ag_ata_tests(){ return pts_ag_ata_tests;}
1220 
1221 int hfp_pts_hf_ata_tests_size(){ return sizeof(pts_hf_ata_tests)/test_item_size;}
1222 hfp_test_item_t * hfp_pts_hf_ata_tests(){ return pts_hf_ata_tests;}
1223 
1224 // PTS - TWC Group
1225 int hfp_pts_ag_twc_tests_size(){ return sizeof(pts_ag_twc_tests)/test_item_size;}
1226 hfp_test_item_t * hfp_pts_ag_twc_tests(){ return pts_ag_twc_tests;}
1227 int hfp_pts_hf_twc_tests_size(){ return sizeof(pts_hf_twc_tests)/test_item_size;}
1228 hfp_test_item_t * hfp_pts_hf_twc_tests(){ return pts_hf_twc_tests;}
1229 
1230 // PTS - ECS Group
1231 int hfp_pts_ag_ecs_tests_size(){ return sizeof(pts_ag_ecs_tests)/test_item_size;}
1232 hfp_test_item_t * hfp_pts_ag_ecs_tests(){ return pts_ag_ecs_tests;}
1233 int hfp_pts_hf_ecs_tests_size(){ return sizeof(pts_hf_ecs_tests)/test_item_size;}
1234 hfp_test_item_t * hfp_pts_hf_ecs_tests(){ return pts_hf_ecs_tests;}
1235 
1236 // PTS - ECC Group
1237 int hfp_pts_ag_ecc_tests_size(){ return sizeof(pts_ag_ecc_tests)/test_item_size;}
1238 hfp_test_item_t * hfp_pts_ag_ecc_tests(){ return pts_ag_ecc_tests;}
1239 int hfp_pts_hf_ecc_tests_size(){ return sizeof(pts_hf_ecc_tests)/test_item_size;}
1240 hfp_test_item_t * hfp_pts_hf_ecc_tests(){ return pts_hf_ecc_tests;}
1241 
1242 // PTS - RHH Group
1243 int hfp_pts_ag_rhh_tests_size(){ return sizeof(pts_ag_rhh_tests)/test_item_size;}
1244 hfp_test_item_t * hfp_pts_ag_rhh_tests(){ return pts_ag_rhh_tests;}
1245 int hfp_pts_hf_rhh_tests_size(){ return sizeof(pts_hf_rhh_tests)/test_item_size;}
1246 hfp_test_item_t * hfp_pts_hf_rhh_tests(){ return pts_hf_rhh_tests;}
1247 
1248 
1249