Changeset 937


Ignore:
Timestamp:
02/01/12 08:18:10 (17 months ago)
Author:
rudi_de
Message:

Aktualisierung auf Rev. 1627 internationaler Branch: Release-1.0
http://trac.assembla.com/chdk/changeset/1627/branches/release-1_0
Danke srsa_4c!

Betrifft a430 und generic/kbd.c

  • Aktualisierungen für a430
  • Tatsturinitialisierung in generic/kbd.c geändert
Location:
trunk/platform
Files:
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/platform/a430/kbd.c

    r835 r937  
    1 #include "lolevel.h" 
    2 #include "platform.h" 
    3 #include "conf.h" 
    4 #include "core.h" 
    5 #include "keyboard.h" 
     1#include "../generic/kbd.c" 
    62 
    7 typedef struct { 
    8         long hackkey; 
    9         long canonkey; 
    10 } KeyMap; 
    11  
    12  
    13 static long kbd_new_state[3]; 
    14 static long kbd_prev_state[3]; 
    15 static long kbd_mod_state; 
    16 static KeyMap keymap[]; 
    17 static long last_kbd_key = 0; 
    18 static int usb_power=0; 
    19 static int remote_key, remote_count; 
    20 static int shoot_counter=0; 
    21 #define DELAY_TIMEOUT 10000 
    22  
    23 #define NEW_SS (0x2000) 
    24 #define SD_READONLY_FLAG (0x20000) 
    25  
    26 #define USB_MASK 0x40000 
    27 #define USB_REG 2 
    28  
    29 #ifndef MALLOCD_STACK 
    30 static char kbd_stack[NEW_SS]; 
    31 #endif 
    32  
    33 long __attribute__((naked)) wrap_kbd_p1_f() ; 
    34  
    35 void wait_until_remote_button_is_released(void) 
    36 { 
    37  
    38 long x[3]; 
    39 int count1; 
    40 int count2; 
    41 int tick,tick2,tick3; 
    42 int nSW; 
    43 int prev_usb_power,cur_usb_power; 
    44  // ------ add by Masuji SUTO (start) -------------- 
    45     static int nMode; 
    46  // ------ add by Masuji SUTO (end)   -------------- 
    47  
    48 asm volatile ("STMFD SP!, {R0-R11,LR}\n"); // store R0-R11 and LR in stack 
    49 debug_led(1); 
    50 tick = get_tick_count(); 
    51 tick2 = tick; 
    52 static long usb_physw[3]; 
    53  if (conf.synch_enable && conf.ricoh_ca1_mode && conf.remote_enable && (!shooting_get_drive_mode()|| (shooting_get_drive_mode()==1) || ((shooting_get_drive_mode()==2) && state_shooting_progress != SHOOTING_PROGRESS_PROCESSING))) 
    54 //   if (conf.synch_enable && conf.ricoh_ca1_mode && conf.remote_enable && (!shooting_get_drive_mode()|| ((shooting_get_drive_mode()==2) && state_shooting_progress != SHOOTING_PROGRESS_PROCESSING)))                                      // synch mode enable so wait for USB to disconnect 
    55   { 
    56 // ------ add by Masuji SUTO (start) -------------- 
    57         nMode=0; 
    58         usb_physw[2] = 0;                                             // makes sure USB bit is cleared. 
    59         _kbd_read_keys_r2(usb_physw); 
    60         if((usb_physw[2] & USB_MASK)==USB_MASK) nMode=1; 
    61 // ------ add by Masuji SUTO (end)   -------------- 
    62 if(conf.ricoh_ca1_mode && conf.remote_enable) 
    63   { 
    64         if(shooting_get_drive_mode()==1 && state_shooting_progress == SHOOTING_PROGRESS_PROCESSING){                    //continuous-shooting mode 
    65                 if(conf.bracket_type>2){ 
    66                         if(shoot_counter<2) shutter_int=3; 
    67                         shoot_counter--; 
    68                         } 
    69                 else{ 
    70                         prev_usb_power=0; 
    71                         nSW = 0; 
    72                         do 
    73                                 {      
    74                                 usb_physw[2] = 0;                                             // makes sure USB bit is cleared. 
    75                                 _kbd_read_keys_r2(usb_physw); 
    76                                 cur_usb_power = (usb_physw[2] & USB_MASK)==USB_MASK; 
    77                                 if(cur_usb_power){ 
    78                                         if(!prev_usb_power){ 
    79                                                 tick2 = get_tick_count(); 
    80                                                 prev_usb_power=cur_usb_power; 
    81                                                 } 
    82                                         else{ 
    83                                                 if((int)get_tick_count()-tick2>1000) {debug_led(0);} 
    84                                                 } 
    85                                         } 
    86                                 else{ 
    87                                         if(prev_usb_power){ 
    88                                                 tick3 = (int)get_tick_count()-tick2; 
    89                                                 if(nSW==10) { 
    90                                                         if(tick3>50) shutter_int=1; 
    91                                                         nSW=20; 
    92                                                         } 
    93                                                 if(nSW==0 && tick3>0) { 
    94                                                         if(tick3<50) { 
    95                                                         nSW=10; 
    96                                                         } 
    97                                                 else{ 
    98                                                         if(tick3>1000) shutter_int=1; 
    99                                                                 nSW=20; 
    100                                                         } 
    101                                                 } 
    102                                                 prev_usb_power=cur_usb_power; 
    103                                                 } 
    104                                         } 
    105                                 if((int)get_tick_count()-tick >= DELAY_TIMEOUT) {nSW=20;shutter_int=2;} 
    106                                 } 
    107                          while(nSW<20); 
    108                          } 
    109                 }               //continuous-shooting mode  
    110                 else{           //nomal mode  
    111                         shoot_counter=0; 
    112                         if(conf.bracket_type>2){ 
    113                                 shoot_counter=(conf.bracket_type-2)*2; 
    114                                 } 
    115      do 
    116           { 
    117             usb_physw[2] = 0;                                             // makes sure USB bit is cleared. 
    118            _kbd_read_keys_r2(usb_physw); 
    119               
    120            } 
    121  
    122 // ------ modif by Masuji SUTO (start) -------------- 
    123         while(((((usb_physw[2] & USB_MASK)!=USB_MASK) && (nMode==0)) || (((usb_physw[2] & USB_MASK)==USB_MASK) && (nMode==1))) && ((int)get_tick_count()-tick < DELAY_TIMEOUT)); 
    124 // ------ modif by Masuji SUTO (end)   -------------- 
    125         }  
    126   } 
    127  
    128 else 
    129    { 
    130  
    131       do 
    132           { 
    133             usb_physw[2] = 0;                                             // makes sure USB bit is cleared. 
    134            _kbd_read_keys_r2(usb_physw); 
    135               
    136            } 
    137       while((usb_physw[2]&USB_MASK) &&  ((int)get_tick_count()-tick < DELAY_TIMEOUT)); 
    138     } 
    139  } // synch enable 
    140  
    141  
    142 if (conf.synch_delay_enable && conf.synch_delay_value>0)       // if delay is switched on and greater than 0 
    143   { 
    144     for (count1=0;count1<conf.synch_delay_value+(conf.synch_delay_coarse_value*1000);count1++) // wait delay_value * 0.1ms 
    145     { 
    146       for (count2=0;count2<1400;count2++)            // delay approx. 0.1ms 
    147         { 
    148         } 
    149      } 
    150   } 
    151  
    152 debug_led(0); 
    153  
    154 asm volatile ("LDMFD SP!, {R0-R11,LR}\n"); // restore R0-R11 and LR from stack 
    155 } 
    156  
    157 static void __attribute__((noinline)) mykbd_task_proceed() 
    158 { 
    159     while (physw_run){ 
    160         _SleepTask(10); 
    161  
    162         if (wrap_kbd_p1_f() == 1){ // autorepeat ? 
    163             _kbd_p2_f(); 
    164         } 
    165     } 
    166 } 
    167  
    168 void __attribute__((naked,noinline)) mykbd_task() 
    169 { 
    170     /* WARNING 
    171      * Stack pointer manipulation performed here! 
    172      * This means (but not limited to): 
    173      *  function arguments destroyed; 
    174      *  function CAN NOT return properly; 
    175      *  MUST NOT call or use stack variables before stack 
    176      *  is setup properly; 
    177      * 
    178      */ 
    179  
    180     register int i; 
    181     register long *newstack; 
    182  
    183 #ifndef MALLOCD_STACK 
    184     newstack = (void*)kbd_stack; 
    185 #else 
    186     newstack = malloc(NEW_SS); 
    187 #endif 
    188  
    189     for (i=0;i<NEW_SS/4;i++) 
    190         newstack[i]=0xdededede; 
    191  
    192     asm volatile ( 
    193         "MOV    SP, %0" 
    194         :: "r"(((char*)newstack)+NEW_SS) 
    195         : "memory" 
    196     ); 
    197  
    198     mykbd_task_proceed(); 
    199  
    200     /* function can be modified to restore SP here... 
    201      */ 
    202  
    203     _ExitTask(); 
    204 } 
    205  
    206  
    207 long __attribute__((naked,noinline)) wrap_kbd_p1_f() 
    208 { 
    209  
    210     asm volatile( 
    211                 "STMFD   SP!, {R4-R7,LR}\n" 
    212                 "SUB     SP, SP, #0xC\n" 
    213                 "BL      my_kbd_read_keys\n" 
    214                 "B       _kbd_p1_f_cont\n" 
    215     ); 
    216     return 0; // shut up the compiler 
    217 } 
    218  
    219  
    220 void my_kbd_read_keys() 
    221 { 
    222     kbd_prev_state[0] = kbd_new_state[0]; 
    223     kbd_prev_state[1] = kbd_new_state[1]; 
    224     kbd_prev_state[2] = kbd_new_state[2]; 
    225  
    226 //    _kbd_pwr_on(); 
    227  
    228     kbd_fetch_data(kbd_new_state); 
    229  
    230 #if 0 
    231     if ((new_state[2] & 0x00001000 /* print button */) == 0 ) 
    232         started(); 
    233     else 
    234         finished(); 
    235 #endif 
    236  
    237  
    238     if (kbd_process() == 0){ 
    239         // leave it alone... 
    240         physw_status[0] = kbd_new_state[0]; 
    241         physw_status[1] = kbd_new_state[1]; 
    242         physw_status[2] = kbd_new_state[2]; 
    243 #if 0 
    244         kbd_mod_state = kbd_new_state[2]; 
    245 #endif 
    246     } else { 
    247         // override keys 
    248 #if 0 
    249         physw_status[2] = kbd_mod_state; 
    250 #else 
    251         physw_status[0] = kbd_new_state[0]; 
    252         physw_status[1] = kbd_new_state[1]; 
    253         physw_status[2] = (kbd_new_state[2] & (~0x1fff)) | 
    254                           (kbd_mod_state & 0x1fff); 
    255 #endif 
    256     } 
    257  
    258     _kbd_read_keys_r2(physw_status); 
    259       remote_key = (physw_status[2] & USB_MASK)==USB_MASK; 
    260  
    261       if (remote_key)  
    262         remote_count += 1; 
    263       else if (remote_count) { 
    264         usb_power = remote_count; 
    265         remote_count = 0; 
    266       } 
    267  
    268     if (conf.remote_enable) { 
    269  
    270       physw_status[2] = physw_status[2] & ~(SD_READONLY_FLAG | USB_MASK); 
    271     } 
    272     else      
    273       physw_status[2] = physw_status[2] & ~SD_READONLY_FLAG; 
    274  
    275 //    _kbd_pwr_off(); 
    276  
    277 } 
    278 int get_usb_power(int edge) 
    279 { 
    280         int x; 
    281  
    282         if (edge) return remote_key; 
    283         x = usb_power; 
    284         usb_power = 0; 
    285         return x; 
    286 } 
    287 /****************/ 
    288  
    289  
    290 void kbd_key_press(long key) 
    291 { 
    292     int i; 
    293     for (i=0;keymap[i].hackkey;i++){ 
    294         if (keymap[i].hackkey == key){ 
    295             kbd_mod_state &= ~keymap[i].canonkey; 
    296             return; 
    297         } 
    298     } 
    299 } 
    300  
    301 void kbd_key_release(long key) 
    302 { 
    303     int i; 
    304     for (i=0;keymap[i].hackkey;i++){ 
    305         if (keymap[i].hackkey == key){ 
    306             kbd_mod_state |= keymap[i].canonkey; 
    307             return; 
    308         } 
    309     } 
    310 } 
    311  
    312 void kbd_key_release_all() 
    313 { 
    314     kbd_mod_state |= 0x1fff; 
    315 } 
    316  
    317 long kbd_is_key_pressed(long key) 
    318 { 
    319     int i; 
    320     for (i=0;keymap[i].hackkey;i++){ 
    321         if (keymap[i].hackkey == key){ 
    322             return ((kbd_new_state[2] & keymap[i].canonkey) == 0) ? 1:0; 
    323         } 
    324     } 
    325     return 0; 
    326 } 
    327  
    328 long kbd_is_key_clicked(long key) 
    329 { 
    330     int i; 
    331     for (i=0;keymap[i].hackkey;i++){ 
    332         if (keymap[i].hackkey == key){ 
    333             return ((kbd_prev_state[2] & keymap[i].canonkey) != 0) && 
    334                     ((kbd_new_state[2] & keymap[i].canonkey) == 0); 
    335         } 
    336     } 
    337     return 0; 
    338 } 
    339  
    340 long kbd_get_pressed_key() 
    341 { 
    342     int i; 
    343     for (i=0;keymap[i].hackkey;i++){ 
    344         if ((kbd_new_state[2] & keymap[i].canonkey) == 0){ 
    345             return keymap[i].hackkey; 
    346         } 
    347     } 
    348     return 0; 
    349 } 
    350  
    351 long kbd_get_clicked_key() 
    352 { 
    353     int i; 
    354     for (i=0;keymap[i].hackkey;i++){ 
    355         if (((kbd_prev_state[2] & keymap[i].canonkey) != 0) && 
    356             ((kbd_new_state[2] & keymap[i].canonkey) == 0)){ 
    357             return keymap[i].hackkey; 
    358         } 
    359     } 
    360     return 0; 
    361 } 
    362  
    363 void kbd_reset_autoclicked_key() { 
    364     last_kbd_key = 0; 
    365 } 
    366  
    367 long kbd_get_autoclicked_key() { 
    368     static long last_kbd_time = 0, press_count = 0; 
    369     register long key, t; 
    370  
    371     key=kbd_get_clicked_key(); 
    372     if (key) { 
    373         last_kbd_key = key; 
    374         press_count = 0; 
    375         last_kbd_time = get_tick_count(); 
    376         return key; 
    377     } else { 
    378         if (last_kbd_key && kbd_is_key_pressed(last_kbd_key)) { 
    379             t = get_tick_count(); 
    380             if (t-last_kbd_time>((press_count)?175:500)) { 
    381                 ++press_count; 
    382                 last_kbd_time = t; 
    383                 return last_kbd_key; 
    384             } else { 
    385                 return 0; 
    386             } 
    387         } else { 
    388             last_kbd_key = 0; 
    389             return 0; 
    390         } 
    391     } 
    392 } 
    393  
    394 long kbd_use_zoom_as_mf() { 
    395     return 0; 
    396 } 
    3973static KeyMap keymap[] = { 
    3984    /* tiny bug: key order matters. see kbd_get_pressed_key() 
    3995     * for example 
    4006     */ 
    401     { KEY_UP        , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN  
    402     { KEY_DOWN      , 0x00000002 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    403     { KEY_LEFT      , 0x00000008 }, 
    404     { KEY_RIGHT     , 0x00000004 }, 
    405     { KEY_SET       , 0x00000100 }, 
    406     { KEY_SHOOT_FULL, 0x00000030 }, // note 3 here! 
    407     { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 
    408     { KEY_SHOOT_HALF, 0x00000010 }, 
    409 //  { KEY_ZOOM_IN   , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN 
    410 //  { KEY_ZOOM_OUT  , 0x00000002 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    411     { KEY_MENU      , 0x00000400 }, 
    412     { KEY_DISPLAY   , 0x00000200 }, 
    413     { KEY_PRINT     , 0x00001000 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    414 //  { KEY_ERASE     , 0x00000002 }, 
    415 //  { KEY_DUMMY     , 0x00001000 }, 
     7    { KEY_UP              , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN  
     8    { KEY_DOWN            , 0x00000002 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
     9    { KEY_LEFT            , 0x00000008 }, 
     10    { KEY_RIGHT           , 0x00000004 }, 
     11    { KEY_SET             , 0x00000100 }, 
     12    { KEY_SHOOT_FULL      , 0x00000030 }, // note 3 here! 
     13    { KEY_SHOOT_FULL_ONLY , 0x00000020 }, 
     14    { KEY_SHOOT_HALF      , 0x00000010 }, 
     15    { KEY_MENU            , 0x00000400 }, 
     16    { KEY_DISPLAY         , 0x00000200 }, 
     17    { KEY_PRINT           , 0x00001000 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 
    41618    { 0, 0 } 
    41719}; 
  • trunk/platform/a430/lib.c

    r835 r937  
    22 
    33int get_flash_params_count(void){ 
    4  return 111; 
     4 return 108; 
    55} 
    66 
  • trunk/platform/a430/main.c

    r835 r937  
    1111} 
    1212 
    13 static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300}; 
     13static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300, 21600}; //from a460 
    1414#define NUM_FL (sizeof(fl_tbl)/sizeof(fl_tbl[0])) 
    1515#define CF_EFL 70371 
     
    3333} 
    3434 
    35 /* static struct { 
    36         int hackmode; 
    37         int canonmode; 
    38 } modemap[] = { 
    39     { MODE_AUTO,               32768 }, 
    40     { MODE_P,                  32772 }, 
    41 //    { MODE_TV,                 32771 }, 
    42 //    { MODE_AV,                 32770 }, 
    43 //    { MODE_M,                  32769 }, 
    44     { MODE_PORTRAIT,           16397 }, 
    45 //    { MODE_NIGHT,              32782 }, 
    46 //    { MODE_LANDSCAPE,          32780 }, 
    47     { MODE_VIDEO_STD,          2597  }, 
    48 //    { MODE_VIDEO_SPEED,        2597  }, 
    49     { MODE_VIDEO_COMPACT,      2599  }, 
    50 //    { MODE_VIDEO_MY_COLORS,    2595  }, 
    51 //    { MODE_VIDEO_COLOR_ACCENT, 2594  }, 
    52 //    { MODE_STITCH,             33290 }, 
    53 //    { MODE_MY_COLORS,          16922 }, 
    54 //    { MODE_SCN_WATER,          16405 }, 
    55     { MODE_SCN_NIGHT,          16395 }, 
    56     { MODE_SCN_CHILD,          16400 }, 
    57     { MODE_SCN_PARTY,          16401 }, 
    58     { MODE_SCN_GRASS,          16402 }, 
    59     { MODE_SCN_SNOW,           16403 }, 
    60     { MODE_SCN_BEACH,          16404 }, 
    61     { MODE_SCN_FIREWORK,       16405 }//, 
    62    */ 
    6335#define MODESCNT (sizeof(modemap)/sizeof(modemap[0])) 
    64  
    65 /* int mode_get() { 
    66     int mode, i, t=0xFF; 
    67                                                                           
    68     mode  = (physw_status[2] & 0x00002000)?MODE_REC:MODE_PLAY;            
    69 //    mode |= (physw_status[2] & 0x00008000)?0:MODE_SCREEN_OPENED;        
    70 //    mode |= (physw_status[2] & 0x00004000)?0:MODE_SCREEN_ROTATED;       
    71      
    72     _GetPropertyCase(PROPCASE_SHOOTING_MODE, &t, 4); 
    73     for (i=0; i<MODESCNT; ++i) { 
    74         if (modemap[i].canonmode == t) { 
    75             return (mode | (modemap[i].hackmode & MODE_SHOOTING_MASK)); 
    76         } 
    77     } 
    78     return (mode); 
    79 } 
    80  
    81 */ 
  • trunk/platform/a430/notes.txt

    r371 r937  
    55- A430 uses Propset 1 of Properties (see http://tinyurl.com/6zbv9b) 
    66 
    7  
     7Changes: 
     82012-01-05 
     9- histogram, zebra display now correct for replay mode 
     10- raw numbering fixed 
     11- optical data copied from A460 (same 4x zoom optics), updated 
     12- modemap corrected 
     13- some corrections in capt_seq.c 
     14- most of kbd.c thrown out, the generic one is used 
     15- usb sensing identified, working (for usb remote) 
  • trunk/platform/a430/platform_camera.h

    r920 r937  
    3737    #undef  CAM_HAS_IS 
    3838    #define CAM_CAN_MUTE_MICROPHONE         1 
    39     #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 
     39        #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 //crashes, when used in 640x480 mode 
    4040    #define CAM_EV_IN_VIDEO                 1 
    4141 
     
    5959    // camera name 
    6060    #define PARAM_CAMERA_NAME               3       // parameter number for GetParameterData 
    61     #define CAM_BRACKETING                  1 
    62 //  #define CAM_MULTIPART                   1 
     61 
     62        #define CAM_DETECT_SCREEN_ERASE             1 
    6363//---------------------------------------------------------- 
  • trunk/platform/a430/shooting.c

    r835 r937  
    11#define PARAM_FILE_COUNTER      0x34 
     2#define PARAM_EXPOSURE_COUNTER  0x01 
    23 
    34#include "platform.h" 
    45 
    56const ApertureSize aperture_sizes_table[] = { 
    6     {  9, 292, "2.8" }, 
    7     { 10, 303, "3.2" }, 
    8     { 11, 320, "3.5" }, 
    9     { 12, 342, "3.5" }, 
    10     { 13, 367, "4.0" }, 
    11     { 14, 395, "4.5" }, 
    12     { 15, 427, "5.1" }, 
    13     { 16, 571, "8.0 ND" }, 
    14     { 17, 590, "9.0 ND" }, 
    15     { 18, 610, "10.0 ND" }, 
    16     { 19, 633, "10.0 ND" }, 
    17     { 20, 660, "11.0 ND" }, 
    18     { 21, 688, "13.0 ND" }, 
    19     { 22, 722, "16.0 ND" }, 
    20 }; 
     7    {  9, 288, "2.8" }, 
     8    { 10, 302, "3.2" }, 
     9    { 11, 318, "3.5" }, 
     10    { 12, 339, "3.5" }, 
     11    { 13, 363, "4.0" }, 
     12    { 14, 390, "4.5" }, 
     13    { 15, 420, "5.0" }, 
     14    { 16, 457, "5.8" }, 
     15    { 17, 449, "8.0 ND" }, 
     16    { 18, 466, "9.0 ND" }, 
     17    { 19, 485, "10.0 ND" }, 
     18    { 20, 510, "10.0 ND" }, 
     19    { 21, 536, "11.0 ND" }, 
     20    { 22, 565, "13.0 ND" }, 
     21    { 23, 597, "16.0 ND" }, 
     22    { 24, 635, "18.0 ND" }, 
     23};// from a460, second column updated (propcase 68) 
    2124 
    2225const ShutterSpeed shutter_speeds_table[] = { 
     
    7174const ISOTable iso_table[] = { 
    7275    {  0,    0, "Auto", -1}, 
    73     {  1,   80,   "80", -1}, 
     76    {  1,   64,   "64", -1}, 
    7477    {  2,  100,  "100", -1}, 
    7578    {  3,  200,  "200", -1}, 
     
    7982/* 
    8083http://www.usa.canon.com/cusa/support/consumer/digital_cameras/powershot_a_series/powershot_a430#Specifications 
    81 Shooting Modes 
    82     Auto; Creative: P, Av, Tv, M; Image: Portrait, Landscape, Night Scene, 
    83     Special Scene  
    84         (Foliage, Snow, Beach, Fireworks, Underwater, Indoor, Kids & Pets, 
    85         Night Snapshot, Color Accent, Color Swap), 
    86     My Colors, Stitch Assist, Movie 
    87 Movie: 640 x 480 / 320 x 240 (30 fps/15 fps) available up to 1GB or 1 hour for each file size, 
    88     320 x 240 (1 min. at 60 fps), 160 x 120 (3 min. at 15 fps) 
    8984canon mode list FFD588D4 in 100b 
    9085*/           
    9186static const CapturemodeMap modemap[] = { 
    92     { MODE_M,                  32769 }, 
     87//    { MODE_M,                  32769 }, 
    9388    { MODE_P,                  32772 }, 
    9489    { MODE_AUTO,               32768 }, 
    95     { MODE_PORTRAIT,           32781 }, 
    96     { MODE_NIGHT_SCENE,        32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 
    97     { MODE_STITCH,             33290 }, 
    98     { MODE_SCN_NIGHT_SNAPSHOT, 16395 }, // "night snapshot" 
    99     { MODE_SCN_KIDS_PETS,      16399 }, // "kids and pets" 
    100     { MODE_SCN_INDOOR,         16400 }, // "indoor" 
    101     { MODE_SCN_FOLIAGE,        16401 }, // "foliage" 
    102     { MODE_SCN_SNOW,           16402 }, // "snow" 
    103     { MODE_SCN_BEACH,          16403 }, // "beach" 
    104     { MODE_SCN_FIREWORK,       16404 }, // "fireworks" 
    105     { MODE_SCN_COLOR_ACCENT,   16920 }, // "color accent" 
    106     { MODE_SCN_COLOR_SWAP,     16921 }, // "color swap" 
    107     { MODE_VIDEO_STD,          2593  }, 
    108     { MODE_VIDEO_SPEED,        2594  }, // "fast frame rate" 
     90    { MODE_PORTRAIT,           16396 }, 
     91//    { MODE_NIGHT_SCENE,        32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 
     92    { MODE_STITCH,             33289 }, // 
     93    { MODE_SCN_NIGHT_SNAPSHOT, 16394 }, // "night snapshot" 
     94    { MODE_SCN_KIDS_PETS,      16398 }, // "kids and pets" 
     95    { MODE_SCN_INDOOR,         16399 }, // "indoor" 
     96    { MODE_SCN_FOLIAGE,        16400 }, // "foliage" 
     97    { MODE_SCN_SNOW,           16401 }, // "snow" 
     98    { MODE_SCN_BEACH,          16402 }, // "beach" 
     99    { MODE_SCN_FIREWORK,       16403 }, // "fireworks" 
     100    { MODE_SCN_COLOR_ACCENT,   33303 }, // "color accent" 
     101    { MODE_SCN_COLOR_SWAP,     33304 }, // "color swap" 
     102    { MODE_SUPER_MACRO,        33288 }, //  
     103    { MODE_VIDEO_STD,          3613  }, // 
     104/*    { MODE_VIDEO_SPEED,        2594  }, // "fast frame rate" 
    109105    { MODE_VIDEO_COMPACT,      2595  }, // "compact" 
    110106    { MODE_VIDEO_COLOR_ACCENT, 2591  }, // "color accent" 
    111107    { MODE_VIDEO_COLOR_SWAP,   2592  }, // "color swap" 
     108*/ 
    112109}; 
    113110#include "../generic/shooting.c" 
    114111 
    115 long get_file_next_counter() { 
    116     return get_file_counter(); 
     112long get_file_next_counter() { //looks like this hack is needed for old vxworks 
     113    return ((get_file_counter()>>4)+1)<<4; 
    117114} 
    118115 
  • trunk/platform/a430/sub/100b/capt_seq.c

    r835 r937  
    66 
    77#include "../../../generic/capt_seq.c" 
     8//please note: comments ending in question marks contain the original authors' work 
     9//since most of these functions is copied from the original fw, I corrected parts of the code, 
     10//where (in my opinion) it shouldn't differ from the original - srsa_4c 
    811 
    912void __attribute__((naked,noinline)) sub_FFD2C9B8_my(long p) 
     
    2629              "LDR     R0, [R3]\n" 
    2730              "BL      sub_FFC8B090\n" 
    28             "BL      wait_until_remote_button_is_released\n" 
    29               "BL      capt_seq_hook_set_nr\n" 
    30               "B       sub_FFD2C9F4\n" 
     31            "BL      wait_until_remote_button_is_released\n" // + 
     32              "BL      capt_seq_hook_set_nr\n" // + 
     33              "B       sub_FFD2C9F4\n" //jump to the rest 
    3134  ); 
    3235} 
     
    7376 
    7477              "BL      sub_FFD2C9B8_my\n" 
    75               "BL      capt_seq_hook_raw_here\n" 
     78              "BL      capt_seq_hook_raw_here\n"  // + 
    7679 
    7780             // "BL      sub_FFD483A4\n" 
     
    211214          "BEQ     loc_FFD29B9C\n" 
    212215          "MOV     R1, #0x28C\n" 
    213           "LDR     R0, =0xFFD2952C\n" 
    214           "ADD     R1, R1, #3\n" 
     216          "LDR     R0, =0xFFD29530\n" // =0xffd2952c ? 
     217          "ADD     R1, R1, #2\n" // #3 ? 
    215218          "BL      sub_FFC03AEC\n" 
    216           "BL      _ExitTask\n" 
    217           "BL      sub_FFC11620\n" 
     219          "BL      sub_FFC11620\n" // ExitTask 
    218220          "ADD     SP, SP, #4\n" 
    219221          "LDMFD   SP!, {R4,PC}\n" 
     
    312314"                LDR     R12, [SP]\n" 
    313315"                MOV     R0, R5\n" 
    314 "                LDR     R1, [R12,#0x40]\n" 
     316"                LDR     R1, [R12,#0x24]\n" //0x40 ? 
    315317"                MOV     R2, R4\n" 
    316 "                LDR     R3, [R12,#0x50]\n" 
    317 "                MOV     LR, PC\n" 
    318 "                LDR     PC, [R12,#0x4C]\n" 
     318"                LDR     R3, [R12,#0x34]\n" //0x50 ? 
     319"                MOV     LR, PC\n" 
     320"                LDR     PC, [R12,#0x30]\n" //0x4C ? 
    319321"                B       loc_FFCDEB88\n" 
    320322"loc_FFCDEB50:\n" 
     
    342344"                MOV     R2, R4\n" 
    343345"                ADD     R0, R12, #4\n" 
    344 "                LDR     R1, [R12,#0x40]\n" 
    345 "                LDR     R3, [R12,#0x50]\n" 
    346 "                MOV     LR, PC\n" 
    347 "                LDR     PC, [R12,#0x4C]\n" 
     346"                LDR     R1, [R12,#0x24]\n" //0x40 ? 
     347"                LDR     R3, [R12,#0x34]\n" //0x50 ? 
     348"                MOV     LR, PC\n" 
     349"                LDR     PC, [R12,#0x30]\n" //0x4c ? 
    348350"                B       loc_FFCDED9C\n" 
    349351"loc_FFCDEBB8:\n" 
    350 "                SUB     R3, R2, #0x17\n" 
    351 "                BHI     loc_FFCDEC0C\n" 
     352"                CMP     R2, #0x17\n" //SUB     R3, R2, #0x17 ? 
     353"                BNE     loc_FFCDEC0C\n" //BHI     loc_FFCDEC0C ? 
    352354"                LDR     R1, [R12,#0x24]\n" 
    353355"                ADD     R1, R1, R1,LSL#1\n" 
     
    365367"                LDR     R2, [R3,#0x34]\n" 
    366368"                MOV     LR, PC\n" 
    367 "                LDR     PC, [R3,#0x4C]\n" 
     369"                LDR     PC, [R3,#0x30]\n" //0x4c ? 
    368370"                LDR     R0, [SP]\n" 
    369371"                BL      sub_FFCDD8BC\n" 
     
    518520"                LDR     R12, [SP]\n" 
    519521"                LDR     R2, [R12]\n" 
    520 "                CMP     R2, #0x20\n" 
     522"                CMP     R2, #0x1F\n" //0x20 ? 
    521523"                BNE     loc_FFCDEA08\n" 
    522524"                MOV     R0, R12\n" 
  • trunk/platform/a430/sub/100b/lib.c

    r835 r937  
    2121    return 0x4FEED0;       // ?? "CRAW BUF","WBIntegPrm.c" -  1/3" 4 MPix -  (2272*1704*10/8=0x49D7C0) 
    2222} 
    23  
    24 /* 
    25 void *vid_get_viewport_live_fb() 
    26 { 
    27     return (void*)0; 
    28 } 
    29 */ 
    3023 
    3124void *vid_get_viewport_live_fb() // from a540 
     
    5447void *vid_get_viewport_fb_d() 
    5548{ 
    56     return (void*)(*(int*)0x71964); // ?? (found in sub_FFD0F248) 
     49    return (void*)(*(int*)0x71AB0); // @ffd0f29c 
    5750} 
    5851 
  • trunk/platform/a430/sub/100b/stubs_min.S

    r835 r937  
    1515DEF(some_flag_for_af_scan, 0x72BA0) // 0xFFD2A294 
    1616DEF(levent_table, 0xFFD3547C) 
    17 DEF(playrec_mode, 0x639C) // FFD32638 
     17DEF(playrec_mode, 0x638C) // @ffd32644 
     18DEF(sys_mempart_id, 0xD648) // memFindMax 
  • trunk/platform/generic/kbd.c

    r732 r937  
    1818static long kbd_new_state[3]; 
    1919static long kbd_prev_state[3]; 
    20 static long kbd_mod_state; 
     20static long kbd_mod_state = 0xFFFFFFFF; 
    2121static KeyMap keymap[]; 
    2222static long last_kbd_key = 0; 
     
    3434#endif 
    3535 
    36 #if defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_ixus65_sd630) || defined(CAMERA_ixus850_sd800) || defined(CAMERA_ixus900_sd900) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined(CAMERA_a410) 
     36#if defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_ixus65_sd630) || defined(CAMERA_ixus850_sd800) || defined(CAMERA_ixus900_sd900) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined(CAMERA_a410) || defined(CAMERA_a430) 
    3737#define USB_MASK 0x8000000 
    3838#define USB_REG 1 
    3939#endif 
    4040 
    41 #if defined(CAMERA_a430) || defined(CAMERA_a530) || defined(CAMERA_a540) 
     41#if defined(CAMERA_a530) || defined(CAMERA_a540) 
    4242#define USB_MASK 0x4000 
    4343#define USB_REG 2 
     
    6262#endif 
    6363         
    64 #if defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410) 
     64#if defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410) || defined(CAMERA_a430) 
    6565        x = (long)*mmio1; 
    6666#endif 
     
    7373} 
    7474 
    75 #if defined(CAMERA_a530) || defined(CAMERA_a540) || defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a700)|| defined(CAMERA_a710) || defined (CAMERA_ixus800_sd700) || defined(CAMERA_a410) 
     75#if defined(CAMERA_a530) || defined(CAMERA_a540) || defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a700)|| defined(CAMERA_a710) || defined (CAMERA_ixus800_sd700) || defined(CAMERA_a410) || defined(CAMERA_a430) 
    7676void wait_until_remote_button_is_released(void) 
    7777{ 
Note: See TracChangeset for help on using the changeset viewer.