IXUS 1000 HS Porting Thread - page 13 - DryOS Development - CHDK Forum

IXUS 1000 HS Porting Thread

  • 439 Replies
  • 132918 Views
Re: IXUS 1000 HS Porting Thread
« Reply #120 on: 06 / November / 2010, 13:16:05 »
Advertisements
>you can try to ! the ifs related to see if it work

thats all too dangerous.

with current chdk code, the camera get the message that all keys are press.

when i make the menu open by hand, then i think there happen bad things.
Ixus 1000 HS

Re: IXUS 1000 HS Porting Thread
« Reply #121 on: 07 / November / 2010, 13:44:58 »
I have now the keyboard work.Only the mask bits not.video key switch on record mode and alt mode.so i use right half press to activate chdk alt mode for more testing

See that file.

http://www.zshare.net/download/82452545ab2ec4ff/

Seem the wheel work too, because when show chdk menu and i rotate the wheel, the active menu entry move up or down.

Only the mask seem not work, because the record image too change when i move the wheel

So i need for the wheel too a mask i think

here is a code snippet.The if (i <2) is need because the zoom key work as other canon Camera.(key press is clear a bit):but the rest of the IX1000 keys are key press set a bit.

I add the zoom in front of list.

     { 1, KEY_ZOOM_IN         , 0x00000004 },  // looks the same in ixus1000 needs to be tested
   { 1, KEY_ZOOM_OUT        , 0x00000001 },  // looks the same in ixus1000 needs to be tested
   { 2, KEY_SHOOT_FULL   , 0x00002002 },  // ASM1989 testing ixus1000
   { 2, KEY_SHOOT_HALF   , 0x00002000 },  // looks the same in ixus1000 needs to be tested


....

so the below code is ok.other functions i have too change


long kbd_is_key_pressed(long key) {
    int i;
    for (i=0;keymap.hackkey;i++) {
           if (keymap.hackkey == key) {
         if (i <2)
         {
                   return ((kbd_new_state[keymap.grp] & keymap.canonkey) == 0) ? 1:0;
         }else
         {
                return ((kbd_new_state[keymap.grp] & keymap.canonkey) == 0) ? 0:1;
         }
        }
    }
    return 0;
}

I see also histogram working, but i am not sure if it look correct, sometimes seem it look correct with the histogram show from Canon Firmware, sometimes not
« Last Edit: 07 / November / 2010, 13:50:28 by Bernd R »
Ixus 1000 HS

*

Offline asm1989

  • *****
  • 527
  • SX720, SX260, SX210 & SX200
Re: IXUS 1000 HS Porting Thread
« Reply #122 on: 08 / November / 2010, 01:45:15 »
good news Im working now on captseq

Re: IXUS 1000 HS Porting Thread
« Reply #123 on: 08 / November / 2010, 04:27:12 »
>good news Im working now on captseq

I remember you tell that i must go to memory browser and post some values.The memory browser work here too.I test yesterday long time chdk features.No crash happen, it happen only that keys sometimes do no reaction, some graphic garbage, but i can always switch off the cam correct with buttons(lens move always in)and need not remove battery,

1: temperature of lens, CCD, accu ---> work.

2: the accu full % or voltage show work.
the low value is set to 3255.my accu have 3.5 Volt.
but with that value show 0% and Canon battery display show 2 bars.teh high volatge is ok.

But i think this chdk values are good, because i remember a rule that on Nickel Cadmium battery voltage should not drop under 1,1 Volt for longer accu live of a 1.2 Volt cell

Or are there for Lion Ion Cells other rules ?

what values you have on your Sx210 ?

-----------------------
3: Edge overlay in play mode ----> work.in record Mode ---> not correct center.

The IX 1000 have a 16:9 display, but image i record are 4:3.and the image are center in middle

But when switch to picture record mode the edge overlay is always show too left.its here not center.but in play mode it work

Grid display--> not center correct in record mode.Have same Problem as Edge overlay.
A option that grid display is show in play mode i not find.maybe there is a key, but because my keys not work good ( i need first add full press on right ... keys, but i was so happy that chdk menus work, that i play long time with the options ;-) )  


histogramm, i am not sure.

zebra Mode not work.I set in canon firmware exposure +2 but i see nothing in zebra mode blink.

I think zebra mode need raw data, but wy work the histogramm a little ?

4. the benchmark ---> work

but the values on read look strange.maybe the CAM is too fast ;-)

screen
write 14727 58 fps
read -30822 -91 fps

memory
write 92304
read 131072

some values for some flash cards i have, i can post later.

Edit:

I add ixus 1000 speed values.seem newest Canon generation have more enhance read 64 k data rate.IX1000 HS get upto 16 mb/sec with a Class 4 Card

http://chdk.wikia.com/wiki/Benchmarks
« Last Edit: 08 / November / 2010, 07:04:52 by Bernd R »
Ixus 1000 HS


Re: IXUS 1000 HS Porting Thread
« Reply #124 on: 08 / November / 2010, 08:37:17 »
I do now a testcode and look what happen, when i try to block all keys, by add non keypress value to
   
        physw_status[1]
   physw_status[2]

