# HG changeset patch # User alex@thinkpad # Date 1520089295 -3600 # Sat Mar 03 16:01:35 2018 +0100 # Branch crop_rec_4k # Node ID dbaa3aea64ba135b8088e183fa9384611cf48537 # Parent 27345b3c1ad65e5765b8c260f45841ea1469414a is_camera: extended to allow checking DIGIC version e.g. if (is_camera("DIGIC", "5")) { ... } diff -r 27345b3c1ad6 -r dbaa3aea64ba src/module.h --- a/src/module.h Sat Feb 24 17:06:06 2018 +0100 +++ b/src/module.h Sat Mar 03 16:01:35 2018 +0100 @@ -337,8 +337,9 @@ /* for camera-specific tricks in modules */ /* e.g. if (is_camera("5D3", "1.2.3")) { adtg_write_addr = 0x1234 } */ +/* also if (is_camera("DIGIC", "5")) { ... } */ /* see propvalues.c */ -extern int is_camera(const char * model, const char * firmware); +extern int is_camera(const char * model, const char * version); #ifdef MODULE #include "module_strings.h" diff -r 27345b3c1ad6 -r dbaa3aea64ba src/propvalues.c --- a/src/propvalues.c Sat Feb 24 17:06:06 2018 +0100 +++ b/src/propvalues.c Sat Mar 03 16:01:35 2018 +0100 @@ -19,11 +19,44 @@ /* is_camera("5D3", "1.2.3") - will check for a specific camera / firmware version */ /* is_camera("5D3", "*") - will accept all firmware versions */ -int is_camera(const char * model, const char * firmware) +/* is_camera("DIGIC", "5") - will accept all DIGIC 5 models */ +/* todo: possibly other classifications? */ +int is_camera(const char * model, const char * version) { + if (streq(model, "DIGIC")) + { + if (streq(version, "*")) + { + /* only DIGIC models supported */ + return 1; + } + + if (strlen(version) != 1) + { + /* only one-digit DIGIC version check is currently supported, i.e. no 4+ or similar */ + return 0; + } + + #ifdef CONFIG_VXWORKS + return version[0] == '3'; + #endif + #ifdef CONFIG_DIGIC_V + return version[0] == '5'; + #endif + #ifdef CONFIG_DIGIC_VI + return version[0] == '6'; + #endif + #ifdef CONFIG_DIGIC_VII + return version[0] == '7'; + #endif + //#ifdef CONFIG_DIGIC_IV - fixme + return version[0] == '4'; + //#endif + } + return - streq(__camera_model_short, model) && /* check camera model */ - (streq(firmware_version, firmware) || streq(firmware, "*")); /* check firmware version */ + streq(__camera_model_short, model) && /* check camera model */ + (streq(firmware_version, version) || streq(version, "*")); /* check firmware version */ } PROP_HANDLER(PROP_CAM_MODEL)