(→Property list: Maybe found a few property ids) |
(Added note about version from which these are derived) |
||
Line 1: | Line 1: | ||
+ | These structures and event mappings are from the [[5D Mark II]] firmware version 1.0.7. They may not be the same on other cameras or firmware versions. |
||
+ | |||
= Tasks and contexts = |
= Tasks and contexts = |
||
Latest revision as of 15:59, 23 May 2009
These structures and event mappings are from the 5D Mark II firmware version 1.0.7. They may not be the same on other cameras or firmware versions.
Tasks and contexts
struct context
{
uint32_t cpsr;
uint32_t r[13];
uint32_t lr;
uint32_t pc;
};
struct task
{
uint32_t off_0x00; // always 0?
uint32_t off_0x04; // stack maybe?
uint32_t off_0x08; // flags?
void * entry; // off 0x0c
uint32_t off_0x10;
uint32_t off_0x14;
uint32_t off_0x18;
uint32_t off_0x1c;
uint32_t off_0x20;
char * name; // off_0x24;
uint32_t off_0x28;
uint32_t off_0x2c;
uint32_t off_0x30;
uint32_t off_0x34;
uint32_t off_0x38;
uint32_t off_0x3c;
uint32_t off_0x40;
uint32_t off_0x44;
uint32_t off_0x48;
struct context * context; // off 0x4C
uint32_t pad_1[12];
};
VRAM
The VRAM can be read as sequence of 8-bit pixels:
uint32_t * const vram_config_ptr = (void*) 0x2580; uint32_t width = vram_config_ptr[ 0x28 / 4 ]; uint32_t * const bmp_vram_ptr = (void*) 0x240cc; uint8_t * const bmp_vram = (void*) bmp_vram_ptr[ 2 ];
The width config will be 1080 if the output device is HDMI or 720 if it on the internal screen. The bmp_vram pointer might be NULL and always has a pitch of 960 pixels, even in 720 mode.
State objects
Structures like the movie recorder use state objects to track their state. It appears to work like a finite-state-machine, with a set of transitions. The actual mechanism of how they work has not yet been determined, but the structure has been mapped based on the state_object_create() function.
typedef void (*state_function_t)( void * arg );
struct state_object
{
const char * type; // off 0x00, "StateObject"
const char * name; // off 0x04, arg 0
uint32_t id; // off 0x08, arg 1
// off 0x0c, always 0xff99a228 ?
void (*callback)(
struct state_object * obj,
void * unknown1,
void * unknown2
);
state_function_t * callbacks; // off 0x10
uint32_t max_transitions; // off 0x14, arg 2
uint32_t max_states; // off 0x18, arg 3
uint32_t state; // off 0x1c, initially 0
};
extern struct state_object *
state_object_create(
const char * name,
int initial,
state_function_t * callbacks,
int max_states,
int max_transitions
);
GUI
GUI Event types
- 0x6 == IDC_DBN_OK
- 0x7 == IDC_DBN_CANCEL
- 0x800 == GOT_TOP_OF_CONTROL
- 0x801 == LOST_TOP_OF_CONTROL
- 0x802 == INITIALIZE_CONTROLLER
- 0x804 == TERMINATE_WINSYS
- 0x805 == DELETE_DIALOG_REQUEST
- 0x807 == PRESS_RIGHT_BUTTON
- 0x809 == PRESS_LEFT_BUTTON
- 0x80B == PRESS_UP_BUTTON
- 0x80D == PRSES_DOWN_BUTTON
- 0x80F == PRESS_MENU_BUTTON
- 0x812 == PRESS_SET_BUTTON (maybe)
- 0x81B == PRESS_UP_BUTTON
- 0x820 == SUB_DIAL (spin left)
- 0x823 == PRESS_MLT_CENTER_BUTTON
- 0x829 == PRESS_INFO_BUTTON
- 0x82B == ELECTRONIC_SUB_DIAL_RIGHT
- 0x82C == ELECTRONIC_SUB_DIAL_LEFT
- ? == SUB_DIAL (spin right)
- 0x10000000 == PRESS_DISP_BUTTON
- 0x10000005 == PRESS_DIRECT_PRINT_BUTTON
- 0x10000007 == PRESS_FUNC_BUTTON
- 0x10000009 == PRESS_PICTURE_STYLE_BUTTON
- 0x1000000B == OPEN_SLOT_COVER
- 0x1000000C == CLOSE_SLOT_COVER
- 0x1000008A == START_SHOOT_MOVIE
Property list
Properties look like events, I think. They have a unique numeric ID in the 0x80000000 space.
- PROP_ABORT
- PROP_ACCESS_REMAIN
- PROP_ACTIVE_SWEEP_ACTIVATE_CONDITION
- PROP_ACTIVE_SWEEP_MODE
- PROP_ACTIVE_SWEEP_STATUS
- PROP_AEB
- PROP_AE_MODE
- PROP_AE_MODE_DIAL
- PROP_AF_MODE
- PROP_AFPOINT
- PROP_ARTIST
- PROP_AUTO_POWEROFF_TIME
- PROP_AUTO_ROTATE
- PROP_AVAIL_SHOT
- PROP_BATTERY_CHECK
- PROP_BATTERY_HISTORY
- PROP_BATTERY_POWER
- PROP_BATTERY_REPORT
- PROP_BEEP
- PROP_BODY_ID
- PROP_CARD
- PROP_CARD1_CLUSTER_SIZE
- PROP_CARD1_EXIST
- PROP_CARD1_FILE_NUMBER
- PROP_CARD1_FOLDER_NUMBER
- PROP_CARD1_FREE_SIZE
- PROP_CARD1_IMAGE_COMPOSITION
- PROP_CARD1_NEXT_FOLDER_NUMBER
- PROP_CARD1_RECORD
- PROP_CARD1_STATUS
- PROP_CARD2_CLUSTER_SIZE
- PROP_CARD2_EXIST
- PROP_CARD2_FILE_NUMBER
- PROP_CARD2_FOLDER_NUMBER
- PROP_CARD2_FREE_SIZE
- PROP_CARD2_IMAGE_COMPOSITION
- PROP_CARD2_NEXT_FOLDER_NUMBER
- PROP_CARD2_RECORD
- PROP_CARD2_STATUS
- PROP_CARD3_CLUSTER_SIZE
- PROP_CARD3_EXIST
- PROP_CARD3_FILE_NUMBER
- PROP_CARD3_FOLDER_NUMBER
- PROP_CARD3_FREE_SIZE
- PROP_CARD3_IMAGE_COMPOSITION
- PROP_CARD3_NEXT_FOLDER_NUMBER
- PROP_CARD3_RECORD
- PROP_CARD3_STATUS
- PROP_CARD_COVER
- PROP_CARD_EXTENSION
- PROP_CARD_IMAGE_QUALITY
- PROP_CFN_TAB1
- PROP_CFN_TAB2
- PROP_CFN_TAB3
- PROP_CFN_TAB4
- PROP_COLOR_SPACE
- PROP_COLOR_TEMP
- PROP_COMP
- PROP_CONNECT_TARGET
- PROP_CONNECT_TARGET_WFT
- PROP_COPYRIGHT
- PROP_CURRENT_LENS_NAME
- PROP_CURRENT_MEDIA
- PROP_CUSTOM_WB
- PROP_DATA_INPUT_TRANSMISSION
- PROP_DATE_DISPLAY_FORMAT
- PROP_DEFAULT_OBWBREG
- PROP_DIR_SUFFIX
- PROP_DISABLE_PLAY_IMAGE
- PROP_DISPLAY_AF_POINTS
- PROP_DISPLAY_OFF_SENSOR
- PROP_DISPSENSOR_CTRL
- PROP_DL_ACTION
- PROP_DL_SYMPATHETIC_VIBRATION
- PROP_DP_DPOF_PARAM
- PROP_DP_EXT_OPTION_PARAM
- PROP_DP_STANDARD_PARAM
- PROP_DRIVE_MODE
- PROP_DSDEFINE
- PROP_DUST_DELETE_DATA
- PROP_EFIC_TEMP
- PROP_ELECTRIC_SHUTTER_MODE
- PROP_ERROR_FOR_DISPLAY
- PROP_EVF_RECODE_STATUS
- PROP_FILE_NUMBERING_MODE
- PROP_FILE_PREFIX
- PROP_FIRM_VERSION
- PROP_FIXED_VERSION
- PROP_FLAVOR_BW
- PROP_FLAVOR_FAITHFUL
- PROP_FLAVOR_LANDSCAPE
- PROP_FLAVOR_MODE
- PROP_FLAVOR_NEUTRAL
- PROP_FLAVOR_PORTRAIT
- PROP_FLAVOR_STANDARD
- PROP_FLAVOR_USER1
- PROP_FLAVOR_USER2
- PROP_FLAVOR_USER3
- PROP_FOCUS_INFO_EX
- PROP_GetCameraSettingProperty
- PROP_GPS_STATUS
- PROP_GUIGROUND_STATE
- PROP_GUI_STATE
- PROP_HDD_DCIM_PATH
- PROP_HDMI_PHYSICAL_CONNECT
- PROP_HDMI_PHYSICAL_DISCONNECT
- PROP_HIGHLIGHT_ALERT
- PROP_HISTOGRAM
- PROP_ICU_AUTO_POWEROFF
- PROP_ICU_UILOCK
- PROP_INFO_BUTTON_SHOOT
- PROP_Initialize
- PROP_JUMP_FUNCTION
- PROP_LANGUAGE
- PROP_LAST_JOBID
- PROP_LAST_JOB_STATE
- PROP_LCD_BRIGHTNESS
- PROP_LCD_BRIGHTNESS_ADJ
- PROP_LCD_STATE
- PROP_LENS
- PROP_LIGHT_FALLOFF_COMP
- PROP_LIVE_VIEW_AF_SYSTEM
- PROP_LIVE_VIEW_FACE_AF
- PROP_LIVE_VIEW_GRID
- PROP_LIVE_VIEW_MOVIE_SELECT
- PROP_LIVE_VIEW_VIEWTYPE_SELECT
- PROP_LOGICAL_CONNECT
- PROP_LOGICAL_CONNECT_WFT
- PROP_LV_ACTION
- PROP_LV_AF_RESULT
- PROP_LV_AVAILABLE_AREA
- PROP_LV_DISPBUSY
- PROP_LV_DISPSIZE
- PROP_LV_EMD_DRIVE_RESULT
- PROP_LV_EXPOSURE_MODE 0x80050038
- PROP_LV_HISTOGRAM 0x80050013
- PROP_LV_IMAGE_MUTE
- PROP_LV_LENS
- PROP_LV_LOCK
- PROP_LV_MANIPULATION
- PROP_LV_OUTPUT_DEVICE
- PROP_LV_SPDN_BTN_STATUS
- PROP_LV_START
- PROP_LV_ST_CHARGE_INFO
- PROP_LV_STOP
- PROP_LV_TEST_REMOTE_RELEASE
- PROP_LV_ZOOM_FOCUS_FRAME_AREA
- PROP_MAX_DESC_BUFFER
- PROP_MAX_ENUM_NUMBER
- PROP_MENU_POSITION
- PROP_METERING_MODE
- PROP_METERING_TIMER_FOR_LV
- PROP_MOVIE_SIZE
- PROP_MOVIE_SOUND_RECORD
- PROP_MPU_INDEPENDENT_SETTING
- PROP_MWB
- PROP_MWB1
- PROP_MYMENU_LIST
- PROP_NO_CARD_RELEASE
- PROP_NUMBER_OF_CONTINUOUS_MODE
- PROP_OPTICAL_CORRECT_PARAM
- PROP_OUTPUT_TYPE
- PROP_PC_AVAIL_SHOT
- PROP_PC_FLAVOR1_PARAM
- PROP_PC_FLAVOR2_PARAM
- PROP_PC_FLAVOR3_PARAM
- PROP_PC_FREE_SIZE
- PROP_PC_HDD_STATUS
- PROP_PC_WB1
- PROP_PC_WB2
- PROP_PC_WB3
- PROP_PC_WB4
- PROP_PC_WB5
- PROP_PERMIT_ICU_EVENT
- PROP_PHOTO_STUDIO_ENABLE_ISOCOMP
- PROP_PHOTO_STUDIO_ISOCOMP
- PROP_PHOTO_STUDIO_MODE
- PROP_PHOTO_STUDIO_MODE_CHANGE_AUTO_PASSWORD_KEY
- PROP_PHOTO_STUDIO_MODE_CHANGE_MANUAL_PASSWORD
- PROP_PHOTO_STUDIO_SETUP_PASSWORD
- PROP_PHYSICAL_CONNECT
- PROP_PROGRAM_SHIFT
- PROP_QUICKREVIEW
- PROP_QUICKREVIEW_MODE
- PROP_REGISTER_HEAD
- PROP_REMOTE_AFSTART_BUTTON
- PROP_REMOTE_BULB_RELEASE_END
- PROP_REMOTE_BULB_RELEASE_START
- PROP_REMOTE_RELEASE
- PROP_REMOTE_SW1
- PROP_REMOTE_SW2
- PROP_Request
- PROP_RequestChange
- PROP_SAVE_MODE
- PROP_SaveMpuDebugData
- PROP_SCREEN_SAVER
- PROP_SDIO_PHYSICAL_CONNECT
- PROP_SDIO_PHYSICAL_CONNECT_START
- PROP_SELECTED_FILE_PREFIX
- PROP_SetCameraSettingProperty
- PROP_SHOOTING_TYPE
- PROP_SHUTTER_COUNTER
- PROP_SLIDESHOW
- PROP_SPECIAL_OPTION
- PROP_STARTUP_CONDITION
- PROP_STROBO_CFN
- PROP_STROBO_FIRING
- PROP_STROBO_SETTING
- PROP_STROBO_WIRELESS_SETTING
- PROP_TEMP_STATUS
- PROP_TFT_SETTING_PARAM
- PROP_TFT_STATUS
- PROP_TRANS_METHOD_WFT
- PROP_TUNING_FLAG
- PROP_USBDEVICE_CONNECT
- PROP_USER_FILE_PREFIX
- PROP_USER_FILE_PREFIX2
- PROP_VIDEO_PHYSICAL_CONNECT
- PROP_VIDEO_SYSTEM
- PROP_WBB_BA
- PROP_WBB_GM
- PROP_WB_MODE
- PROP_WBS_BA
- PROP_WBS_GM
- PROP_WFT_ADAPTERINFO
- PROP_WFT_CAPTION
- PROP_WFT_DELIMITER_STATUS
- PROP_WFT_DONGLE
- PROP_WFT_FTP
- PROP_WFT_HOSTINFO
- PROP_WFT_HTTP
- PROP_WFT_IMAGE_TRANS
- PROP_WFT_LOCK
- PROP_WFT_SYSTEM
- PROP_WFT_TCPIP
- PROP_WFT_TRANSMISSION
- PROP_WFT_WIRED
- PROP_WFT_WIRELESS
- PROP_WIZARD_WFT