CHDK Wiki
Line 25: Line 25:
 
Many event procedures are not registered by default. The following are known. Unless otherwise specified, they take no arguments and return 0 on completion.
 
Many event procedures are not registered by default. The following are known. Unless otherwise specified, they take no arguments and return 0 on completion.
   
===SystemEventInit===
+
===SystemEventInit/System.Create===
 
registers AllocateMemory, FreeMemory, sprintf, memcpy, Fut functions, log ...
 
registers AllocateMemory, FreeMemory, sprintf, memcpy, Fut functions, log ...
   
===UI_RegistDebugEventProc===
+
===UI_RegistDebugEventProc/UI.Create===
 
registers capture mode functions, PTM_ functions and much more
 
registers capture mode functions, PTM_ functions and much more
   
Line 38: Line 38:
 
===RegisterShootSeqEvent===
 
===RegisterShootSeqEvent===
 
===RegisterNRTableEvent===
 
===RegisterNRTableEvent===
  +
===System.Create===
 
  +
'''Note''': Many of the *.Create functions only exist on newer cameras (dryos ?), while the alternate name appears to exist on both newer and older models.
 
[[Category:Development]]
 
[[Category:Development]]
 
[[Category:CHDK internals]]
 
[[Category:CHDK internals]]

Revision as of 02:57, 6 September 2010

Starting a draft page to document eventprocs this is an incomplete draft please update with your observations. Thread http://chdk.setepontos.com/index.php/topic,4417.0.html

Overview

An event procedure (or eventproc) is a function in the canon firmware associated with a text name. An API exists in the canon firmware to register, execute and un-register them.

Event procedures are available from Canon Basic

Event Procedure API functions

  • int ExecuteEventProcedure(const char *name,...)

executes the named eventproc, with the supplied arguments. Returns -1 if the eventproc isn't registered. Otherwise, returns the eventprocs return value.

  • void ExportToEventProcedure(const char *name,void *pfunc)

registers eventproc pfunc with name.

Lua interface

Event procedures may be called from lua using the LUA/LUA Reference/Native Function Calls interface.

Known event procedures

Below are some event procedures which have been found to be interesting or useful. Note that the existence, behavior and arguments expected are known to vary between camera models. When if something varies from the descriptions below for your camera, please note it.

Registration functions

Many event procedures are not registered by default. The following are known. Unless otherwise specified, they take no arguments and return 0 on completion.

SystemEventInit/System.Create

registers AllocateMemory, FreeMemory, sprintf, memcpy, Fut functions, log ...

UI_RegistDebugEventProc/UI.Create

registers capture mode functions, PTM_ functions and much more

RegisterProductTestEvent

registers PT_ functions

Note: present on vxworks + digic II (A540) missing on dryos + digic III / digic 4 (A470,SD990). Functions may be registered by default on these cameras ?

RegisterShootSeqEvent

RegisterNRTableEvent

Note: Many of the *.Create functions only exist on newer cameras (dryos ?), while the alternate name appears to exist on both newer and older models.