see here the code.

// like SX110
void my_kbd_read_keys() {
   physw_status[1] =0x6f;
   physw_status[2] =0x418000;
   return;

In theory there should then no keypress work.but when after chdk init press a key, then this keypress is processed by the ROM.but later keypress is then not process.

But the Video Key, play key and power on off key work always.

So it seem not possible to use the video key as alt button, because the button switch always rec mode on and off.

I find it a good idea, when the alt key is activate when menu is press over 1 sec.but chdk does not support this way.

Wy i dont know, normaly need not so often change between alt and normal mode.

the ixus 300 way press right and down button, can work too on Ixus 1000, but i notice that you need press very hard onto the keys to press both and i fear that the keys maybe get damage in future.they look not very stable.

maybe somebody get a idea of a better alt mode activate ?

also i see the wheel work always with this code for the firmware.

BTW: here is func that calling it.look as all other camera

long __attribute__((naked,noinline)) wrap_kbd_p1_f() {
    asm volatile(
                "STMFD   SP!, {R1-R5,LR}\n"
                "MOV     R4, #0\n"
                "BL      _kbd_read_keys\n"       // replaces kbd_fetch_data()
                "BL      my_kbd_read_keys\n"     // +
                "B       _kbd_p1_f_cont\n"       // continue at ROM:FF834858
    );
    return 0;   // shut up the compiler
}
Ixus 1000 HS

*

Offline asm1989

  • *****
  • 527
  • SX720, SX260, SX210 & SX200
Re: IXUS 1000 HS Porting Thread
« Reply #125 on: 08 / November / 2010, 13:35:28 »
Ok, thanks for the testing, we will try to solve some of this things too

does the other solution fix all the key issues or not?

If you are able to get into debug and enable osd, you can start looking at changes in propesets, get propset3.h in include and check if all the values are ok, for chages in iso, av, tv, flash....,  

also you can check the changes in modes, once you swith to M, P , video, scn....

I will get a captseq soon to test

Re: IXUS 1000 HS Porting Thread
« Reply #126 on: 09 / November / 2010, 10:35:07 »
>does the other solution fix all the key issues or not?

i fix  the problem with the Hard press.I use several entries with diffrent values for same key and change the code so it accept more than 1 bit at same time.for example key down use this values

Code: (c) [Select]
{ 1, KEY_DOWN , 0x000e0000},  // ID 5   work
{ 1, KEY_DOWN , 0x000a4000},  // ID 5   work

and code to work is then this.

long kbd_get_pressed_key() {
    int i;
    for (i=0;keymap[i].hackkey;i++)
{
if (i <2 )
{
       if ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0)return keymap[i].hackkey;
}
else
{
       if ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == keymap[i].canonkey)
return keymap[i].hackkey;
}
    }
    return 0;
}


I have now a complete list, what key presses are happen, when the other sides are half press due to not exact middle press.

0 -> 0
406f-> 0
418000 -> 0     right soft press

0 -> 0
8486f-> 0         8686f     686f
418000 -> 0     right hard press

0 -> 0
4006f-> 0        
418000 -> 0     left soft press

0 -> 0
c806f-> 0         ca06f 4a06f
418000 -> 0     left hard press


0 -> 0
8006f-> 0
418000 -> 0     down soft press

0 -> 0
e006f-> 0       ;sometimes e406f-> 0 e806f-> 0
418000 -> 0     down hard press

0 -> 0
4206f-> 0
418000 -> 0     up soft press

0 -> 0
4246f-> 0       ;sometimes 4646f-> 0 ;sometimes 646f-> 0
418000 -> 0     up hard press

>If you are able to get into debug and enable osd, you can start looking at changes in >propesets, get propset3.h in include and check if all the values are ok, for chages in iso, av, >tv, flash....,

Yes i can enable the prop debug info and i get 9 values.there are not much changes see.

But i do not understand the chdk wiki

http://chdk.wikia.com/wiki/Adding_support_for_a_new_camera

"""
To fill iso_table[] you check PROPCASE_ISO_MODE for the different ISO values the camera allows you to select. Note that Auto gets index 0 and HI gets index -1.
""""  

How i can set what propcase is use ?
I see only a value 0 in the propcase choose.Need i then set this values in the number ?

#define PROPCASE_DRIVE_MODE                6
 #define PROPCASE_FOCUS_MODE                12
 #define PROPCASE_FLASH_MODE                   16
 #define PROPCASE_USER_TV                   40
 #define PROPCASE_TV                       69
 #define PROPCASE_USER_AV                   39
 #define PROPCASE_AV                        68
 #define PROPCASE_MIN_AV                    77
 #define PROPCASE_SV                        73
 #define PROPCASE_DELTA_SV                  70
 #define PROPCASE_SV_MARKET                 72
 #define PROPCASE_BV                        71
 #define PROPCASE_ISO_MODE                  21
 #define PROPCASE_SUBJECT_DIST1             65
 #define PROPCASE_SUBJECT_DIST2             66
 #define PROPCASE_SHOOTING                    205
 #define PROPCASE_IS_FLASH_READY               221
 #define PROPCASE_OVEREXPOSURE                76
 #define PROPCASE_SHOOTING_MODE               0

