xref: /btstack/test/hfp/hfp_link_settings_test.cpp (revision 0b3a3c364af382b1a7b615e58e118440aa36360f)
11d3bd1e5SMatthias Ringwald #include "CppUTest/TestHarness.h"
21d3bd1e5SMatthias Ringwald #include "CppUTest/CommandLineTestRunner.h"
31d3bd1e5SMatthias Ringwald 
41d3bd1e5SMatthias Ringwald #include "classic/hfp.h"
51d3bd1e5SMatthias Ringwald 
61d3bd1e5SMatthias Ringwald #include "mock.h"
71d3bd1e5SMatthias Ringwald 
81d3bd1e5SMatthias Ringwald TEST_GROUP(HFPLinkSettings){
91d3bd1e5SMatthias Ringwald         void setup(void){
101d3bd1e5SMatthias Ringwald             hfp_set_sco_packet_types(SCO_PACKET_TYPES_ALL);
111d3bd1e5SMatthias Ringwald         }
121d3bd1e5SMatthias Ringwald         void teardown(void){
131d3bd1e5SMatthias Ringwald         }
141d3bd1e5SMatthias Ringwald };
151d3bd1e5SMatthias Ringwald 
161d3bd1e5SMatthias Ringwald // initial setting
171d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, NONE){
18*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC));
191d3bd1e5SMatthias Ringwald }
201d3bd1e5SMatthias Ringwald 
211d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1){
22*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
23*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD));
241d3bd1e5SMatthias Ringwald }
251d3bd1e5SMatthias Ringwald 
261d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3){
27*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD));
281d3bd1e5SMatthias Ringwald }
291d3bd1e5SMatthias Ringwald 
301d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4){
31*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
321d3bd1e5SMatthias Ringwald }
331d3bd1e5SMatthias Ringwald 
341d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2){
35*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC));
361d3bd1e5SMatthias Ringwald }
371d3bd1e5SMatthias Ringwald 
381d3bd1e5SMatthias Ringwald // regular transition
391d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T2_T1){
40*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_T2, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC));
411d3bd1e5SMatthias Ringwald }
421d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, T1_NONE){
43*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_NONE, hfp_next_link_setting(HFP_LINK_SETTINGS_T1, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC));
441d3bd1e5SMatthias Ringwald }
451d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S4_S3){
46*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_S4, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
471d3bd1e5SMatthias Ringwald }
481d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S3_S2){
49*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S2, hfp_next_link_setting(HFP_LINK_SETTINGS_S3, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
501d3bd1e5SMatthias Ringwald }
511d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, S2_S1){
52*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_S2, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
531d3bd1e5SMatthias Ringwald }
541d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, D1_D0){
55*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
56*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_D1, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD));
571d3bd1e5SMatthias Ringwald }
581d3bd1e5SMatthias Ringwald 
591d3bd1e5SMatthias Ringwald // initial settings based on packet types
601d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV1){
611d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV1);
62*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_SCO, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
63*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D0, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_SCO, true, HFP_CODEC_CVSD));
641d3bd1e5SMatthias Ringwald }
651d3bd1e5SMatthias Ringwald 
661d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, HV3){
671d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_HV3);
68*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD));
691d3bd1e5SMatthias Ringwald }
701d3bd1e5SMatthias Ringwald 
711d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, EV3){
721d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_EV3);
73*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_CVSD));
74*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true, HFP_CODEC_MSBC));
751d3bd1e5SMatthias Ringwald }
761d3bd1e5SMatthias Ringwald 
771d3bd1e5SMatthias Ringwald TEST(HFPLinkSettings, 2EV3){
781d3bd1e5SMatthias Ringwald     hfp_set_sco_packet_types(SCO_PACKET_TYPES_2EV3);
79*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S3, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, false, HFP_CODEC_CVSD));
80*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true,  HFP_CODEC_CVSD));
81*0b3a3c36SMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_next_link_setting(HFP_LINK_SETTINGS_NONE, SCO_PACKET_TYPES_ALL, SCO_PACKET_TYPES_ALL, true,  HFP_CODEC_MSBC));
821d3bd1e5SMatthias Ringwald }
831d3bd1e5SMatthias Ringwald 
84937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_SCO_NOSC){
85937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_D1, hfp_safe_settings_for_context(false, HFP_CODEC_CVSD, false));
86937f816cSMatthias Ringwald }
87937f816cSMatthias Ringwald 
88937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_NOSC){
89937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S1, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, false));
90937f816cSMatthias Ringwald }
91937f816cSMatthias Ringwald 
92937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_CVSD_eSCO_SC){
93937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_S4, hfp_safe_settings_for_context(true, HFP_CODEC_CVSD, true));
94937f816cSMatthias Ringwald }
95937f816cSMatthias Ringwald 
96937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_NOSC){
97937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T1, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, false));
98937f816cSMatthias Ringwald }
99937f816cSMatthias Ringwald 
100937f816cSMatthias Ringwald TEST(HFPLinkSettings, Safe_MSBC_eSCO_SC){
101937f816cSMatthias Ringwald     CHECK_EQUAL(HFP_LINK_SETTINGS_T2, hfp_safe_settings_for_context(true, HFP_CODEC_MSBC, true));
102937f816cSMatthias Ringwald }
1031d3bd1e5SMatthias Ringwald 
1041d3bd1e5SMatthias Ringwald int main (int argc, const char * argv[]){
1051d3bd1e5SMatthias Ringwald     return CommandLineTestRunner::RunAllTests(argc, argv);
1061d3bd1e5SMatthias Ringwald }
107