@@ -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;
}
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@gmail.com> --- utils/cec-compliance/cec-test.cpp | 50 +++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-)