tuner_ctl_test() will now test both digital and analog services. There are a total of 98 channels, 18 digital and 81 analog with digital proceeding analog. Signed-off-by: Jiunn Chang <c0d1n61at3@xxxxxxxxx> --- utils/cec-compliance/cec-test.cpp | 50 +++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/utils/cec-compliance/cec-test.cpp b/utils/cec-compliance/cec-test.cpp index 1fd0ea92..bc89c317 100644 --- a/utils/cec-compliance/cec-test.cpp +++ b/utils/cec-compliance/cec-test.cpp @@ -769,8 +769,11 @@ static int tuner_ctl_test(struct node *node, unsigned me, unsigned la, bool inte for (std::vector<struct cec_op_tuner_device_info>::iterator iter = info_vec.begin(); iter != info_vec.end(); iter++) { cec_msg_init(&msg, me, la); - cec_msg_select_analogue_service(&msg, iter->analog.ana_bcast_type, - iter->analog.ana_freq, iter->analog.bcast_system); + if (iter->is_analog) + cec_msg_select_analogue_service(&msg, iter->analog.ana_bcast_type, + iter->analog.ana_freq, iter->analog.bcast_system); + else + cec_msg_select_digital_service(&msg, &iter->digital); fail_on_test(!transmit_timeout(node, &msg)); fail_on_test(cec_msg_status_is_abort(&msg)); cec_msg_init(&msg, me, la); @@ -784,6 +787,39 @@ static int tuner_ctl_test(struct node *node, unsigned me, unsigned la, bool inte double freq_mhz = (iter->analog.ana_freq * 625) / 10000.0; info("Analog channel freq: %.2f MHz\n", freq_mhz); + } else { + __u8 system = iter->digital.dig_bcast_system; + + switch (system) { + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_BS: + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_T: { + __u16 tsid = iter->digital.arib.transport_id; + __u16 sid = iter->digital.arib.service_id; + __u16 onid = iter->digital.arib.orig_network_id; + + info("ARIB digital channel TSID: %u, SID: %u, ONID: %u", tsid, sid, onid); + break; + } + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_SAT: + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_T: { + __u16 tsid = iter->digital.atsc.transport_id; + __u16 pn = iter->digital.atsc.program_number; + + info("ATSC digital channel TSID: %u, Program Number: %u", tsid, pn); + break; + } + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S2: + case CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_T: { + __u16 tsid = iter->digital.dvb.transport_id; + __u16 sid = iter->digital.dvb.service_id; + __u16 onid = iter->digital.dvb.orig_network_id; + + info("DVB digital channel TSID: %u, SID: %u, ONID: %u", tsid, sid, onid); + break; + } + default: + break; + } } } @@ -792,6 +828,16 @@ static int tuner_ctl_test(struct node *node, unsigned me, unsigned la, bool inte fail_on_test(!transmit_timeout(node, &msg)); fail_on_test(!cec_msg_status_is_abort(&msg)); fail_on_test(abort_reason(&msg) != CEC_OP_ABORT_INVALID_OP); + cec_msg_init(&msg, me, la); + info.digital.service_id_method = CEC_OP_SERVICE_ID_METHOD_BY_DIG_ID; + info.digital.dig_bcast_system = CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S2; + info.digital.dvb.transport_id = 0; + info.digital.dvb.service_id = 0; + info.digital.dvb.orig_network_id = 0; + cec_msg_select_digital_service(&msg, &info.digital); + fail_on_test(!transmit_timeout(node, &msg)); + fail_on_test(!cec_msg_status_is_abort(&msg)); + fail_on_test(abort_reason(&msg) != CEC_OP_ABORT_INVALID_OP); return 0; } -- 2.23.0