This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:
Subject: cec-compliance: use cec-common Author: Hans Verkuil <hans.verk...@cisco.com> Date: Tue Aug 8 15:43:03 2017 +0200 Use cec-common.h and drop the duplicate code. Signed-off-by: Hans Verkuil <hans.verk...@cisco.com> utils/cec-compliance/Makefile.am | 6 +- utils/cec-compliance/cec-common.cpp | 1 + utils/cec-compliance/cec-compliance.cpp | 279 +------------------------------- utils/cec-compliance/cec-compliance.h | 13 +- utils/cec-compliance/cec-test.cpp | 4 +- 5 files changed, 10 insertions(+), 293 deletions(-) --- http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=7c9764b6b06ef8f32320a20ebbbe3ffbd7c39ff3 diff --git a/utils/cec-compliance/Makefile.am b/utils/cec-compliance/Makefile.am index 40bc2d0237e0..3caaebb5969d 100644 --- a/utils/cec-compliance/Makefile.am +++ b/utils/cec-compliance/Makefile.am @@ -1,12 +1,14 @@ bin_PROGRAMS = cec-compliance man_MANS = cec-compliance.1 -cec_compliance_SOURCES = cec-compliance.cpp cec-compliance.h cec-test.cpp cec-test-adapter.cpp cec-test-audio.cpp cec-test-power.cpp +cec_compliance_SOURCES = cec-compliance.cpp cec-compliance.h cec-test.cpp cec-test-adapter.cpp cec-test-audio.cpp cec-test-power.cpp cec-common.cpp +cec_compliance_CPPFLAGS = -I$(top_srcdir)/utils/common cec_compliance_LDFLAGS = -lrt cec-compliance.cpp: cec-table.h -cec-table.h: ../cec-ctl/msg2ctl.pl ../../include/linux/cec.h ../../include/linux/cec-funcs.h +cec-table.h: $(top_srcdir)/utils/cec-ctl/msg2ctl.pl $(top_srcdir)/include/linux/cec.h \ + $(top_srcdir)/include/linux/cec-funcs.h $(top_srcdir)/utils/cec-ctl/msg2ctl.pl 2 $(top_srcdir)/include/linux/cec.h $(top_srcdir)/include/linux/cec-funcs.h >$@ cec-compliance.cpp: version.h diff --git a/utils/cec-compliance/cec-common.cpp b/utils/cec-compliance/cec-common.cpp new file mode 120000 index 000000000000..083f11d7be2d --- /dev/null +++ b/utils/cec-compliance/cec-common.cpp @@ -0,0 +1 @@ +../common/cec-common.cpp \ No newline at end of file diff --git a/utils/cec-compliance/cec-compliance.cpp b/utils/cec-compliance/cec-compliance.cpp index 87e1252a74a2..2b3372316d72 100644 --- a/utils/cec-compliance/cec-compliance.cpp +++ b/utils/cec-compliance/cec-compliance.cpp @@ -243,145 +243,6 @@ static std::string ts2s(__u64 ts) return s + "." + buf; } -static std::string caps2s(unsigned caps) -{ - std::string s; - - if (caps & CEC_CAP_PHYS_ADDR) - s += "\t\tPhysical Address\n"; - if (caps & CEC_CAP_LOG_ADDRS) - s += "\t\tLogical Addresses\n"; - if (caps & CEC_CAP_TRANSMIT) - s += "\t\tTransmit\n"; - if (caps & CEC_CAP_PASSTHROUGH) - s += "\t\tPassthrough\n"; - if (caps & CEC_CAP_RC) - s += "\t\tRemote Control Support\n"; - if (caps & CEC_CAP_MONITOR_ALL) - s += "\t\tMonitor All\n"; - if (caps & CEC_CAP_NEEDS_HPD) - s += "\t\tNeeds HPD\n"; - if (caps & CEC_CAP_MONITOR_PIN) - s += "\t\tMonitor Pin\n"; - return s; -} - -static std::string laflags2s(unsigned flags) -{ - std::string s; - - if (!flags) - return s; - - s = "("; - if (flags & CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK) - s += "Allow Fallback to Unregistered, "; - if (flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU) - s += "Allow RC Passthrough, "; - if (flags & CEC_LOG_ADDRS_FL_CDC_ONLY) - s += "CDC-Only, "; - if (s.length()) - s.erase(s.length() - 2, 2); - return s + ")"; -} - -const char *version2s(unsigned version) -{ - switch (version) { - case CEC_OP_CEC_VERSION_1_3A: - return "1.3a"; - case CEC_OP_CEC_VERSION_1_4: - return "1.4"; - case CEC_OP_CEC_VERSION_2_0: - return "2.0"; - default: - return "Unknown"; - } -} - -const char *prim_type2s(unsigned type) -{ - switch (type) { - case CEC_OP_PRIM_DEVTYPE_TV: - return "TV"; - case CEC_OP_PRIM_DEVTYPE_RECORD: - return "Record"; - case CEC_OP_PRIM_DEVTYPE_TUNER: - return "Tuner"; - case CEC_OP_PRIM_DEVTYPE_PLAYBACK: - return "Playback"; - case CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM: - return "Audio System"; - case CEC_OP_PRIM_DEVTYPE_SWITCH: - return "Switch"; - case CEC_OP_PRIM_DEVTYPE_PROCESSOR: - return "Processor"; - default: - return "Unknown"; - } -} - -const char *la_type2s(unsigned type) -{ - switch (type) { - case CEC_LOG_ADDR_TYPE_TV: - return "TV"; - case CEC_LOG_ADDR_TYPE_RECORD: - return "Record"; - case CEC_LOG_ADDR_TYPE_TUNER: - return "Tuner"; - case CEC_LOG_ADDR_TYPE_PLAYBACK: - return "Playback"; - case CEC_LOG_ADDR_TYPE_AUDIOSYSTEM: - return "Audio System"; - case CEC_LOG_ADDR_TYPE_SPECIFIC: - return "Specific"; - case CEC_LOG_ADDR_TYPE_UNREGISTERED: - return "Unregistered"; - default: - return "Unknown"; - } -} - -const char *la2s(unsigned la) -{ - switch (la & 0xf) { - case 0: - return "TV"; - case 1: - return "Recording Device 1"; - case 2: - return "Recording Device 2"; - case 3: - return "Tuner 1"; - case 4: - return "Playback Device 1"; - case 5: - return "Audio System"; - case 6: - return "Tuner 2"; - case 7: - return "Tuner 3"; - case 8: - return "Playback Device 2"; - case 9: - return "Playback Device 3"; - case 10: - return "Tuner 4"; - case 11: - return "Playback Device 3"; - case 12: - return "Reserved 1"; - case 13: - return "Reserved 2"; - case 14: - return "Specific"; - case 15: - default: - return "Unregistered"; - } -} - static std::string tx_status2s(const struct cec_msg &msg) { std::string s; @@ -450,69 +311,6 @@ std::string status2s(const struct cec_msg &msg) return s; } -std::string all_dev_types2s(unsigned types) -{ - std::string s; - - if (types & CEC_OP_ALL_DEVTYPE_TV) - s += "TV, "; - if (types & CEC_OP_ALL_DEVTYPE_RECORD) - s += "Record, "; - if (types & CEC_OP_ALL_DEVTYPE_TUNER) - s += "Tuner, "; - if (types & CEC_OP_ALL_DEVTYPE_PLAYBACK) - s += "Playback, "; - if (types & CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM) - s += "Audio System, "; - if (types & CEC_OP_ALL_DEVTYPE_SWITCH) - s += "Switch, "; - if (s.length()) - return s.erase(s.length() - 2, 2); - return s; -} - -std::string rc_src_prof2s(unsigned prof) -{ - std::string s; - - prof &= 0x1f; - if (prof == 0) - return "\t\tNone\n"; - if (prof & CEC_OP_FEAT_RC_SRC_HAS_DEV_ROOT_MENU) - s += "\t\tSource Has Device Root Menu\n"; - if (prof & CEC_OP_FEAT_RC_SRC_HAS_DEV_SETUP_MENU) - s += "\t\tSource Has Device Setup Menu\n"; - if (prof & CEC_OP_FEAT_RC_SRC_HAS_MEDIA_CONTEXT_MENU) - s += "\t\tSource Has Contents Menu\n"; - if (prof & CEC_OP_FEAT_RC_SRC_HAS_MEDIA_TOP_MENU) - s += "\t\tSource Has Media Top Menu\n"; - if (prof & CEC_OP_FEAT_RC_SRC_HAS_MEDIA_CONTEXT_MENU) - s += "\t\tSource Has Media Context-Sensitive Menu\n"; - return s; -} - -std::string dev_feat2s(unsigned feat) -{ - std::string s; - - feat &= 0x7e; - if (feat == 0) - return "\t\tNone\n"; - if (feat & CEC_OP_FEAT_DEV_HAS_RECORD_TV_SCREEN) - s += "\t\tTV Supports <Record TV Screen>\n"; - if (feat & CEC_OP_FEAT_DEV_HAS_SET_OSD_STRING) - s += "\t\tTV Supports <Set OSD String>\n"; - if (feat & CEC_OP_FEAT_DEV_HAS_DECK_CONTROL) - s += "\t\tSupports Deck Control\n"; - if (feat & CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE) - s += "\t\tSource Supports <Set Audio Rate>\n"; - if (feat & CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX) - s += "\t\tSink Supports ARC Tx\n"; - if (feat & CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX) - s += "\t\tSource Supports ARC Rx\n"; - return s; -} - const char *power_status2s(__u8 power_status) { switch (power_status) { @@ -1475,17 +1273,6 @@ int main(int argc, char **argv) #else printf("cec-compliance SHA : not available\n"); #endif - printf("\nDriver Info:\n"); - printf("\tDriver Name : %s\n", caps.driver); - printf("\tAdapter Name : %s\n", caps.name); - printf("\tCapabilities : 0x%08x\n", caps.capabilities); - printf("%s", caps2s(caps.capabilities).c_str()); - printf("\tDriver version : %d.%d.%d\n", - caps.version >> 16, - (caps.version >> 8) & 0xff, - caps.version & 0xff); - printf("\tAvailable Logical Addresses: %u\n", - caps.available_log_addrs); node.phys_addr = CEC_PHYS_ADDR_INVALID; doioctl(&node, CEC_ADAP_G_PHYS_ADDR, &node.phys_addr); @@ -1522,71 +1309,7 @@ int main(int argc, char **argv) } - printf("\tPhysical Address : %x.%x.%x.%x\n", - cec_phys_addr_exp(node.phys_addr)); - printf("\tLogical Address Mask : 0x%04x\n", laddrs.log_addr_mask); - printf("\tCEC Version : %s\n", version2s(laddrs.cec_version)); - if (laddrs.vendor_id != CEC_VENDOR_ID_NONE) - printf("\tVendor ID : 0x%06x\n", laddrs.vendor_id); - printf("\tLogical Addresses : %u %s\n", - laddrs.num_log_addrs, laflags2s(laddrs.flags).c_str()); - for (unsigned i = 0; i < laddrs.num_log_addrs; i++) { - if (laddrs.log_addr[i] == CEC_LOG_ADDR_INVALID) - printf("\n\t Logical Address : Not Allocated\n"); - else - printf("\n\t Logical Address : %d\n", - laddrs.log_addr[i]); - printf("\t Primary Device Type : %s\n", - prim_type2s(laddrs.primary_device_type[i])); - printf("\t Logical Address Type : %s\n", - la_type2s(laddrs.log_addr_type[i])); - if (laddrs.cec_version < CEC_OP_CEC_VERSION_2_0) - continue; - printf("\t All Device Types : %s\n", - all_dev_types2s(laddrs.all_device_types[i]).c_str()); - - bool is_dev_feat = false; - for (unsigned idx = 0; idx < sizeof(laddrs.features[0]); idx++) { - __u8 byte = laddrs.features[i][idx]; - - if (!is_dev_feat) { - if (byte & 0x40) { - printf("\t RC Source Profile :\n%s", - rc_src_prof2s(byte).c_str()); - } else { - const char *s = "Reserved"; - - switch (byte & 0xf) { - case 0: - s = "None"; - break; - case 2: - s = "RC Profile 1"; - break; - case 6: - s = "RC Profile 2"; - break; - case 10: - s = "RC Profile 3"; - break; - case 14: - s = "RC Profile 4"; - break; - } - printf("\t RC TV Profile : %s\n", s); - } - } else { - printf("\t Device Features :\n%s", - dev_feat2s(byte).c_str()); - } - if (byte & CEC_OP_FEAT_EXT) - continue; - if (!is_dev_feat) - is_dev_feat = true; - else - break; - } - } + cec_driver_info(caps, laddrs, node.phys_addr); bool missing_pa = node.phys_addr == CEC_PHYS_ADDR_INVALID && (node.caps & CEC_CAP_PHYS_ADDR); bool missing_la = laddrs.num_log_addrs == 0 && (node.caps & CEC_CAP_LOG_ADDRS); diff --git a/utils/cec-compliance/cec-compliance.h b/utils/cec-compliance/cec-compliance.h index c4fb317063a1..7ce44620ce64 100644 --- a/utils/cec-compliance/cec-compliance.h +++ b/utils/cec-compliance/cec-compliance.h @@ -31,6 +31,8 @@ #include <config.h> #endif +#include <cec-common.h> + #define TAG_AUDIO_RATE_CONTROL 1 #define TAG_ARC_CONTROL (1 << 1) #define TAG_CAP_DISCOVERY_CONTROL (1 << 2) @@ -278,9 +280,6 @@ int cec_named_ioctl(struct node *node, const char *name, #define doioctl(n, r, p) cec_named_ioctl(n, #r, r, p) -#define cec_phys_addr_exp(pa) \ - ((pa) >> 12), ((pa) >> 8) & 0xf, ((pa) >> 4) & 0xf, (pa) & 0xf - std::string opcode2s(const struct cec_msg *msg); static inline bool is_tv(unsigned la, unsigned prim_type) @@ -360,14 +359,6 @@ static inline unsigned get_ts_ms() } const char *ok(int res); -const char *la2s(unsigned la); -const char *la_type2s(unsigned type); -const char *prim_type2s(unsigned type); -const char *version2s(unsigned version); -std::string status2s(const struct cec_msg &msg); -std::string all_dev_types2s(unsigned types); -std::string rc_src_prof2s(unsigned prof); -std::string dev_feat2s(unsigned feat); const char *power_status2s(__u8 power_status); std::string short_audio_desc2s(const struct short_audio_desc &sad); void sad_decode(struct short_audio_desc *sad, __u32 descriptor); diff --git a/utils/cec-compliance/cec-test.cpp b/utils/cec-compliance/cec-test.cpp index 3b2531c478bf..5eb985bc4aeb 100644 --- a/utils/cec-compliance/cec-test.cpp +++ b/utils/cec-compliance/cec-test.cpp @@ -165,8 +165,8 @@ static int system_info_give_features(struct node *node, unsigned me, unsigned la fail_on_test(cec_version != node->remote[la].cec_version); fail_on_test(rc_profile == NULL || dev_features == NULL); info("All Device Types: \t\t%s\n", all_dev_types2s(all_device_types).c_str()); - info("RC Profile: \t%s", rc_src_prof2s(*rc_profile).c_str()); - info("Device Features: \t%s", dev_feat2s(*dev_features).c_str()); + info("RC Profile: \t%s", rc_src_prof2s(*rc_profile, "").c_str()); + info("Device Features: \t%s", dev_feat2s(*dev_features, "").c_str()); if (!(cec_has_playback(1 << la) || cec_has_record(1 << la) || cec_has_tuner(1 << la)) && node->remote[la].has_aud_rate) { _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits