Hoy estuve haciendo un par de pruebas más y me lleve una sorpresa al descubrir más o menos como son llamadas las propiedades del celular al momento de ser usadas.
Luego de un subtitulo que generalmente dice "OTHER SEQ" vamos a encontrar un montón de macros con un código de la forma
y en algunos casosseq_set_prop_0 = ......
seq_set_prop_1 = ......
Bueno... ambos códigos quieren decir casi lo mismo. Cada propiedad tiene un significado (por ej, la 6 generalmente es para el zoom) y en el segundo ejemplo, el número que figura luego del número de propiedad es nada mas ni nada menos que un valor que puede tomar la misma.seq_set_prop_2_0 = .....
seq_set_prop_2_1 = .....
seq_set_prop_2_2 = .....
Que significa esto? que si tenemos un código que dice
Significa que ese macro es ejecutado por el celular cuando la propiedad 2 cambia al valor 4.seq_set_prop_2_4 = .....
Ahora, en el primer ejemplo que di, no tengo ese número para identificar el valor de la propiedad. Por lo tanto la macro es invocada para todos los valores.
Cual es el chiste de que sea invocada siempre? justamente que dentro de la macro vamos a encontrar en algun sitio un "%0", dicho número va cambiando y hace referencia siempre al nuevo valor de la propiedad.
Por lo tanto los siguientes dos códigos hacen exactamente lo mismo.
seq_set_prop_0 = $s5 %0
$-5 09
#COM_EVENT(06,$w5);seq_set_prop_0_3 = $s5 03 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_4 = $s5 04 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_5 = $s5 05 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_6 = $s5 06 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_7 = $s5 07 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_8 = $s5 08 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_9 = $s5 09 $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_a = $s5 0a $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_b = $s5 0b $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_c = $s5 0c $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_d = $s5 0d $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_e = $s5 0e $-5 09 #COM_EVENT(06,$w5);
seq_set_prop_0_f = $s5 0f $-5 09 #COM_EVENT(06,$w5);
Hice una prueba media loca que resulto un tanto divertida y didáctica. Elimine el código de la propiedad 0 de mi k550 (el EV) y adapte el código del zoom para que tomara los valores del EV y seteara el zoom del celular.
El resultado fue que el EV dejo de andar pero al bajarlo o subirlo, el zoom se acercaba o alejaba (lastima que al sacar la foto todavia no logro que respete el zoom que se observa por pantalla).seq_set_prop_0 = #SET_REG(24,01)
$s4 %0 // Place value in reg 4
$+4 07 // Como el valor comienza en 3 y el del zoom en 10 le sumo 7
$s5 40 // Place value 128 in reg 5
$*5 0a // Multiply reg 5 by a
$/5 r4 // Divide reg 5 with reg 4
$"Cam_mag_value_%5"
#COM_EVENT(61,$w5);
Lo que no logro aún es extender los valores permitidos para una propiedad, si recibe valores entre 3 y 16 no logro cambiarlo... actualizo la variable "sup_properties" con los nuevos valores pero no hace efecto.
NOTA: los macros seq_set_prop aparentemente son llamadas al momento de setear una propiedad, mientras que los seq_get_prop son llamados al consultarla.
Otras sentencias
Luego de un arduo trabajo de investigación logre decifrar dos nuevas sentencias (de la segunda muuuy seguro no estoy), me refiero a $p y $m.
La sentencia $p es utilizada para copiar a un registro el valor de alguna propiedad, si hacemos
Lo que estamos haciendo es guardando el valor de la propiedad 6 (el zoom) en el registro 0. En mi k550 el zoom va de 3 a F, el valor por default es 9. Si enciendo la cámara y ejecuto la anterior sentencia, lo que voy a estar haciendo es guardando un 9 en el registro 0.$p0 06
Por otro lado la sentencia $m sospecho, y necesitaría hacer mas pruebas, que lo que hace es mover el valor de un registro a otro registro (distinto de $s que movía un valor a un registro).
El siguiente código copia el valor del registro 4 al registro 0.
Como ejecutar Funciones del Celular$m0 4
Internamente el celular posee una serie de comando/funciones para todas las opciones que brinda la cámara, estas funciones son invocadas en todo momento (especialmente en el seteo de propiedades).
En algunos teléfonos más nuevos van a encontrar unas macros creadas que sirven para esto (COMMAND o COM_EVENT) pero de todas formas el código en hexadecimal que usa para invocar a la función propiamente dicha es el siguiente
Los primeros 6 números hacen referencia al llamado en si, los siguientes 2 números teóricamente significan 00=disable / 01=enable, pero no logre entender que diferencia hay entre ambos.06 02 00 01 XX YY
Lo más importante son los últimos 4 números, en las XX vamos a colocar el valor que le pasamos a la función, mientras que en las YY va el número de función. ¿De donde sacamos ese número? lamentablemente no encontré ninguna tabla o algo que las especifique.
Si revisamos el código del camdriver podemos encontrar que la función de zoom es la 61, la opción de foco es la 46, etc.
Todavía no lo tengo muy en claro, pero luego de escribir esos número es necesario que llamemos a la sentencia $f (significara function?) y seguida de la misma siempre encuentro otra serie de números que terminan siempre con un $d0005.
Por ejemplo
SET_JPEG_MAX=06 02 00 0D !1 !0 $f $d0005;COMMAND = 06 02 00 01 !1 !0 $f $r3 012 $d0005;





RESPONDER

Marcadores