Line data Source code
1 : /*
2 : * This file is free software: you can redistribute it and/or modify it
3 : * under the terms of the GNU General Public License as published by the
4 : * Free Software Foundation, either version 3 of the License, or
5 : * (at your option) any later version.
6 : *
7 : * This file is distributed in the hope that it will be useful, but
8 : * WITHOUT ANY WARRANTY; without even the implied warranty of
9 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 : * See the GNU General Public License for more details.
11 : *
12 : * You should have received a copy of the GNU General Public License along
13 : * with this program. If not, see <http://www.gnu.org/licenses/>.
14 : *
15 : */
16 : /*
17 : OSD backend for MSP
18 : */
19 : #include "AP_OSD_MSP.h"
20 :
21 :
22 : static const struct AP_Param::defaults_table_struct defaults_table[] = {
23 : /*
24 : //OSD_RSSI_VALUE
25 : { "OSD_RSSI_EN", 1.0 },
26 : { "OSD_RSSI_X", 1.0 },
27 : { "OSD_RSSI_Y", 1.0 },
28 :
29 : //OSD_MAIN_BATT_VOLTAGE
30 : { "OSD_BAT_VOLT_EN", 1.0 },
31 : { "OSD_BAT_VOLT_X", 1.0 },
32 : { "OSD_BAT_VOLT_Y", 1.0 },
33 :
34 : //OSD_CRAFT_NAME (text flightmode + status text messages + wind)
35 : { "OSD_MESSAGE_EN", 1.0 },
36 : { "OSD_MESSAGE_X", 1.0 },
37 : { "OSD_MESSAGE_Y", 1.0 },
38 :
39 : //OSD_FLYMODE (displays failsafe status and optionally rtl engaged)
40 : { "OSD_FLTMODE_EN", 1.0 },
41 : { "OSD_FLTMODE_X", 1.0 },
42 : { "OSD_FLTMODE_Y", 1.0 },
43 :
44 : //OSD_CURRENT_DRAW
45 : { "OSD_CURRENT_EN", 1.0 },
46 : { "OSD_CURRENT_X", 1.0 },
47 : { "OSD_CURRENT_Y", 1.0 },
48 :
49 : //OSD_MAH_DRAWN
50 : { "OSD_BATUSED_EN", 1.0 },
51 : { "OSD_BATUSED_X", 1.0 },
52 : { "OSD_BATUSED_Y", 1.0 },
53 :
54 : //OSD_GPS_SPEED
55 : { "OSD_GSPEED_EN", 1.0 },
56 : { "OSD_GSPEED_X", 1.0 },
57 : { "OSD_GSPEED_Y", 1.0 },
58 :
59 : //OSD_GPS_SATS
60 : { "OSD_SATS_EN", 1.0 },
61 : { "OSD_SATS_X", 1.0 },
62 : { "OSD_SATS_Y", 1.0 },
63 :
64 : //OSD_ALTITUDE
65 : { "OSD_ALTITUDE_EN", 1.0 },
66 : { "OSD_ALTITUDE_X", 1.0 },
67 : { "OSD_ALTITUDE_Y", 1.0 },
68 :
69 : //OSD_GPS_LON
70 : { "OSD_GPSLONG_EN", 1.0 },
71 : { "OSD_GPSLONG_X", 1.0 },
72 : { "OSD_GPSLONG_Y", 1.0 },
73 :
74 : //OSD_GPS_LAT
75 : { "OSD_GPSLAT_EN", 1.0 },
76 : { "OSD_GPSLAT_X", 1.0 },
77 : { "OSD_GPSLAT_Y", 1.0 },
78 :
79 : //OSD_PITCH_ANGLE
80 : { "OSD_PITCH_EN", 1.0 },
81 : { "OSD_PITCH_X", 1.0 },
82 : { "OSD_PITCH_Y", 1.0 },
83 :
84 : //OSD_ROLL_ANGLE
85 : { "OSD_ROLL_EN", 1.0 },
86 : { "OSD_ROLL_X", 1.0 },
87 : { "OSD_ROLL_Y", 1.0 },
88 :
89 : //OSD_MAIN_BATT_USAGE
90 : { "OSD_BATTBAR_EN", 1.0 },
91 : { "OSD_BATTBAR_X", 1.0 },
92 : { "OSD_BATTBAR_Y", 1.0 },
93 :
94 : //OSD_NUMERICAL_VARIO
95 : { "OSD_VSPEED_EN", 1.0 },
96 : { "OSD_VSPEED_X", 1.0 },
97 : { "OSD_VSPEED_Y", 1.0 },
98 :
99 : #if HAVE_AP_BLHELI_SUPPORT
100 : //OSD_ESC_TMP
101 : { "OSD_BLHTEMP_EN", 1.0 },
102 : { "OSD_BLHTEMP_X", 1.0 },
103 : { "OSD_BLHTEMP_Y", 1.0 },
104 : #endif
105 :
106 : //OSD_RTC_DATETIME
107 : { "OSD_CLK_EN", 1.0 },
108 : { "OSD_CLK_X", 1.0 },
109 : { "OSD_CLK_Y", 1.0 },
110 :
111 : // --------------------------
112 : // MSP OSD only
113 : // --------------------------
114 :
115 : // OSD items disabled by default (partially supported)
116 : //OSD_CROSSHAIRS
117 : { "OSD_CRSSHAIR_EN", 0 },
118 :
119 : //OSD_ARTIFICIAL_HORIZON
120 : { "OSD_HORIZON_EN", 0 },
121 :
122 : //OSD_HORIZON_SIDEBARS
123 : { "OSD_SIDEBARS_EN", 0 },
124 :
125 : //OSD_NUMERICAL_HEADING
126 : { "OSD_HEADING_EN", 0.0 },
127 :
128 : // Supported OSD items
129 :
130 : //OSD_POWER
131 : { "OSD_POWER_EN", 1.0 },
132 : { "OSD_POWER_X", 1.0 },
133 : { "OSD_POWER_Y", 1.0 },
134 :
135 : //OSD_AVG_CELL_VOLTAGE
136 : { "OSD_CELLVOLT_EN", 1.0 },
137 : { "OSD_CELLVOLT_X", 1.0 },
138 : { "OSD_CELLVOLT_Y", 1.0 },
139 :
140 : //OSD_DISARMED
141 : { "OSD_ARMING_EN", 1.0 },
142 : { "OSD_ARMING_X", 1.0 },
143 : { "OSD_ARMING_Y", 1.0 },
144 :
145 : //OSD_HOME_DIR
146 : { "OSD_HOMEDIR_EN", 1.0 },
147 : { "OSD_HOMEDIR_X", 1.0 },
148 : { "OSD_HOMEDIR_Y", 1.0 },
149 :
150 : //OSD_HOME_DIST
151 : { "OSD_HOMEDIST_EN", 1.0 },
152 : { "OSD_HOMEDIST_X", 1.0 },
153 : { "OSD_HOMEDIST_Y", 1.0 },
154 : */
155 : };
156 :
157 :
158 : extern const AP_HAL::HAL &hal;
159 :
160 : // initialise backend
161 0 : bool AP_OSD_MSP::init(void)
162 : {
163 0 : return true;
164 : }
165 :
166 : // override built in positions with defaults for MSP OSD
167 0 : void AP_OSD_MSP::setup_defaults(void)
168 : {
169 0 : AP_Param::set_defaults_from_table(defaults_table, ARRAY_SIZE(defaults_table));
170 0 : }
171 :
172 0 : AP_OSD_Backend *AP_OSD_MSP::probe(AP_OSD &osd)
173 : {
174 0 : AP_OSD_MSP *backend = NEW_NOTHROW AP_OSD_MSP(osd);
175 0 : if (!backend) {
176 0 : return nullptr;
177 : }
178 0 : if (!backend->init()) {
179 0 : delete backend;
180 0 : return nullptr;
181 : }
182 0 : return backend;
183 : }
|