This source file includes following definitions.
- shutdown
- debug_led
- camera_set_led
- get_flash_params_count
- JogDial_CW
- JogDial_CCW
- vid_bitmap_refresh
- vid_get_bitmap_fb
- vid_get_viewport_live_fb
- vid_get_viewport_fb
- vid_get_viewport_fb_d
- vid_get_viewport_byte_width
- vid_get_viewport_width
- vid_get_viewport_display_xoffset
- vid_get_viewport_height
- vid_get_viewport_display_xoffset_proper
- vid_get_viewport_height_proper
- vid_get_viewport_buffer_width_proper
- vid_get_viewport_fullscreen_height
- vid_get_palette_type
- vid_get_palette_size
- vid_get_aspect_ratio
- vid_get_bitmap_active_palette
- load_chdk_palette
1 #include "platform.h"
2 #include "platform_palette.h"
3 #include "lolevel.h"
4
5 void shutdown() {
6 volatile long *p = (void*)0xC0223030;
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 }
20
21 #define LED_DEBUG1 0xC0220130
22 #define LED_DEBUG2 0xc0220134
23 #define LED_DEBUG3 0xC0223030
24 #define LED_AF 0xC0223030
25 #define DEBUG_LED_DELAY 2500000
26
27
28 void debug_led(int state) {
29
30 volatile long *p=(void*)LED_DEBUG2;
31
32 if (state)
33 p[0]=0x46;
34 else
35 p[0]=0x44;
36
37
38 int i;
39 for (i=0; i<DEBUG_LED_DELAY; i++)
40 asm("nop\n nop\n");
41 }
42
43 void camera_set_led(int led, int state, __attribute__ ((unused))int bright) {
44 static char led_table[3]={0,1,9};
45 _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
46 }
47
48 int get_flash_params_count(void) {
49 return 148;
50 }
51
52
53 void JogDial_CW(void) {
54 _PostLogicalEventForNotPowerType(0x876, 1);
55 }
56
57 void JogDial_CCW(void) {
58 _PostLogicalEventForNotPowerType(0x877, 1);
59 }
60
61 void vid_bitmap_refresh() {
62 extern int enabled_refresh_physical_screen;
63 extern int full_screen_refresh;
64 extern void _LockAndRefresh();
65 extern void _UnlockAndRefresh();
66
67 _LockAndRefresh();
68
69 enabled_refresh_physical_screen=1;
70 full_screen_refresh=3;
71
72 _UnlockAndRefresh();
73 }
74
75
76
77
78 extern int active_bitmap_buffer;
79 extern char* bitmap_buffer[];
80
81 void *vid_get_bitmap_fb()
82 {
83
84 return bitmap_buffer[0];
85 }
86
87
88
89 extern char active_viewport_buffer;
90 extern void* viewport_buffers[];
91
92 void *vid_get_viewport_live_fb()
93 {
94 char vp ;
95 if (camera_info.state.mode_video || (get_movie_status()==VIDEO_RECORD_IN_PROGRESS))
96 return viewport_buffers[0];
97
98
99
100
101
102 vp = active_viewport_buffer ;
103 return viewport_buffers[ (vp == 0) ? 2 : vp-1 ];
104 }
105
106 void *vid_get_viewport_fb()
107 {
108
109
110 return viewport_buffers[0];
111 }
112
113 void *vid_get_viewport_fb_d()
114 {
115 extern char *viewport_fb_d;
116 return viewport_fb_d;
117 }
118
119
120 int vid_get_viewport_byte_width() {
121 return 960 * 6 / 4;
122 }
123
124 int vid_get_viewport_width()
125 {
126 if (camera_info.state.mode_play)
127 {
128 return 480 ;
129 }
130 extern int _GetVRAMHPixelsSize();
131 return _GetVRAMHPixelsSize() >> 1;
132 }
133
134 int vid_get_viewport_display_xoffset()
135 {
136 if (camera_info.state.mode_play)
137 {
138 return 0;
139 }
140 else
141 {
142
143
144
145 if (shooting_get_prop(PROPCASE_RESOLUTION ) == 8 ) return 0 ;
146 return 60 ;
147 }
148 }
149
150 long vid_get_viewport_height(){ return 240; }
151
152
153
154
155 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2 ; }
156 int vid_get_viewport_height_proper() { return 240; }
157 int vid_get_viewport_buffer_width_proper() { return 960; }
158 int vid_get_viewport_fullscreen_height() { return 240; }
159 int vid_get_palette_type() { return 3; }
160 int vid_get_palette_size() { return 256 * 4; }
161 int vid_get_aspect_ratio() { return 1; }
162
163
164
165
166 extern char** palette_buffer_ptr;
167 extern int active_palette_buffer;
168
169 void* vid_get_bitmap_active_palette()
170 {
171 return palette_buffer_ptr[active_palette_buffer]+8;
172 }
173
174 void load_chdk_palette()
175 {
176 if ((active_palette_buffer == 0) || (active_palette_buffer == 4) || (active_palette_buffer == 7))
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;
182 pal[CHDK_COLOR_BASE+1] = 0x0326EA40;
183 pal[CHDK_COLOR_BASE+2] = 0x034CD57F;
184 pal[CHDK_COLOR_BASE+3] = 0x0373BFAE;
185 pal[CHDK_COLOR_BASE+4] = 0x034BD6CA;
186 pal[CHDK_COLOR_BASE+5] = 0x0395AB95;
187 pal[CHDK_COLOR_BASE+6] = 0x034766F0;
188 pal[CHDK_COLOR_BASE+7] = 0x031250F3;
189 pal[CHDK_COLOR_BASE+8] = 0x037F408F;
190 pal[CHDK_COLOR_BASE+9] = 0x03512D5B;
191 pal[CHDK_COLOR_BASE+10] = 0x03A9A917;
192 pal[CHDK_COLOR_BASE+11] = 0x03819137;
193 pal[CHDK_COLOR_BASE+12] = 0x03DED115;
194 pal[CHDK_COLOR_BASE+13] = 0x00090000;
195
196 vid_bitmap_refresh();
197 }
198 }
199 }
200