Very neat is there any place where I can find all the current found names for different cameras or just for mine the elph 100hs finding them myself or finding uart is probably deeper than I want to go but If I could find existing found names and maybe use them I could make that happen
You can find a list of functions known to CHDK in the funcs_by_*.csv files in the CHDK source for your camera + firmware version. For example ixus115_elph100 100c funcs_by_name.csv is at
https://app.assembla.com/spaces/chdk/subversion/source/HEAD/trunk/platform/ixus115_elph100hs/sub/100c/funcs_by_name.csvThose lists include many functions which are
not eventprocs. Detected eventprocs normally have names ending in _FW in the files. Note the _FW is not part of the actual name, so should be omitted when using call_event_proc
As discussed in the post I linked, many eventprocs must be "registered" to be usable. The csv lists do not tell which are registered, or what calls are needed to register the ones that aren't. Generally, examining the firmware is required to determine what is registered where, but most eventprocs are registered by one of a handful of registration functions like System.Create, Mecha.Create, FA.Create, InitializeAdjustmentSystem / InitializeAdjustmentFunction (the last two register some of the same functions but aren't identical). Other registration function often have Create, Initialize or Register in the name, although these words also appear in function names with other meanings.
Note that the InitializeAdjustment* registration functions are known to have side effects that may cause the camera to crash in normal operation.
You can call functions which aren't registered as eventprocs by address using call_func_ptr with the address listed in the csv files, but for some eventprocs the registration function does other initialization which is required for the eventproc to work. Calling by address also makes it much easier to crash the camera, or perhaps worse. If you call a function that take parameters by address, you must also determine whether it uses the eventproc calling convention (with all parameters pointed to by a single pointer) or the normal ARM calling convention. The eventproc calling convention is awkward to use from CHDK Lua (it requires malloc'ing and poking to set up the parameters), so it's generally easier to find an underlying function that uses the normal calling convention.
The list linked above is for firmware 100c, you should use the list that corresponds to your camera. If you are only looking at
names, it shouldn't matter, but if you call by address (using call_func_ptr) then you must use the address for the correct firmware.
I highly recommend chdkptp (
https://app.assembla.com/spaces/chdkptp/wiki) for exploring eventprocs. It allows you interactively call the functions from a terminal window on your computer and see the output there rather than copying a script to your card every time you change something (but I may be biased because I wrote it, YMMV).