One more proposition:
- Apply patch1509_fltv6 to trunk but commit result to reyalp-flt branch
- Then apply your _cam_info changes also to reyalp-flt.
Reason: I have idea to make one more improvement which broke modules compatibility. Something similar to proposition of reyalp.
Short description:
To make modules version-compatible for data structures (like _cam_info or binding modules structures) common mechanizm will be useful.
Data structure should contain uint32 variable. This variable is inited with #define MAKE_API_VERSION(major,minor) ((major<<16)+minor).
Modules/Core which import data structure should make check
if ( !API_VERSION_MATCH_REQUIREMENT( api_ver, req_major, req_minor ) )
error
#define API_VERSION_MATCH_REQUIREMENT( api_ver, req_major, req_minor ) ((api_ver>>16)==req_major && (api_ver&0xffff)>=req_minor)
If logic is changed in the way when back compatibility is not possible then major version changed in api version initializer. If something extended (back-compatible) then minor version changed.
PS - I still don't think that such way is good for conf, because it is oftenly changed structure. By-value binding is safe and agile method.
It also could be used but not required for core chdk export_list (base limitation and check are enough + chdk ver check just for user-friendly info and out-of-export_list logic changes).
But this thing surely will provide good safety level for other data structures: _cam_info, librawop, export_list of modules, etc