Автор данного документа не несет никакой ответственности за возможные ошибки и неточности, допущенные в документе, и за то, что вы можете сделать со своим телефоном, используя этот документ. The author of this document does not bear any responsibility for any error or omission, admitted in the document, and for what you can do with your phone, using this document.
Все предложения, уточнения, исправления принимаются автором, т.е. All proposals, clarification, the author accepted remedy, that is SPU, по электронной почте . SPU, by e-mail.
Версия 1.3 от 19.05.2007. Version 1.3 of 19.05.2007.
Файл драйвера камеры представляет собой текстовый файл с названием camdriver0.dat. Fail camera driver is a text file with the name camdriver0.dat.
NB! Все числовые значения в драйвере указываются в шестнадцатеричном виде! NB! All numerical values in the driver specified in hexadecimal form!
NB! Будте внимательны! NB! Be careful! Вся информация, относительно которой есть только догадки, заключена в красные знаки вопросов. All the information on which is available only speculate, enclosed in red marks issues. Пример: ??? информация под вопросом ??? Example:?? Information in question??
NB! Данное описание не претендует на абсолютную полноту. NB! This description does not claim absolute completeness. Информация, еще не проверенная мной, специально не включена в данный файл. The information has not yet been tested by me, not specifically included in the file.
Вся дальнейшая информация относится исключительно к драйверам телефонов моделей k750, w800, w810 All further information relates exclusively to drivers have k750 phone models, w800, w810
Содержимое драйвера является интерпретируемым кодом. The contents of the driver code is interpreted. Интерпретация происходит непосредственно в момент использования. Interpretation is happening at the time of use. Например, если в драйвере содержится ошибка, то выполнение команд будет продолжаться, пока интерпретатор не достигнет некорректной команды, т.е. For example, if the driver contains an error, the command execution will continue until the interpreter will not reach incorrect command, or правильность всего кода не проверяется перед использованием. correct all code is not checked before use.
NB! Если интерпретатор обнаруживает некорректную команду, то он помечает ВЕСЬ блок кода как некорректный и более не запускает его. NB: If the interpreter finds incorrect command, it marks the ENTIRE code block as incorrect and no longer runs it. Таково поведение интерпретатора в лучшем случае, в худшем телефон может перезагрузиться (например, так часто происходит если нарушена стандартная структура своиств). This behavior interpreter at best, and at worst could restart the phone (for example, as often happens if the structure violated standard properties).
Для программирования драйвера доступны 16 регистров r0 – rf . Software drivers are available for 16 registers r0 - rf. Размер регистра 4 байта. Size register 4 bytes.
NB! Все команды работают с аргументом в 1 байт! NB! All teams work with the argument in 1 byte! Однако вычисления всегда проводятся с регистрами полного размера. However, calculations are always registers full size.
Для вставки комментария в код используется пара символов // . To insert a comment in the code is a pair of characters / /. Все, что начинается с этих символов и заканчивается концом строки, считается комментарием. All that begins with those characters, and ends with the end of the line is considered commentary. Например: //комментарий For example: / / comment
Любая последовательность команд начинается с названия блока и, следующего за ним, знака = и заканчивается символом ; . Any sequence of commands begins with the title block, and, next to him, and ends = mark symbol;. Например: SOME_CODE= …какой-то код… ; For example: SOME_CODE =… some… code;
Блоки команд/данных бывают двух типов: стандартные (их названия начинаются с info_ , cam_ , sec_ , jpeg_ ) и макросы . Blocks of commands and data are of two types: standard (their names begin with info_, cam_, sec_, jpeg_) and macros.
Макрос — это такой блок команд, который выполняется, когда интерпретатор обнаруживает ссылку на этот макрос в текущем исполняемом коде. Macro - is a command unit, which is done when the interpreter finds a reference to this in the current macro executable code.
Макросу можно передавать «параметры». "You can send a macro parameters." Слово параметры взяты в кавычки по следующей причине: интерпретатор проверяет и выполняет одну команду за другой, поэтому к моменту вставки параметра в текст кода предыдущая команда должна быть полностью завершенной, иначе код будет считаться некорректным, т.е. The words in quotation marks are taken options for the following reason: the checks and executes one command after another, so at the time of insertion in the text of the code parameter previous team must be fully completed, otherwise the code will be considered incorrect, that is в качестве параметра может использоваться только кусок кода (но есть одно исключение). as a parameter can be used only piece of code (although there is one exception). Чтобы указать, в какое место макроса следует вставить параметр, используются последовательности !0 , !1 и т.д. To specify in what place should be inserted macro parameter is used consistency! 0,! 1, etc. по количеству параметров. on the number of parameters.
Пример: MACRO=$z0 $c0 00 !0 $cl !1 $cx; Example: MACRO z0 = $ $ c0 00! 0 $ cl! $ 1 cx;
NB! Макрос нужно определить до первого использования в коде! NB! Macro must determine before it is first used in the code!
В код макрос вставляется конструкцией #MACROS , если требуется передать куски кода, то писать #MACROS( …код1… , …код2… ) In the macro code into the Construction # MACROS, if you want to allocate chunks of code, then write # MACROS (… kod1…,… kod2…)
Пример: #MACRO($s1 01,$s1 02) Example: # MACRO (s1 $ 01, $ s1 02)
NB! Макросы при использовании могут быть вложенными: #MACRO1(#MACRO2(#MACRO3)) NB! Using Macros can be nested: # MACRO1 (# MACRO2 (# MACRO3))
NB! Передавать макросу можно только код или данные, входящие в состав raw команд (см. раздел «Подробное описание raw команд»)! NB! Can only transmit a macro code or data that make up the raw commands (see "A detailed description of raw commands")!
Пример: MACRO=$s0 !0; #MACRO(01) работать не будет (причину см. выше)! Example: MACRO = $ s0! 0; # MACRO (01) will not work (see above reason)! Работать будет только: MACRO = 06 02 00 01 !1 !2 $f; #MACRO(02,01) Work will soon: MACRO = 06 02 00 01! 1! $ 2; f # MACRO (02,01)
NB! В тексте драйвера часто встречаются стандартные блоки с названиями, отличающимися только цифрами на конце. NB! In the drivers frequently standard blocks with names that differ only figures at the end. Таких блоков есть два типа: There are two types of units:
*_vf_*, *_vf_*_X, *_ss_*, *_ss_*_X — это блоки, отвечающие за процесс просмотра изображения на экране (видоискатель), съемку видео и фотографирование. _vf_ * * * * _vf_ _X, _ss_ * * * * _ss_ _X - it blocks responsible for the process of viewing images on the screen (viewfinder), video filming and photographing. Каждому из режимов работы камеры (в основном это определяется разрешением) соответствует свой номер. Each of the modes of operation cameras (mainly determined by resolution) corresponds to the number. При работе камеры логика выполнения блоков такая: ищется блок с номером на конце, соответствующий текущему режиму, если найден, то он выполняется, и на этом все заканчивается, если не наден, то ищется блок без номера на конце и выполняется. When the camera perform logic blocks such: searched block at the end with number corresponding to the current regime, if found, it is done, and all this ends, if not naden, then searched without block numbers at the end and executed. seq_*_prop_Y, seq_*_prop_Y_X — это блоки, отвечающие за совершение определенных действий при изменении значения свойства с номером Y. * seq_ _prop_Y, seq_ * _prop_Y_X - it blocks responsible for the commission of certain actions in changing property value with a number Y. Число в конце соответствует текущему значению данного свойства. The number corresponds to the end of the current value of the properties. Например: seq_set_prop_1=…; seq_set_prop_1_0=…; Если свойство 1 имеет значение 0, то выполнится seq_set_prop_1_0 , если не 0, то seq_set_prop_1 For example: seq_set_prop_1 ... seq_set_prop_1_0 = = 1 ... If the property has a value of 0, then execute seq_set_prop_1_0 unless 0, the seq_set_prop_1 info_* . Information on the driver version: * info_ line. Используется прошивкой телефона при загрузке драйвера. Phone firmware is used when loading drivers. cam_power_on_* и cam_power_off_* . The sequence of operations to include the module and disconnect the camera: strings and cam_power_off_ cam_power_on_ * *. cam_i2c_address : номер порта для операций с модулем камеры cam_i2c_address: port number of operations with a module for the camera cam_vf_clock_freq : тактовая частота модуля камеры в режиме просмотра и видео cam_vf_clock_freq: clock frequency module in the camera and video mode cam_ss_clock_freq : тактовая частота модуля камеры при фотографировании cam_ss_clock_freq: clock frequency module camera for taking photographs cam_vf_format, cam_ss_format : идентификатор формата получаемого изображения ( 0001 - JPEG, B100 - YUV422) cam_vf_format, cam_ss_format: ID format of the output image (0001 - JPEG, B100 - YUV422) cam_data_offset : смещение блока данных (0 для YUV422, 2 для JPEG) cam_data_offset: shift data block (0 for YUV422, 2 for JPEG) cam_vf_sync, cam_ss_sync : ??? количество кадров на синзхонизацию вертикальной развертки ??? cam_vf_sync, cam_ss_sync:?? number of personnel at sinzhonizatsiyu vertical?? cam_ss_retries : количество попыток которое можно сделать модулю камеры в процессе получения фотографии с сенсора и кодирования в JPEG (сохранение в эту процедуру не входит) cam_ss_retries: the number of attempts that can be made camera module in the process of obtaining photos from the sensor and encode JPEG (preservation of this procedure is not included) cam_ss_jpeg_buf_size_* : размер буфера в байтах для изображения в формате JPEG для каждого режимов. cam_ss_jpeg_buf_size_: * buffer size in bytes for images in JPEG format for each mode. В большинстве случаев данное ограничение игнорируется прошивкой телефона. In most cases, this limit is ignored phone firmware. sup_sizes : список параметров режимов в формате N[W,H,F] , где N — номер режима, W — ширина изображения, H — высота, F — количество кадров в секунду (используется только для vf режимов, считается как реальный fps * 100 , например, fps 7.5 => 750 => 2EE ): sup_sizes: a list of parameters regimes in the form N [W, H, F], where N - number regime W - image width, H - height, F - the number of frames per second (used only for vf regimes considered as a real fps * 100 , for example, 7.5 fps => 750 => 2EE): 1 - 100x160 (ss, JPEG) , не используется 1 - 100x160 (ss, JPEG), is not used 2 - 160x120 (ss, JPEG) 2 - 160x120 (ss, JPEG) 3 - 320x240 (ss, JPEG) , не используется 3 - 320x240 (ss, JPEG), is not used 4 - 640x480 (ss, JPEG) 4 - 640x480 (ss, JPEG) 5 - 1280x960 (ss, JPEG) , не используется 5 - 1280x960 (ss, JPEG), is not used 6 - 1600x1200 (ss, JPEG) , не используется 6 - 1600x1200 (ss, JPEG), is not used 7 - 1632x1088 (ss, JPEG) , не используется 7 - 1632x1088 (ss, JPEG), is not used 8 - 1632x1224 (ss, JPEG) 8 - 1632x1224 (ss, JPEG) 9 - 640x480 (ss, YUV422) , используется в режимах Панорама, Рамки, Серия 9 - 640x480 (ss, YUV422), used in the treatment Panorama, Framework, Series 11 - 100x60 (vf, видоискатель) 11 - 100x60 (vf, viewfinder) 12 - 160x120 (vf, видоискатель) 12 - 160x120 (vf, viewfinder) 13 - 220x146 (vf, видоискатель) 13 - 220x146 (vf, viewfinder) 14 - 220x165 (vf, видоискатель) 14 - 220x165 (vf, viewfinder) 15 - 236x177 (vf, видоискатель) 15 - 236x177 (vf, viewfinder) 21 - 128x96 (vf, 3GP, дневной) 21 - 128x96 (vf, 3GP, day) 22 - 128x96 (vf, 3GP, ночной) 22 - 128x96 (vf, 3GP, night) 23 - 176x144 (vf, 3GP, дневной) 23 - 176x144 (vf, 3GP, day) 24 - 176x144 (vf, 3GP, ночной) 24 - 176x144 (vf, 3GP, night) 30 - 78x144 (ss, YUV422) , используется при тестировании сенсора 30 - 78x144 (ss, YUV422), is used for testing the sensor sup_properties : список параметров свойств драйвера в формате N[MN,MX,DF] , где N — номер свойства, MN — минимальное значение, MX — максимальное значение, DF — значение при старте драйвера. sup_properties: the list of properties driver parameters in the format N [MN, MX, DF], where N - number of properties, MN - the minimum value MX - the maximum value, DF - meaning at startup driver. Список свойств (не все из них прописаны в таблице sup_properties ): The list of features (not all of them are included in the table sup_properties): seq_set_prop и/или seq_get_prop , соответственно. seq_set_prop must attend and / or seq_get_prop, respectively. seq_ping : назначение неизвестно, в драйвере не используется seq_ping: appointment unknown driver is not used seq_init : код, выполняющийся при старте камеры, используется для установки некоторых начальных параметров seq_init: code executed when the camera starts, is used to set some initial parameters seq_set_prop_X : код, выполняющийся при изменении СО СТОРОНЫ ПРОШИВКИ значения свойства с номером X (в том числе и при старте драйвера) или в результате команды принудительного выполнения. NB! Значения, которые прошивка передает коду соответствующего свойства со стороны драйвера изменить никак нелья! seq_set_prop_X: code executed when changing BY PROSHIVKI property value in the number of X (including the driver at startup) or as a result of enforcement team. NB! Values, which sends firmware codes are relevant properties of the driver failed to change nothing! Т.е. Ie если из меню был включен ночной режим (и на экране соответствующий значок), то никаким кодом драйвера нельзя заставить прошивку телефона выключить ночной режим и убрать значок, можно только проигнорировать "команду" прошивки и, например, не включать ночной режим. if the menu was included night mode (and the corresponding icon on the screen), then any code driver could not be forced to turn off the phone firmware night mode and remove the icon, you can only ignore "the" firmware, and not, for example, include a night mode. seq_get_prop_X : код, выполняющийся ТОЛЬКО по запросу СО СТОРОНЫ ПРОШИВКИ. seq_get_prop_X: code running on demand ONLY BY PIERCING. Код должен возвращать значения прошивке в заранее определенных регистрах. The code must return the value in firmware predetermined registers. seq_ss_config, seq_vf_config : код, выполняющийся при включении камеры и смене режимов ее работы seq_ss_config, seq_vf_config: code executed when the camera power and regime change her work seq_vf_start, seq_vf_stop : код, выполняющийся в момент начала и остановки, соответственно, работы видоискателя и записи видео seq_vf_start, seq_vf_stop: code running at the time of start and stop, respectively, work viewfinder and video recordings seq_ss_start, seq_ss_stop : код, выполняющийся в момент перехода в режим получения фотографии и после его окончания, соответственно. seq_ss_start, seq_ss_stop: code running at the time of transition in the mode of obtaining photos and beyond, respectively. seq_ss_take : код, непосредственно запускающий процесс получения фотографии. seq_ss_take: code directly launching the process of obtaining photos. seq_ss_verify : код, проверяющий, окончен ли процесс получения и сжатия фотографии, и возвращающиий параметры EXIF, если фотография готова. seq_ss_verify: code verifier, over whether the process of obtaining photos and compression, and EXIF vozvraschayuschiy parameters, if the photo is ready. jpeg_qtable_selector_* : возвращает текущий ??? множитель ??? для таблицы квантования JPEG. jpeg_qtable_selector_ *: return current?? multiplier?? quantization tables for JPEG. jpeg_qtable_* : таблицы квантования для предыдущего пункта. jpeg_qtable_ *: quantization tables for the previous paragraph. jpeg_qtable_factors : таблица соответсвия процента качества сжатия и среднестатистического объемама получаемых файлов. jpeg_qtable_factors: table percent matching quality and compression average volume derived files. jpeg_header : заголовок JPEG файла, в который в нужных местах вставляются необходимые значения: таблицы квантования и размеры изображения. jpeg_header: JPEG file header, which are inserted in the right locations values: quantization tables, and the image size. Примечание: Если команда в качестве параметра принимает 1 байт, т.е. Note: If a team takes as a parameter 1 byte, that is, два символа (это записывается как XX или YY и т.п.), то если не оговорено противное, кроме чисел 00–FF можно использовать ссылки на регистры в виде rX , где X от 0 до f , и последовательность %0 , которая представляет собой текущее значение свойства (если код является частью seq_set_prop ). two characters (it is recorded as XX and YY, etc.), then unless otherwise indicated, in addition to numbers 00-FF can be used references to registers in the form rX, where X 0 through f, and the sequence of 0%, which represents a current value of the property (if the code is part seq_set_prop).
NB! Строго соблюдайте количество символов в команде! NB! Obey number of characters in the team! Например, команда $m 1 2 верна, а $m 1 02 уже нет. For example, the command $ m 1 2 correct, and $ 1 02 m anymore.
| Команда Team | Описание Description | Примечание Note |
|---|---|---|
$sX YY $ sX YY | rX=YY , поместить значение YY в регистр rX YY = rX, put the value in the register YY rX | YY не может быть регистром YY there can be no registry |
$m XY (или $mX Y)$ m XY (or $ mX Y) | rX=rY , поместить значение регистра rY в регистр rX rX = rY, put the value rY register in the register rX | |
$dXXXX $ dXXXX | пауза на XXXX милисекунд XXXX break milliseconds | |
$cX YY $ cX YY | if (rX==YY) , если rX=YY , то if (rX == YY), if YY = rX, the | YY не может быть регистром YY there can be no registry |
$cl $ cl | else , иначе (эту команду можно опускать, если алтернативный вариант кода не требуется) else, otherwise (this command may be omitted if the alternative version of the code is not required) | |
$cx $ cx | endif , конец блока ветвления endif, end of the block branching | |
$bX YY ZN $ bX YY ZN | установить биты с номера Z по номер Z+N-1 в регистре rX равным битам 0 — N-1 значения YY establish numbers with bits of Z + Z number N-1 in the register rX equal bits 0 - N-1 values YY | YY не может быть регистром. YY there can be no registry. Не проверялось: с Z>7 , с N>8 Not tested: with Z> 7, with N> 8 |
$zX $ zX | поместить идентификатор размера кадра в rX placed in the frame size ID rX | |
$pX YY $ pX YY | поместить текущее значение свойства номер YY в rX put the current value of properties in the number YY rX | YY только число YY only number |
$uXX $ uXX | выполнить код seq_set_prop_XX или seq_set_prop_XX_* , если последний существует для текущего значения свойства XX comply with the code or seq_set_prop_XX seq_set_prop_XX_ * if the latter exists for the current property value XX | XX только число XX only number |
$<XY $ <XY | rX=rX<<Y , сдивнуть регистр rX на Y бит влево rX rX = <<Y, sdivnut register rX Y bit to the left | Не тестировалось с Y>8 Not tested with Y> 8 |
$>XY $> XY | rX=rX>>Y , сдивнуть регистр rX на Y бит вправо rX rX =>> Y, sdivnut register rX Y bit to the right | Не тестировалось с Y>8 Not tested with Y> 8 |
$*X YY * $ X YY | rX=rX*YY , умножить регистр rX на YY rX * YY = rX, multiply register at rX YY | |
$/X YY $ / X YY | rX=rX/YY , делить регистр rX на YY rX = rX / YY, split register at rX YY | |
$-X YY $-X YY | rX=rX-YY , вычесть YY из регистра rX rX = rX-YY, YY deducted from the register rX | |
$+X YY $ + X YY | rX=rX+YY , прибавить YY к регистру rX rX + YY = rX, YY added to the registry rX | |
$tXXXX $ tXXXX | ??? запускает процесс получения фотографии. ?? starts the process of getting photos. Назначение параметра не очень ясно. ??? Use this setting is not very clear.?? | |
$f $ f | маркер конца raw команды marker raw end of the team | |
$wX $ wX | записать значение регистра rX на шину i2c. write value register rX tyre i2c. Используется только как часть raw команд вместо одного из байт. Used only as part of raw commands instead of a byte. | |
$rX SAB … F $ rX SAB… F | попытаться прочитать с шины i2c X байт, подготовленных предыдущей raw командой в регистры rS, rA, rB,…, rF , где X — это общее количество байт, которое должно быть прочитано (всегда на 1 больше, чем было указано в raw команде чтения), S — номер регистра, в который будет записано реальное прочитанное количество байт (в некоторых случаях это значение может быть меньше X ), A–F — номера регистров в количестве X-1 , в которые будут записаны прочитанные данные. try to read tires i2c X bytes prepared team in the previous raw registers rS, rA, rB,…, rF, where X - the total number of bytes to be read (always at 1 higher than indicated in raw team reading) , S - number register, which will be recorded in a real read the number of bytes (in some cases, this value may be less than X), A to F - numbers of registers in the number of X-1, which will be recorded in the read data. Пример: $r3 0 0 1 . Example: $ r3 0 0 1. Статусный байт практически всегда игнорируется, поэтому первые два номера регистров в списке обычно совпадают. Status byte almost always ignored, so the first two numbers of registers in the list usually coincide. | Не проверялось: X>5 Not checked: X> 5 |
Описывается соответствие значений, передаваемых прошивкой в %0 , стандартным значениям свойств (тем, которые предполагает прошивка). Describes line values transmitted firmware in 0%, standard values for properties (those that involves firmware).
Примечание: Реально прошивкой используются только значения 3–f. Note: In reality firmware uses only 3-f values.
Примечание: Реально прошивкой используются только значения 0–4. Note: The firmware used only realistic significance 0-4.
В прошивке данное свойство не используется, но в оригинальном драйвере присутствует. In this firmware feature is not used, but the driver is present in the original.
В прошивке данное свойство не используется, но в оригинальном драйвере присутствует. In this firmware feature is not used, but the driver is present in the original.
Примечание: Реально прошивкой используются только 0 и 1. Note: In reality firmware uses only 0 and 1.
В оригинальном драйвере не используется. In the original driver is not used.
Примечание: Значение 2 прошивкой не используется Note: Value 2 firmware is not used
В прошивке данное свойство не используется, но в оригинальном драйвере присутствует, поэтому реальный список значений неизвестен. In this firmware feature is not used, but the driver is present in the original, so the actual list of values is not known. Названия подобраны приблизительно (на основе других драйверов). The names selected approximately (on the basis of other drivers).
Примечание: Реально в прошивке скорее всего используются только значения 0–5. Note: In reality firmware likely to be used only significance 0-5.
00-0f от нормального, до самого светлого. 00-0f from normal, until very bright. В прошивке данное свойство не используется, но в оригинальном драйвере присутствует. In this firmware feature is not used, but the driver is present in the original.
00-10 от самого блеклого, до самого контрастного. 00-10 from the faded, until very contrasting. В прошивке данное свойство не используется, но в оригинальном драйвере присутствует. In this firmware feature is not used, but the driver is present in the original.
00-10 от самого "размытого", до самого "четкого". 00-10 from the "blurred", until the "clear". В прошивке данное свойство не используется, но в оригинальном драйвере присутствует. In this firmware feature is not used, but the driver is present in the original.
В оригинальном драйвере не используется. In the original driver is not used.
Помимо обычных команд в драйвере есть особый тип команд, синтаксис которых не проверяется, т.к. In addition to the normal teams in the driver has a special type commands, syntax is not checked, because они представлены просто последовательностями байт. they represented just sequences of bytes. Эти команды предназначены для непосредственного взаимодействия с модулем камеры телефона. These commands are designed for direct interaction with the camera phone module.
Каждая команда имеет длину от 3 до 8 байт и обязана заканчиваться командой $f , последнее сделано для универсализации применяемого в прошивке телефона интерпретатора, т.к. Each team has a length of 3 to 8 bytes and is bound to end in command $ f, last done for the universalization of firmware used in the phone interpreter, because фактически для рассматриваемой модели телефонов эта команда не нужна (см. ниже). in fact, the model phones for this command is not needed (see below).
Каждый байт raw команды имеет свое значение, которое зависит от первых двух байт команды. Each byte raw team has its value, which depends on the first two bytes team. Первый байт определяет тип команды и одновременно общее количество байт в команде (поэтому команда $f нужна только формально). The first byte specifies the type of team, while the total number of bytes in a team (so the team is only $ formally f).
03 AA BB : Используется при тестировании сенсора. 03 AA BB: Used for testing of the sensor. Точное назначение не выяснялось. The exact designation is not found. 04 AA BB CC : в оригинальном драйвере не используется (возможно, что и не существует). 04 AA BB CC: in the original driver is not used (and possibly non-existent). 05 AA BB CC DD : 05 AA BB CC DD: 05 01 BB CC DD : Подготовить на i2c шине DD байт из регистров модуля камеры с номерами с BBCC по BBCC+DD-1 для дальнейшего чтения их со стороны драйвера. 05 01 BB CC DD: Prepare for i2c tyre DD byte register with the camera module rooms on the BBCC BBCC + DD-1 for a further reading them from the driver. 05 02 BB CC DD : Записать байт DD в регистр модуля камеры с номером BBCC . 05 02 BB CC DD: Record DD byte in the register camera module with a number BBCC. 06 AA BB CC DD EE : 06 AA BB CC DD EE: 06 02 BB CC DD EE : Записать байт DD в регистр модуля камеры с номером BBCC , а байт EE в регистр BBCC+1 . 06 02 BB CC DD EE: Record DD byte in the register camera module with a number BBCC, a byte in the register EE BBCC +1. BB всегда равен нулю, возможно, что он не является частью номера регистра, а просто не используется. Note: In practice bytes BB always equals zero, it is possible that he is not part of register numbers, but simply not used. 07 AA BB CC DD EE FF : 07 AA BB CC DD EE FF: 07 02 BB CC DD EE FF : Записать байт DD в регистр модуля камеры с номером BBCC , байт EE в регистр BBCC+1 , а байт FF в регистр BBCC+2 . 07 02 BB CC DD EE FF: Record DD byte in the register camera module with a number BBCC, EE byte in the register BBCC +1, and FF byte in the register BBCC +2. Примечание: На практике байт BB всегда равен нулю, возможно, что он не является частью номера регистра, а просто не используется. Note: In practice bytes BB always equals zero, it is possible that he is not part of register numbers, but simply not used. 07 04 BB CC DD EE FF : Используется при тестировании сенсора. 07 04 BB CC DD EE FF: Used for testing of the sensor. Точное назначение не выяснялось. The exact designation is not found. 08 AA BB CC DD EE FF GG : Используется при тестировании сенсора. 08 AA BB CC DD EE FF GG: Used for testing of the sensor. Точное назначение не выяснялось. The exact designation is not found. Примечание 1: После всех команд записи вставляется небольшая пауза в 5 милисекунд, чтобы контроллер успел обработать запрос. Note 1: After recording all commands into a small pause in the 5 milliseconds, the controller had to handle the request.
Примечание 2: Вместо байт, означенных выше как данные, можно использовать команду $wX , которая фактически передаст значение регистра rX вместо замещенного байта, например, 05 02 00 08 $w0 $f $d0005 , т.е. Note 2: Instead of bytes, designated as the data above, you can use the command $ wX that effectively convey the importance of the register rX replacement instead of bytes, for example, 05 02 00 08 $ w0 $ f $ d0005, the в качестве данных в регистр 0008 будет записано значение регистра r0 . as a data register in 0008 will be recorded value register r0.
Примечание 3: Чтобы прочитать данные, переданные raw командой используйте конструкцию вида 05 01 BB CC DD $f $rX SA … F , например, 05 01 00 03 03 $f $r4 0 1 2 3 , в r0 запишется статусный байт, а в r1–r3 — данные. Note 3: To read the data provided raw team use design type 05 01 BB CC DD $ f $ rX SA… F, for example, 05 01 00 03 03 $ f $ r4 0 1 2 3 in r0 written status byte, and r1-r3 - data.
Примечание 4: Поскольку синтаксис raw команды не проверяется, она может прерываться другими командами, например: 06 02 00 01 01 $c0 00 03 $cl 05 $cx $f $d0005 или 06 02 00 01 !1 !0 $f $d0005 (при использовании в макросе). Note 4: As raw command syntax is not checked, it may be interrupted by other teams, for example: 06 02 00 01 01 $ 00 03 $ c0 cl $ 05 cx $ f $ d0005 or 06 02 00 01! 1! 0 $ f $ d0005 ( Using macro).
Символом w помечены регистры, которые в оригинальном драйвере работают на запись, а r — на чтение. Character w marked registers, which in the original driver working for the record, and r - for reading. Группировка регистров обусловлена либо логическим единством, либо тем, что в оригинальном драйвере регистры читаются одним блоком. Grouping registers due to a logical unity, a fact that the original driver registers read one block.
См. описание в разделе "Описание команд модуля камеры" See the description in the "Description command module chamber"
Используются в макросах ожидания и т.п. Used in expectation of macros, etc. для определения момента смены режимов работы to determine the date of the change of regimes work
Значение вычисляется по формуле: желаемый FPS*2 Value is calculated by the formula: the desired FPS * 2
Значение задается в милисекундах. The value is in milliseconds. Младший байт заносится в регистр 0B, старший — в 0C. Younger byte entered in the register 0B, senior - in 0C.
Значение задается в килобайтах. The value is in kilobytes. Младший байт заносится в регистр 0D, старший — в 0E. Younger byte entered in the register 0D, senior - in 0E.
Значение задается в килобайтах. The value is in kilobytes. Младший байт заносится в регистр 0F, старший — в 10. Younger byte entered in the register 0F, senior - at 10.
Значение задается в килобайтах. The value is in kilobytes. Младший байт заносится в регистр 11, старший — в 12. Younger byte entered in the register 11, a senior - at 12.
Задается в процентах, т.е. Set in a percentage, that is от 0 до 100. from 0 to 100. Регистр 13 — начальное качество (максимальное), регистр 14 — рекомендуемое значение (среднее), регистр 15 — предельное качество (минимальное). Register 13 - initial quality (maximum), register 14 - recommended value (average), register 15 - as the limit (minimum). В официальных версиях драйверов во все три регистра помещают одно и то же значение. The official versions of all three drivers in the register placed the same importance.
Назначение данного регистра не выяснялось, значение 00 соответствует бесконечности (отсутствие ограничения) Appointment of the register is not found, the value corresponds to 00 infinity (no restrictions)
Используется прошивкой после окончания процесса сжатия фотографии. Used firmware after the end of the compression process photos.
Регистр 20 — оттенок (т.е. баланс между малиновым и зеленым). Register 20 - connotation (ie, the balance between the raspberry and green). Регистр 21 — цветовая температура (т.е. баланс между синим и желтым). Register 21 - color temperature (ie, the balance between the blue and yellow). Диапазон 81–80, среднее (нейтральное) — 00. The range of 81-80, average (neutral) - 00. Установка значений регистром сама по себе ничего не меняет (см. команду номер 13 модуля камеры). Setting Values register itself does not change (see number 13 command module chamber). Будте внимательны! Be careful! Данные значения являются лишь смещением относительно текущего пресета баланса белого! These values are only the offset relative to the current preset white balance!
Используются прошивкой для чтения текущего состояния автоэкспозиции. Firmware used to read the current state of avtoekspozitsii. 22 — младший байт, 23 — старший байт. 22 - byte Jr., 23 - Senior bytes.
Используются прошивкой для чтения содержимого EXIF после получения фотографии. Use firmware to read the contents of EXIF after receiving photos. Чувствительность ISO: 25 — младший байт, 26 — старший. ISO Sensitivity: 25 - byte Jr., 26 - a senior. Экспозиция: 27 — младший байт, 28 — старший. Exposition: 27 - byte Jr., 28 - a senior.
Используются прошивкой для чтения содержимого EXIF после получения фотографии. Use firmware to read the contents of EXIF after receiving photos. Баланс белого — регистр 29, ??? расстояние светодиодной вспышки ??? — регистр 2A, флаг ксеноновой вспышки — регистр 2B. White balance - register 29,?? Distance LED flashes?? - Register 2A, the flag xenon flashes - register 2B.
Содержит значение, соответствующее текущему положению оптической системы камеры (т.е. расстоянию фокусировки). Contains the value corresponding to the current situation of the optical system, the camera (ie focusing distance).
Используется прошивкой для чтения текущего состояния системы автофокуса. Firmware is used to read the current state of Auto.
Используется для получения информации о установленном модуле камеры. Used to obtain information on the module defined by the camera.
Далее будут описаны команды, передаваемые модулю камеры, raw командой 06 02 00 01 PP CC , где СС — номер команды, а PP — параметр команды. Next, the team will be described transmitted camera module, raw command 06 02 00 01 PP CC, where the SS - the number of teams and PP - command option.
Примечание: Блокировка сбрасывается при попытке принудительно установить значение чувствительности ISO или скорости затвора (выдержки). Note: Block dropped while trying to forcibly set the ISO sensitivity or shutter speed (excerpts).
Вычисляется по формуле: желаемый fps*2. Compute the formula: * 2 fps desired. Соответственно, выдержка будет 1/fps. Accordingly, the excerpt will 1/fps.
Параметр 01. Parameter 01. Установить коррекцию баланса белого равным значениям регистров модуля камеры с номерами 20 и 21. Install white balance correction values equal to the camera module registers with the numbers 20 and 21. Будте внимательны! Be careful! Значения регистров 20,21 являются лишь смещением относительно текущего пресета баланса белого! Perhaps there are only registers 20.21 biassed against the current preset white balance!
В официальном драйвере используется только с параметром 01. In an official driver with a parameter is only used 01.
В официальном драйвере используется только с параметром 01. In an official driver with a parameter is only used 01.
Известны два варианта параметра: There are two versions of the parameter:
Диапазон параметра: от 00 (бесконечность) до 20 (около 8-8.5 см). Parameter range: from 00 (infinity) to 20 (about 8-8.5 cm).
Бит 0 — отражение право-лево (вкл/выкл), Бит 1 — отражение верх-низ (вкл/выкл). Bit 0 - reflected right-left (on / off), Bit 1 - reflect up-down (on / off). Биты 3 и 4 используются в официальном драйвере, но функций никаких не выполняют. Bits 3 and 4 are used in the official driver, but did not perform any functions.
00 — нормальная, 0F — максимальная, стандартная — 00. 00 - normal, 0F - Maximum standard - 00.
F8 — минимальный, 08 — максимальный, стандартный — 00. F8 - minimum, 08 - the maximum standard - 00.
F8 — минимальный, 08 — максимальный, стандартный — 04. F8 - minimum, 08 - the maximum standard - 04.
E0 — минимальная (Ч/Б), 20 — максимальная, стандартная — 00. E0 - min (C / B), 20 - the maximum standard - 00.
Примечание: Существует вид увеличения, который не используется в оригинальной прошивке, он характеризуется плавным переходом между предыдыщим и следующим значением увеличения. Note: There is kind of an increase, which is not used in the original firmware, it is characterized by smooth transition between predydyschim and the following value increases. Для использования этого вида увеличения необходимо прибавить ко всем значениям 80. To use this type of increase is necessary to add to all the values of 80.
Используется с параметром 00. Used with the parameter 00.