FANDOM


When not noted otherwise, below findings apply to the A470

Registered by UI.CreatePublicEdit

LCDMsg_CreateEdit

  • arguments
  1. x position
  2. y position
  3. string
  4. color (not on all cams, it exists on the a3200, missing on the sx280)
  • notes

displays string if not NULL and valid (no junk chars), max length < 32
returns lcdmsg ID (unsigned byte, starts with 0)
max nr of messages is 10
coordinates on the a3200 (they are more restricted actually): x 0..719, y 0..479
the messages are displayed on top of Canon graphics and keep displaying until deleted

LCDMsg_SetStrEdit

  • arguments
  1. ID
  2. string (one or more)
  3. NULL (0)
  • notes

Replaces the displayed string on the selected msg. The number of arguments is not limited, but the last argument has to be 0. The string(s) are checked for content and are not displayed when the check fails.
This eventproc has several vulnerabilities. It uses stack variable(s) to concatenate the string arguments. That space is 32 (old cams) or 128 (new cams) bytes long and not checked for overflow. If a final 0 argument is not given, the behaviour is unpredictable (though it usually works).
Older versions of the eventproc display "FAILED" when the string is longer than 31 bytes (which also means stack corruption), newer versions simply cut the result at 31 bytes.

LCDMsg_SwDispEdit

  • arguments
  1. ID
  2. state
  • notes

show (state=1) or hide (state=0) the selected msg

LCDMsg_ChangeColorEdit

  • arguments
  1. ID
  2. color
  • notes

changes color of the selected msg (0..5 on the a3200)

LCDMsg_MoveEdit

  • arguments
  1. ID
  2. x position
  3. y position
  • notes

moves selected msg to new position

LCDMsg_DeleteEdit

  • arguments
  1. ID
  • notes

deletes selected msg

Registered by UI.CreateEdit

UIFS_MoveZoomTo (DryOS)Edit

  • arguments
  1. zoom point (0, 1,  ... ) starts with optical, adds digital zoom when the optical maximum is reached
  2. ignored
  3. function pointer, probably callback, disabled when 0
  • notes
on A470, digital zoom set with this eventproc may not be persistent
--[[
@title MoveZoomTo
@param a Param
@default a 0
]]
call_event_proc("UI.Create")
call_event_proc("UIFS_MoveZoomTo",a,0,0)

UIFS_CaptureNoneStopEdit

  • arguments
  1. unknown
  • notes
on the A470, calling this with a nonzero argument resulted in an unstoppable endless shooting loop

UIFS_SetCaptureModeToTv, 
UIFS_SetCaptureModeToM
Edit

  • arguments
has no arguments
  • notes
changes active capture mode with correct shooting menu, on the A470 both set something similar to the "long shutter" submode of P mode (their effect is slighly different)
Might cause instability (confused camera?)

UIFS_WriteFirmInfoToFileEdit

  • arguments
  1. filename (?), 0 for the default "A/Firminfo.txt"
  • notes
writes firmware information followed by a list of recent recorded errors into the file
call_event_proc("UI.Create")
call_event_proc("UIFS_WriteFirmInfoToFile",0)

PT_* event proceduresEdit

The first 11 event procedures of the PT_* eventproctable are called by firmware tasks by name, so they can be overridden

These are:

PT_CompletePreCaptEdit

PT_RecreviewAvailableEdit

PT_NextShootAvailableEdit

PT_CompleteStopZoomEdit

PT_CompleteStopDigZoomEdit

PT_CompleteStoreLensEdit

PT_MovieRecordStoppedEdit

PT_CompleteCaptModeChangeEdit

PT_CompleteSynchroWriteEdit

  • does not seem to be called on the A470, so it's useless

PT_CompleteChargeEdit


PT_CompleteFileWrite
Edit

Community content is available under CC-BY-SA unless otherwise noted.