But when i press left key or set key, value do not change.

normaly i need not the right key.Or do i need the right key to increase the number ?
the right i use for now as the alt key switch.

I get the idea to use the Set Key as ALT key switch, when it is press over 0,7 sec.

The Canon Firmware use too the set key and do a long press action.When press the set key 1 sec, a blue screen come and the time is show.

also the down key have a long press action,
when press over 1 sec the display brightness raise or get lower.

the set key is in the canon Firmware working  that it do only a action on release.(the left menu popup when the button is release under 1 sec time.and when press 1 sec, the clock come

the menu button, do pop up menu when the key is press.so i think use the set button is better to hide Canon Firmware action.

So i need now code a tick values (every my_kbd_read_keys() increase a long value by 1)

and every keypress, the tick value is store for kbd_prev_state[1]  and  kbd_new_state[1];

And when the kbd_new_state_tick[1] tick is 0,7 sec higher as kbd_new_state_tick[1] of the KEZ?SET then i want sent a KEY_PRINT

So i need not change something in chdk Core Files

Thats my idea, but if that work is the other question.
Do chdk experts think thats possible ?

EDIT:

I read also that there need shoot images to set the zoom steps.

But the IX1000 have a zoomslider that work on 2 speeds.when use slow speed, there are very fine zoom  possible.I think all in all you can reach over 100 steps and i cant say if i really set correct the zoom to next step

is there other Canon camera that have too lots zoom steps, and what can do to avoid long time to shoot testpics  ?
« Last Edit: 09 / November / 2010, 10:53:31 by Bernd R »
Ixus 1000 HS

*

Offline asm1989

  • *****
  • 527
  • SX720, SX260, SX210 & SX200
Re: IXUS 1000 HS Porting Thread
« Reply #127 on: 09 / November / 2010, 12:02:58 »
In the debug menu you choose If you want to see props or params,
and in the second option ...page  if is set to 0 you see from 0 to 9
if is set to 2 for example you see from 20 to 29 for example to check if ISO_MODE changes in the 22,

and the same with all the values

for example if PROPCASE_SHOOTING_MODE               49 is ok,

once you change form P to auto to night shot... the number we need for shooting.c will change.


Re: IXUS 1000 HS Porting Thread
« Reply #128 on: 10 / November / 2010, 07:04:39 »
ok, thanks for info, so i need the right button.I change now code that set key work as alt switch after a normal klick and disable masks so i can get the values easy for now.

49 is correct,the values changes.in play mode value is 32768 or when switch is set to auto.With switch in middle position value can set as this.

P Program 32772
portrait 32783
kids & peds 32786
smart shutter 33321
high speed burst 33288
best image selection 33289
handheld night scene 33325
low light 32801
super vivid 33318
poster effect 33319
color accent 33309
color swap 33310
fish eye 33323
minature effect 33324
beach 32791
foliage 32789
snow 32790
fireworks 32792
long shutter 32774
stitch assist Mode  1--- >  2 33292
stitch assist Mode  1 < ---   2 33292 (same value)

when switch is in video mode thereare diffrent values possible

standard 2614
super slowmotion 2619
minature effect 2620
color accent 2612
color swap 2613

#define PROPCASE_ISO_MODE                   149    //ASM1989 looks like

this is correct too, in 149 stand the true ISO value

for example when i set to ISO 125 then here stand 125.when set to ISO 3200 then stand 3200

0 is Auto

EDIT:

I check now the e/v correction

#define PROPCASE_EV_CORRECTION_1 107  //ASM1989 looks like on P mode goes from 65344 to 0 to 192

0  0

-1/3 65504
-2/3 65472
-1    65440
-1 1/3 65408
-1 2/3 65376
-2       65344

+1/3 32
+2/3 64
+1    96
+1 1/3 128
+1 2/3 160
+2        192


#define PROPCASE_EV_CORRECTION_2            209  //ASM1989 looks like on P mode goes from 65344 to 0 to 192

here stand always 0

but when i look at 200 there come valus that increase when i do ev +.also they increase more, when i move camera in bright light.can reduce to 0 when i do  EV -

I guess that is a pixel count of overexposed pixels.
I see no define for 200 in propset3, but maybe this value is usefull in any way in chdk
If so you can look what other camera show in 200

BTW: i do a link in the Sd4500 wiki to this post, and all new props i post in this post.
« Last Edit: 10 / November / 2010, 10:31:36 by Bernd R »
Ixus 1000 HS

*

Offline asm1989

  • *****
  • 527
  • SX720, SX260, SX210 & SX200
Re: IXUS 1000 HS Porting Thread
« Reply #129 on: 10 / November / 2010, 15:59:18 »
thanks Bernd R, what key are you using for gettin into the chdk menu

can you post the last kbd.c

 

Related Topics