CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
lib.c-Dateireferenz
#include "platform.h"
#include "platform_palette.h"
#include "lolevel.h"
+ Include-Abhängigkeitsdiagramm für lib.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LED_DEBUG1   0xC0220130
 
#define LED_DEBUG2   0xc0220134
 
#define LED_DEBUG3   0xC0223030
 
#define LED_AF   0xC0223030
 
#define DEBUG_LED_DELAY   2500000
 

Funktionen

void shutdown ()
 
void debug_led (int state)
 
void camera_set_led (int led, int state, __attribute__((unused)) int bright)
 
int get_flash_params_count (void)
 
void JogDial_CW (void)
 
void JogDial_CCW (void)
 
void vid_bitmap_refresh ()
 
void * vid_get_bitmap_fb ()
 
void * vid_get_viewport_live_fb ()
 
void * vid_get_viewport_fb ()
 
void * vid_get_viewport_fb_d ()
 
int vid_get_viewport_byte_width ()
 
int vid_get_viewport_width ()
 
int vid_get_viewport_display_xoffset ()
 
long vid_get_viewport_height ()
 
int vid_get_viewport_display_xoffset_proper ()
 
int vid_get_viewport_height_proper ()
 
int vid_get_viewport_buffer_width_proper ()
 
int vid_get_viewport_fullscreen_height ()
 
int vid_get_palette_type ()
 
int vid_get_palette_size ()
 
int vid_get_aspect_ratio ()
 
void * vid_get_bitmap_active_palette ()
 
void load_chdk_palette ()
 

Variablen

int active_bitmap_buffer
 
char * bitmap_buffer []
 
char active_viewport_buffer
 
void * viewport_buffers []
 
char ** palette_buffer_ptr
 
int active_palette_buffer
 

Makro-Dokumentation

#define DEBUG_LED_DELAY   2500000

Definiert in Zeile 25 der Datei lib.c.

#define LED_AF   0xC0223030

Definiert in Zeile 24 der Datei lib.c.

#define LED_DEBUG1   0xC0220130

Definiert in Zeile 21 der Datei lib.c.

#define LED_DEBUG2   0xc0220134

Definiert in Zeile 22 der Datei lib.c.

#define LED_DEBUG3   0xC0223030

Definiert in Zeile 23 der Datei lib.c.

Dokumentation der Funktionen

void camera_set_led ( int  led,
int  state,
__attribute__((unused)) int  bright 
)

Definiert in Zeile 43 der Datei lib.c.

43  { // camera has three LED's (focus assist lamp & and a green/orange combo LED)
44  static char led_table[3]={0,1,9};
45  _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
46 }
void debug_led ( int  state)

Definiert in Zeile 28 der Datei lib.c.

28  {
29 
30  volatile long *p=(void*)LED_DEBUG2;
31 
32  if (state)
33  p[0]=0x46;
34  else
35  p[0]=0x44;
36 
37  // delay loop
38  int i;
39  for (i=0; i<DEBUG_LED_DELAY; i++)
40  asm("nop\n nop\n");
41 }
int get_flash_params_count ( void  )

Definiert in Zeile 48 der Datei lib.c.

48  {
49  return 148; // 0x94 = 148
50 }
void JogDial_CCW ( void  )

Definiert in Zeile 57 der Datei lib.c.

57  {
58  _PostLogicalEventForNotPowerType(0x877, 1); // RotateJogDialLeft at levent_table
59 }
void JogDial_CW ( void  )

Definiert in Zeile 53 der Datei lib.c.

53  {
54  _PostLogicalEventForNotPowerType(0x876, 1); // RotateJogDialRight at levent_table
55 }
void load_chdk_palette ( )

Definiert in Zeile 174 der Datei lib.c.

175 {
176  if ((active_palette_buffer == 0) || (active_palette_buffer == 4) || (active_palette_buffer == 7)) //00=rec 04=play 07=menu 03=setmenu (don't override in setmenu as it has no non-overlapping blank palette areas)
177  {
178  int *pal = (int *)vid_get_bitmap_active_palette();
179  if (pal[CHDK_COLOR_BASE+0] != 0x33ADF62)
180  {
181  pal[CHDK_COLOR_BASE+0] = 0x033ADF62; // Red
182  pal[CHDK_COLOR_BASE+1] = 0x0326EA40; // Dark Red
183  pal[CHDK_COLOR_BASE+2] = 0x034CD57F; // Light Red
184  pal[CHDK_COLOR_BASE+3] = 0x0373BFAE; // Green
185  pal[CHDK_COLOR_BASE+4] = 0x034BD6CA; // Dark Green
186  pal[CHDK_COLOR_BASE+5] = 0x0395AB95; // Light Green
187  pal[CHDK_COLOR_BASE+6] = 0x034766F0; // Blue
188  pal[CHDK_COLOR_BASE+7] = 0x031250F3; // Dark Blue
189  pal[CHDK_COLOR_BASE+8] = 0x037F408F; // Cyan
190  pal[CHDK_COLOR_BASE+9] = 0x03512D5B; // Magenta
191  pal[CHDK_COLOR_BASE+10] = 0x03A9A917; // Yellow
192  pal[CHDK_COLOR_BASE+11] = 0x03819137; // Dark Yellow
193  pal[CHDK_COLOR_BASE+12] = 0x03DED115; // Light Yellow
194  pal[CHDK_COLOR_BASE+13] = 0x00090000; // Transparent dark grey
195 
197  }
198  }
199 }
void shutdown ( )

