This source file includes following definitions.
- get_sensor_width
- startup
- get_mav
- get_xav
- get_fov
- get_effective_focal_length
- get_focal_length
- get_zoom_x
- get_vbatt_min
- get_vbatt_max
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4 #include "keyboard.h"
5
6
7 extern long link_bss_start;
8 extern long link_bss_end;
9 extern void boot();
10
11 long get_sensor_width()
12 {
13 return 6160;
14 }
15
16 void startup()
17 {
18 long *bss = &link_bss_start;
19
20
21 if ((long)&link_bss_end > (MEMISOSTART + MEMISOSIZE)){
22 started();
23 shutdown();
24 }
25
26
27 while (bss<&link_bss_end)
28 *bss++ = 0;
29
30
31 boot();
32 }
33
34 static const struct {
35 int zp, fl;
36 } fl_tbl[] = {
37 { 0, 5000},
38 { 1, 6000},
39 { 2, 7000},
40 { 3, 8000},
41 { 4, 9500},
42 { 5, 10900},
43 { 6, 12800},
44 { 7, 15000},
45 { 8, 17300},
46 { 9, 20000},
47 };
48 #define NUM_FL (int)(sizeof(fl_tbl)/sizeof(fl_tbl[0]))
49
50
51
52
53 #define CF_EFL 56666
54
55 const int zoom_points = NUM_FL;
56
57 static const int fov_tbl[] = {63,54,48,42,36,32,27,23,20,18};
58 static const int mav_tbl[] = {294,311,348,371,393,418,445,474,500};
59 static const int xav_tbl[] = {582,599,636,659,681,706,733,762,788};
60
61 int get_mav(int zp)
62 {
63 return mav_tbl[zp];
64 }
65
66 int get_xav(int zp)
67 {
68 return xav_tbl[zp];
69 }
70
71 int get_fov(int zp)
72 {
73 if (zp<0) return fov_tbl[0];
74 else if (zp>NUM_FL-1) return fov_tbl[NUM_FL-1];
75 else return fov_tbl[zp];
76 }
77
78 int get_effective_focal_length(int zp) {
79 return (CF_EFL*get_focal_length(zp))/10000;
80 }
81
82 int get_focal_length(int zp) {
83 int i;
84
85 if (zp<fl_tbl[0].zp)
86 return fl_tbl[0].fl;
87 else if (zp>fl_tbl[NUM_FL-1].zp)
88 return fl_tbl[NUM_FL-1].fl;
89 else
90 for (i=1; i<NUM_FL; ++i) {
91 if (zp==fl_tbl[i-1].zp)
92 return fl_tbl[i-1].fl;
93 else if (zp==fl_tbl[i].zp)
94 return fl_tbl[i].fl;
95 else if (zp<fl_tbl[i].zp)
96 return fl_tbl[i-1].fl+(zp-fl_tbl[i-1].zp)*(fl_tbl[i].fl-fl_tbl[i-1].fl)/(fl_tbl[i].zp-fl_tbl[i-1].zp);
97 }
98 return fl_tbl[NUM_FL-1].fl;
99 }
100
101 int get_zoom_x(int zp) {
102 return get_focal_length(zp)*10/fl_tbl[0].fl;
103 }
104
105 long get_vbatt_min()
106 {
107 return 3000;
108 }
109
110 long get_vbatt_max()
111 {
112 return 4100;
113 }
114