...
Aptina Imaging software uses sensor specific .ini files for many of its applications. The .ini file contains groups of commands called presets. Each preset has a name enclosed in square brackets, like [Reset83269893]. Some presets are required for the DevWare application; while others can be added by the user. The DevWare application provides several tools which will allow the user to create and edit ini presets. There is also a function in the ApBase API which allows the user to load a preset from an .ini file in their own custom application (see ap_LoadINIPreset()).
...
The following presets are used by DevWare and other Aptina Imaging software. The user may edit the commands in these presets, but the preset should not be deleted or renamed for proper software execution.
...
[Reset] | Reset the sensor to its power-on state. Activated by the Reset button the DevWare toolbar. |
[Demo Initialization] | The recommended register settings for the sensor in the demo environment. Activated by the Init button on the DevWare toolbar. |
[DevWare Initialization] | Settings to initialize DevWare and the sensor for the demo environment. If this preset doesn't exist, Demo Initialization is used. |
[SensorDemo Initialization] | Settings to initialize SensorDemo (DevWare /DEMO) and the sensor. If this preset doesn't exist, SensorDemo will fall back to DevWare Initialization or Demo Initialization. |
[Monochrome Initialization] | Recommended register settings to use for the monochrome version of the sensor. |
[ |
Initialize] |
Switch into Preview mode. Activated by the Preview button on the DevWare toolbar.
[Viewfinder OFF]
Switch out of Preview mode. Activated by the Preview button on the DevWare toolbar.
[Video Capture ON]
Switch into Video Capture mode. Activated by the Record button on the DevWare toolbar unless Screen capture only (no register changes) is selected on Sensor Control, Video Capture dialog.
[Video Capture OFF]
Switch out of Video Capture mode. Activated when video capture ends, unless Screen capture only (no register changes) is selected on Sensor Control, Video Capture dialog.
[Color Processing ON]
Create a file called prescan.ini and put it in the apps_data directory of the installation directory. In the file have a preset called [Initialize]. Note: There aren't separate initialize preset names per base board type, but it's possible to distinguish between, for example, Demo3 and 3X, with an IF_SERIAL command in the [Initialize] preset. | |
[Startup Wizard] | DevWare will run that instead of the Startup Wizard dialog. Doing that is unconditional, though. There is no way to run Startup Wizard from ini script. |
[Viewfinder ON] | Switch into Preview mode. Activated by the Preview button on the DevWare toolbar. |
[ |
Viewfinder OFF] |
Switch out of Preview mode. Activated by the |
Preview button on the DevWare toolbar. |
[ |
Select primary sensor on a two-sensor system.
[Camera 2]
Select secondary sensor on a two-sensor system.
[Pre Still Capture]
Video Capture ON] | Switch into Video Capture mode. Activated by the Record button on the DevWare toolbar unless Screen capture only (no register changes) is selected on Sensor Control, |
Video Capture dialog. |
[ |
Video Capture OFF] |
Switch out of Video Capture mode. Activated when video capture ends, unless Screen capture only (no register changes) is selected on Sensor Control, |
Video Capture dialog. |
[ |
Define data types for sensor registers and bitfields. Activated at DevWare startup. Deprecated since the .xsdat files contain this information now.
User-Defined DevWare Presets
You may create your own presets using a text editor, or various tools in DevWare.
The preset name may consist of any combination of ASCII characters (alphanumeric, symbolic, space, etc.) except "[", "]", "," or the sequence "//".
To execute the preset select it in the DevWare Presets dialog and click Load.
Special Preset Name Prefixes
The following preset name prefixes have special meaning.
[Toolbar: …] | The preset will get a button on the User Toolbar assigned to it. See below. |
[Toolbar2: …] | The preset will get a button on the 2nd User Toolbar assigned to it. See below. |
[Python: …] | The preset contains Python code instead of ini commands. See the DevWare Python Development Guide document. |
[Hidden: …] | The preset will not appear in the DevWare Presets dialog list box. You can leave off the 'Hidden:' part in LOAD= commands. For example 'LOAD=PLL-On' can load [Hidden: PLL-On]. |
[Watch REG: …] | Defines a list of registers for the DevWare Watch window. (Not for loading register values.) |
[Patch <id>; <color>; <description>] | A preset name formatted like this will be recognized as a firmware patch by the Load Patches dialog page of the Sensor Control dialog. |
...
If the name of a preset begins with "Toolbar:" or "Toolbar2:" then DevWare will create a button on the corresponding User Toolbar that executes the preset. The remainder of the preset name after "Toolbar:" or "Toolbar2:" will be used as the button label. You can further define the characteristics and behavior of the toolbar button with the ICON=, TOOLTIP=, MENUITEM= and SHORTCUT= special commands.
The maximum number of buttons on a User Toolbar is 20.
...
Example: Menu button
[Toolbar: Quick Zoom]
ICON= zoom.ico
TOOLTIP= "Select a Display Zoom setting"
MENUITEM= "1/4", LOAD= Zoom.25X, RADIO= STATE:Display Zoom Percent == 25
MENUITEM= "1:1", LOAD= Zoom1X, RADIO= STATE:Display Zoom Percent == 100
MENUITEM= "4X", LOAD= Zoom4X, RADIO= STATE:Display Zoom Percent == 400
[Zoom.25X]
STATE= Display Zoom Percent, 25
[Zoom1X]
STATE= Display Zoom Percent, 100
[Zoom4X]
STATE= Display Zoom Percent, 400
List of INI Commands
Command
Definition
Write a value to a bitfield of a register.
Define the data type and optional valid range of a named register or bitfield.
Delay a certain amount of time (in milliseconds) before continuing.
Output an error message and stop execution if a condition is met.
Write a value to a sensor register on the first attached camera.
Write a value to a sensor register on the second attached camera.
Write to a register or bitfield by name. Command works for any kind of register, variable or SFR.
Define the icon for a User Toolbar button.
Similar to LOAD, but conditioned on the value of a register.
Similar to LOAD, but conditioned on the value of a register.
Similar to IF_REG, but can access any device on the SHiP bus.
Set software to expect the given image size and type. Command does not change sensor mode.
Load a preset from an ini file.
Load a preset from an EEPROM.
Add a text string to the Log window.
Write a value to an SOC RAM location.
Write a value to an 8-bit SOC RAM location.
Write a value to a 32-bit SOC RAM location.
Define sub-menu items for a User Toolbar button.
Set a DevWare Option variable.
Color Processing ON] | Enable software color processing. Activated by the Auto button on the DevWare toolbar. |
[Color Processing OFF] | Disable software color processing. Activated by the Auto button on the DevWare toolbar. |
[Camera 1] | Select primary sensor on a two-sensor system. |
[Camera 2] | Select secondary sensor on a two-sensor system. |
[Pre Still Capture] | Activated before a still image capture, unless Current Image is selected on Sensor Control, Still Capture dialog. |
[Post Still Capture] | Activated after a still image capture, unless Current Image is selected on Sensor Control, Still Capture dialog. |
[Data Types] | Define data types for sensor registers and bitfields. Activated at DevWare startup. Deprecated since the .xsdat files contain this information now. |
[Register Tabs] | Define the tabs, groups, and controls for the optional "Scripts" version of the Register Dialog. |
[Python:] | Python code that will be executed automatically when the file is opened in a Presets dialog in DevWare. This is a good place to put import statements, function def statements and any other definitions that may be used by other presets in the file. |
[Python: Unload] | Python code that will be executed automatically when the Presets dialog is closed (including when DevWare exits). |
User-Defined DevWare Presets
You may create your own presets using a text editor, or various tools in DevWareX.
The preset name may consist of any combination of ASCII characters (alphanumeric, symbolic, space, etc.) except "[", "]", "," or the sequence "//".
To execute the preset select it in the DevWare Presets dialog and click Load.
Special Preset Name Prefixes
The following preset name prefixes have special meaning.
[Toolbar: …] | The preset will get a button on the User Toolbar assigned to it. See below. |
[Toolbar2: …] | The preset will get a button on the 2nd User Toolbar assigned to it. See below. |
[Python: …] | The preset contains Python code instead of ini commands. See the DevWare Python Development Guide document. |
[Hidden: …] | The preset will not appear in the DevWare Presets dialog list box. You can leave off the 'Hidden:' part in 83269893= commands. For example 'LOAD=PLL-On' can load [Hidden: PLL-On]. |
[Patch <id>; <color>; <description>] | A preset name formatted like this will be recognized as a firmware patch by the Load Patches dialog page of the Sensor Control dialog. |
Anchor | ||||
---|---|---|---|---|
|
If the name of a preset begins with "Toolbar:" or "Toolbar2:" then DevWare will create a button on the corresponding User Toolbar that executes the preset. The remainder of the preset name after "Toolbar:" or "Toolbar2:" will be used as the button label. You can further define the characteristics and behavior of the toolbar button with the 83269893=, 83269893=, 83269893= and SHORTCUT= special commands.
The maximum number of buttons on a User Toolbar is 20.
Example: Simple button
[Toolbar: Zoom 1X]
ICON= zoom.ico
TOOLTIP= "Restore the display zoom to 1X"
SHORTCUT= Ctrl+1
STATE= Display Zoom Percent, 100
Example: Menu button
[Toolbar: Quick Zoom]
ICON= zoom.ico
TOOLTIP= "Select a Display Zoom setting"
MENUITEM= "1/4", LOAD= Zoom.25X, RADIO= STATE:Display Zoom Percent == 25
MENUITEM= "1:1", LOAD= Zoom1X, RADIO= STATE:Display Zoom Percent == 100
MENUITEM= "4X", LOAD= Zoom4X, RADIO= STATE:Display Zoom Percent == 400
[Zoom.25X]
STATE= Display Zoom Percent, 25
[Zoom1X]
STATE= Display Zoom Percent, 100
[Zoom4X]
STATE= Display Zoom Percent, 400
List of INI Commands
Command | Definition |
Write a value to a bitfield of a register. | |
Define the data type and optional valid range of a named register or bitfield. | |
Delay a certain amount of time (in milliseconds) before continuing. | |
Output an error message and stop execution if a condition is met. | |
Write a value to a sensor register on the first attached camera. | |
Write a value to a sensor register on the second attached camera. | |
Write to a register or bitfield by name. Command works for any kind of register, variable or SFR. | |
Define the icon for a User Toolbar button. | |
Similar to LOAD, but conditioned on the value of a register. |
Similar to |
LOAD, but conditioned on the value of a register. |
Similar to |
IF_REG, but |
can access any device on the |
SHiP bus. |
Give the user a multiple-choice dialog, or show a message.
Write a value to a register.
Write a sequence of register values in one bus transaction.
Write image data to files.
Write register values to a file.
Set or detect the sensor SHiP base address.
Low-level write to Two-Wire Serial Interface register.
Write a value to a special function register, on certain sensors.
Write a value to an 8-bit special function register, on certain sensors.
Set a variable within the software, not on the sensor.
Set software to expect the given image size and type. Command does not change sensor mode. | |
Load a preset from an ini file. | |
Load a preset from an EEPROM. | |
Add a text string to the Log window. | |
Write a value to an SOC RAM location. | |
Write a value to an 8-bit SOC RAM location. | |
Write a value to a 32-bit SOC RAM location. | |
Define sub-menu items for a User Toolbar button. |
Set a DevWare Option variable. |
Write a value to a 32-bit firmware variable.
Write a value to an 8-bit firmware variable.
Set the XMCLK (sensor external clock) frequency.
Command Syntax
...
Write a value to a bitfield of a register.
Example: for register 0xC3 on page 2, set bit 5 to 1
BITFIELD= 2, 0xC3, 0x0020, 1
Defines a data type and optional valid range for a register or bitfield. The data type is used by DevWare when displaying the value in decimal format in the Registers window and Watch window. The range is used for the slider control on the Registers window.
Possible values for <type> are: unsigned, signed (2's complement), signmag (sign-magnitude), fixed1…fixed32 (2's complement fixed-point), ufixed1…ufixed32, float16, float (IEEE single precision).
Example: RED_GAIN register has five fractional bits.
DATATYPE = RED_GAIN, ufixed5
Example: CAM_HUE_ANGLE is signed and ranges from -22 to 22.
DATATYPE= CAM_HUE_ANGLE, signed, RANGE= -22:22
Valid value range is 1 to 5000.
Delay a certain amount of time (in milliseconds) before continuing.
Example: Delay 1000 milliseconds.
DELAY = 1000 //delay 1000 milliseconds
Poll a register. Similar to DELAY, but conditioned on the value of a register. | |
Poll a register. Similar to DELAY, but conditioned on the value of a register. | |
Poll a variable. Similar to DELAY, but conditioned on the value of a variable. | |
Give the user a multiple-choice dialog, or show a message. | |
PYTHON | Invoke a one-line Python statement. |
Write a value to a register. | |
Write a sequence of register values in one bus transaction. | |
Write image data to files. | |
Write register values to a file. | |
Set or detect the sensor SHiP base address. | |
Low-level write to Two-Wire Serial Interface register. | |
Write a value to a special function register, on certain sensors. | |
Write a value to an 8-bit special function register, on certain sensors. | |
Define a keyboard shortcut for a User Toolbar button. | |
Set a variable within the software, not on the sensor. | |
Define a tooltip for a User Toolbar button. | |
Write a value to a firmware variable. | |
Write a value to a 32-bit firmware variable. | |
Write a value to an 8-bit firmware variable. | |
Set the XMCLK (sensor external clock) frequency. |
Command Syntax
Note: [ ] items are optional.
|
|
Only <, <=, ==, !=, >, >= are supported for <condition>.
If the condition is true, show the message in an error dialog. The user may choose to continue executing the preset or stop. (The midlib2 mi_LoadINIPreset() call will output a message to the log file if logging is on, and stop executing the preset.)
Example: Read register SEQ_STATE, if it is not equal to 3 show the message "Not in preview mode".
ERROR_IF= SEQ_STATE, !=3, "Not in preview mode."
Write to a register on the first attached camera. The <page> parameter is required. If the sensor doesn't use paged register addressing use 0 for the page number.
The optional mask parameter lets you set a bitfield, like the BITFIELD command.
Example: Set bit 5 in register 0x3044 on the attached camera
FAR1= 0, 0x3044, 0x0020, 1
Write to a register on the second attached camera. The <page> parameter is required. If the sensor doesn't use paged register addressing use 0 for the page number.
The optional mask parameter lets you set a bitfield, like the BITFIELD command.
Example: Set bit 5 in register 0x3044 on the attached camera
FAR2= 0, 0x3044, 0x0020, 1
<type> [, RANGE= <min>:<max>] //<comment> |
|
|
|
Example: Set "SEQ_CAP_MODE" variable to 0.
FIELD_WR = SEQ_CAP_MODE, 0 //capture parameters, VIDEO Off
Example: Use a built-in icon image.
ICON= green square.
Optionally you can define the 'checked' (pressed-in) and enabled (not grayed out) state for the button, based on the value of a register, bitfield or DevWare STATE variable. The <condition> can be ==, !=, <, >, <=, or >= followed by a numerical constant. Use the RADIO keyword for a group of mutually exclusive buttons. Use the CHECKED keyword for independent buttons.
Example: Load icon from file antishake.bmp, and declare that the button should be pressed-in when SEQ_STATE_CFG_2_AS equals 1 and not pressed otherwise.
ICON= antishake.bmp, CHECKED= SEQ_STATE_CFG_2_AS == 1
Example: Load icon from file Zoom1.bmp, and declare that the button should be pressed-in when the DevWare STATE variable Display Zoom Percent equals 100.
ICON= Zoom1.bmp, CHECKED= STATE:Display Zoom Percent == 100
See also the MENUITEM= and TOOLTIP= commands.
Only <, <=, ==, !=, >, >= are supported for <condition>.
Similar to LOAD, but conditioned on the value of a register.
Example: Read register SHUTTER_WIDTH_LIM_AE, if it is greater than 0x100, load preset [Night mode], otherwise, load preset [Day mode].
IF_FIELD= SHUTTER_WIDTH_LIM_AE,>0x100, LOAD=Night mode, ELSELOAD=Day mode
Only <, <=, ==, !=, >, >= are supported for <condition>.
Similar to LOAD, but conditioned on the value of a register.
Example: Read register 0x37 on page 2, if it is equal to 0x100, load preset [Night mode], otherwise, load preset [Day mode].
IF_REG= 2, 0x37, 0xFFFF,== 0x100, LOAD=Night mode, ELSELOAD=Day mode
on the first attached camera. The <page> parameter is required. If the sensor doesn't use paged register addressing use 0 for the page number. |
|
|
Defines the icon image and button state for a User Toolbar button in DevWare. Only takes effect if the preset name begins with “Toolbar:” or “Toolbar2:”. If the <icon name> contains a dot “.” character, it's interpreted as a filename with a path relative to the ini file. The icon file can be a .ico or a .bmp (24x24 pixels, 32-bpp, R-G-B-alpha) file. Example: Load icon from file zoom.ico. Otherwise the name specifies a built-in icon image. The built-in images are different colored shapes. Specify the shape and color. The shapes are circle, square, triangle and star. The colors are black, brown, red, orange, yellow, green, blue, violet, gray and white. Example: Use a built-in icon image. |
|
Example: Read location 0x1FF1 in an EEPROM at base address 0xA8, and if it is equal to 1 then load preset [Serial Init
register. |
Day mode]. |
FIELD= SHUTTER_WIDTH_LIM_AE,>0x100, LOAD= |
Night mode, ELSELOAD= |
Day mode |
|
Set software to expect the given image size and type. Command does not change sensor mode.
Width and height parameters are required, but you can use 0 for either value to mean "don't change". The image type is optional. Possible values for image type are: BAYER-8, BAYER-10, BAYER-8+2, BAYER-10IHDR, BAYER-12, BAYER-8+4, BAYER-12HDR, BAYER-14, BAYER-14HDR, BAYER-20, BAYER-16+4, YCBCR, YCBCR-16, YUV-420, M420, RGB-565, RGB-555, RGB-444X, RGB-X444, RGB-332, RGB-24, RGB-32, RGB-48, JPEG, JPEG-SPEEDTAGS
Example: Tell the software that the sensor output will be 808 x 608, 10-bit Bayer.
IMAGE = 808, 608, BAYER-10
Load a preset from an ini file.
Examples:
Load preset [Video Capture On] from current INI file.
LOAD= Video Capture ON
Load preset [Day mode] from A-0360-REV2.ini.
LOAD= A-0360-REV2.ini, Day mode
Load a preset from an EEPROM on the sensor headboard. The type can be CCM, PGA, SWCCM, SWPGA or SWSTEREO to load hardware or software CCM (color correction) or PGA (lens correction) settings or stereo alignment. The label is optional to specify which settings to load if there are more than one stored in the EEPROM. The midlib API function ap_LoadINIPreset() does not support SWCCM, SWPGA, or SWSTEREO.
Optionally you can specify a preset in the ini file to load in the case where the EEPROM does not have the data.
Example:
Load software lens correction settings.
LOAD_PROM= 0xA8, SWPGA
Add a line of text to the DevWare Register Log window. If the Register Log window is not enabled then nothing happens.
Remember that DevWare users expect the contents of the Log to be an executable ini file sequence, so your text should either begin with a // comment mark, or be a valid ini file command.
Example:
Add a comment to the Log window.
LOG= "// Setting Night Mode"
Write a value to a 16-bit RAM location.
Example: Set 16-bit location 0xB0A in patch RAM to a value of 0x0010.
MEM= 0, 0x0B0A, 0x0010
Write a value to an 8-bit RAM location.
Example: Set 8-bit RAM location 0x411 to value of 0x02.
MEM8= 0, 0x411, 0x02
Write a value to a 32-bit RAM location.
Example: Set 32-bit location 0xD950 to a value of 0x00FF01FF.
MEM32= 0, 0xD950, 0x00FF01FF
|
|
Context is optional, and represents the context number to apply the settings to. Value is 0 to n, where n is the maximum number of contexts - 1. |
|
|
|
|
|
|
|
name>|:<mask>]|STATE:<STATE variable> <condition>][,SHORTCUT=<key combination>] //<comment> Defines a drop-down menu item for a User Toolbar button in DevWare. Only takes effect if the preset name begins with "Toolbar:" or "Toolbar2:". This command causes the toolbar button behavior to change to a drop-down menu action. |
83269893=, CHECKED=, RADIO= and ENABLED= attributes work as in the ICON= command, except they apply only to the menu item, not the toolbar button. The icon file must be a .bmp (32-bpp, R-G-B-alpha) file, 13x13 pixels for the normal Windows text size. SHORTCUT= attribute works like the SHORTCUT= command, but applies only to this menu item. Note: if "LOAD=" is not supplied, then that MENUITEM will be disabled but still displayed. |
|
|
|
|
|
automatically added so the user can choose to do nothing. The user can stop execution of the current preset by clicking Cancel. "OKONLY" is optional. When present and the user does not select "OK", a new Prompt will be displaying warning the user that not selecting OK may have unintended results. |
Commas are allowed inside quoted strings. The \n sequence in the message will convert to a newline.
Example: Ask user whether to do parallel or serial configuration.
PROMPT= "Is this camera using a parallel or serial interface?", "Parallel". LOAD=Parallel Init, "Serial", LOAD=Serial Init
execution. |
|
|
USB has a limit of 64 bytes per command, so that is the limit. DevWare allows the REG_BURST command to be any length, but if it is longer than 64 bytes (including the address at the beginning) then it will be split into several commands.
|
Usage rules for filename: 1. If only a file name is given, it will be saved at the location set in "Image Save Options". |
|
|
|
|
|
Note: |
using a built-in shortcut used by DevWare can disable it; see section 2.2.2 of the DevWare Detailed documentation for a list of built-in shortcuts. Any key can be used for the shortcut, for example SHORTCUT= Z, or SHORTCUT= |
F7. The key name is not case-sensitive. Also modifier keys Shift, Ctrl and Alt can be specified with the key name. Use a plus sign + between the modifier key name and the main key name, for example SHORTCUT= Shift+F6, or SHORTCUT= Ctrl+E. Multiple modifiers can be used, for example SHORTCUT= Ctrl+Shift+F6. The modifiers must come before the main key name, but they can be in any order. Spaces between the modifier and key name are OK. When deciding on shortcut keys, keep in mind the keyboard layout and existing conventions. For example Shift+= is impossible on U.S. keyboards as the = sign is on the unshifted key. On some international keyboards the opposite may be true. Also, keys like Home may have different names on international keyboards. But always specify modifier keys with "Shift", "Ctrl" and "Alt" (the U.S. keyboard names) even for international keyboards. The Alt key is typically used for menu navigation, so it's use should be limited to a few function keys, or avoided. SHORTCUT= key definitions will override the default key definitions in DevWare, so this feature can be used to reassign keys if you don't need the default action. These key assignments (as well as the default key assignments) only take effect when the main DevWare window has keyboard focus, not if a dialog or other UI control has keyboard focus. This means that it is OK to use numbers and letters for shortcuts, and you will still be able to enter text in edit boxes, etc.
|
|
STATE Variables for a list of supported states. |
|
|
|
|
Set the frequency of the clock signal XMCLK on DEMO2 camera base boards. XMCLK typically routs to the clock input on the sensor if the jumper on the headboard is set to XMCLK. DEMO2 supports only 6.75, 10, 12, 13.5, 20, 24, 27, 40, 48, 54, 80, or 96 MHz. DEMO2X supports any frequency.
Example: Set XMCLK to 24MHz.
XMCLK= 24000000
Custom Register Dialog Definition via "[Register Tabs"]
...
|
Custom Register Dialog Definition via "[Register Tabs"]
The per-defined preset "Register Tabs" is used to define a customized version of the Register Dialog.
It uses constructs from Python to define and control the entries connected to registers or Python "getter" and "setter" routines.
It is assumed that the user has a solid understand of Python and its implementation in DevWare; that User Guide is here.
The types of controls include;
Check Box; enable/disable.
Spin Box; up/down arrows to run through values. Also allows for direct entry of a value.
Slider; a slider to run through values.
List Box; a user-defined set of values to select from.
For usage details, see the DevWare Python Developer Guide section on "Register Tabs".