Definiert in Zeile 5 der Datei lib.c.

5  {
6  volatile long *p = (void*)0xC0223030; // Red AF Led (front)
7 
8  asm(
9  "MRS R1, CPSR\n"
10  "AND R0, R1, #0x80\n"
11  "ORR R1, R1, #0x80\n"
12  "MSR CPSR_cf, R1\n"
13  :::"r1","r0"
14  );
15 
16  *p = 0x44;
17 
18  while(1);
19 }
void vid_bitmap_refresh ( )

Definiert in Zeile 61 der Datei lib.c.

61  {
63  extern int full_screen_refresh;
64  extern void _LockAndRefresh(); // wrapper function for screen lock
65  extern void _UnlockAndRefresh(); // wrapper function for screen unlock
66 
67  _LockAndRefresh();
68 
69  enabled_refresh_physical_screen=1;
70  full_screen_refresh=3; // found in ScreenUnlock underneath a CameraLog.c call
71 
72  _UnlockAndRefresh();
73 }
int vid_get_aspect_ratio ( )

Definiert in Zeile 161 der Datei lib.c.

161 { return 1; }
void* vid_get_bitmap_active_palette ( )

Definiert in Zeile 169 der Datei lib.c.

170 {
172 }
void* vid_get_bitmap_fb ( )

Definiert in Zeile 81 der Datei lib.c.

82  {
83  // Return first bitmap buffer address
84  return bitmap_buffer[0];
85  }
int vid_get_palette_size ( )

Definiert in Zeile 160 der Datei lib.c.

160 { return 256 * 4; }
int vid_get_palette_type ( )

Definiert in Zeile 159 der Datei lib.c.

159 { return 3; }
int vid_get_viewport_buffer_width_proper ( )

Definiert in Zeile 157 der Datei lib.c.

157 { return 960; }
int vid_get_viewport_byte_width ( )

Definiert in Zeile 120 der Datei lib.c.

120  {
121  return 960 * 6 / 4; // IXUS 300 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY)
122  }
int vid_get_viewport_display_xoffset ( )

Definiert in Zeile 134 der Datei lib.c.

135  {
137  {
138  return 0;
139  }
140  else
141  {
142  // viewport width offset table for each image size
143  // ixus300 has six sizes : 3648x2736 (4:3) 2816x2112 (4:3) 2272x1702 (4:3) 1600x1200 (4:3) 640x480 (4:3) 3648x2048 (16:9)
144  // PROPCASE_RESOLUTION : 0 1 2 3 4 8
145  if (shooting_get_prop(PROPCASE_RESOLUTION ) == 8 ) return 0 ; // wide screen mode
146  return 60 ; // all other modes
147  }
148  }
int vid_get_viewport_display_xoffset_proper ( )

Definiert in Zeile 155 der Datei lib.c.

155 { return vid_get_viewport_display_xoffset() * 2 ; }
void* vid_get_viewport_fb ( )

Definiert in Zeile 106 der Datei lib.c.

107  {
108  // Return first viewport buffer - for case when vid_get_viewport_live_fb not defined
109  // Offset the return value because the viewport is left justified instead of centered on this camera
110  return viewport_buffers[0];
111  }
void* vid_get_viewport_fb_d ( )

Definiert in Zeile 113 der Datei lib.c.

114  {
115  extern char *viewport_fb_d;
116  return viewport_fb_d;
117  }
int vid_get_viewport_fullscreen_height ( )

Definiert in Zeile 158 der Datei lib.c.

158 { return 240; }
long vid_get_viewport_height ( )

Definiert in Zeile 150 der Datei lib.c.

150 { return 240; }
int vid_get_viewport_height_proper ( )

Definiert in Zeile 156 der Datei lib.c.

156 { return 240; }
void* vid_get_viewport_live_fb ( )

Definiert in Zeile 92 der Datei lib.c.

93  {
94  char vp ;
96  return viewport_buffers[0]; // Video only seems to use the first viewport buffer.
97 
98  // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data
99  // Note that this camera only seems to use 3 buffers (vs 4 on other models).
100  // Tests with MD_tune.bas show that returning one buffer back from the current value of active_viewport_buffer works best for motion detect
101 
103  return viewport_buffers[ (vp == 0) ? 2 : vp-1 ];
104  }
int vid_get_viewport_width ( )

Definiert in Zeile 124 der Datei lib.c.

125  {
127  {
128  return 480 ;
129  }
130  extern int _GetVRAMHPixelsSize();
131  return _GetVRAMHPixelsSize() >> 1;
132  }

Variablen-Dokumentation

int active_bitmap_buffer
int active_palette_buffer
char active_viewport_buffer
char* bitmap_buffer[]

Definiert in Zeile 84 der Datei lib.c.

char** palette_buffer_ptr
void* viewport_buffers[]