@@ -171,6 +171,7 @@ MspHelper.prototype.process_data = function(dataHandler) {
171171 }
172172 break ;
173173 case MSPCodes . MSP_CURRENT_METERS :
174+
174175 CURRENT_METERS = [ ] ;
175176 var currentMeterLength = 5 ;
176177 for ( var i = 0 ; i < ( data . byteLength / currentMeterLength ) ; i ++ ) {
@@ -192,46 +193,63 @@ MspHelper.prototype.process_data = function(dataHandler) {
192193 break ;
193194
194195 case MSPCodes . MSP_VOLTAGE_METER_CONFIG :
195- VOLTAGE_METER_CONFIGS = [ ] ;
196- var voltage_meter_count = data . readU8 ( ) ;
197-
198- for ( var i = 0 ; i < voltage_meter_count ; i ++ ) {
199- var subframe_length = data . readU8 ( ) ;
200- if ( subframe_length != 5 ) {
201- for ( var j = 0 ; j < subframe_length ; j ++ ) {
202- data . readU8 ( ) ;
196+ if ( semver . lt ( CONFIG . apiVersion , "1.36.0" ) ) {
197+ MISC . vbatscale = data . readU8 ( ) ; // 10-200
198+ MISC . vbatmincellvoltage = data . readU8 ( ) / 10 ; // 10-50
199+ MISC . vbatmaxcellvoltage = data . readU8 ( ) / 10 ; // 10-50
200+ MISC . vbatwarningcellvoltage = data . readU8 ( ) / 10 ; // 10-50
201+ if ( semver . gte ( CONFIG . apiVersion , "1.23.0" ) ) {
202+ MISC . batterymetertype = data . readU8 ( ) ;
203+ }
204+ } else {
205+ VOLTAGE_METER_CONFIGS = [ ] ;
206+ var voltage_meter_count = data . readU8 ( ) ;
207+
208+ for ( var i = 0 ; i < voltage_meter_count ; i ++ ) {
209+ var subframe_length = data . readU8 ( ) ;
210+ if ( subframe_length != 5 ) {
211+ for ( var j = 0 ; j < subframe_length ; j ++ ) {
212+ data . readU8 ( ) ;
213+ }
214+ } else {
215+ var voltageMeterConfig = { } ;
216+ voltageMeterConfig . id = data . readU8 ( ) ;
217+ voltageMeterConfig . sensorType = data . readU8 ( ) ;
218+ voltageMeterConfig . vbatscale = data . readU8 ( ) ;
219+ voltageMeterConfig . vbatresdivval = data . readU8 ( ) ;
220+ voltageMeterConfig . vbatresdivmultiplier = data . readU8 ( ) ;
221+
222+ VOLTAGE_METER_CONFIGS . push ( voltageMeterConfig ) ;
203223 }
204- } else {
205- var voltageMeterConfig = { } ;
206- voltageMeterConfig . id = data . readU8 ( ) ;
207- voltageMeterConfig . sensorType = data . readU8 ( ) ;
208- voltageMeterConfig . vbatscale = data . readU8 ( ) ;
209- voltageMeterConfig . vbatresdivval = data . readU8 ( ) ;
210- voltageMeterConfig . vbatresdivmultiplier = data . readU8 ( ) ;
211-
212- VOLTAGE_METER_CONFIGS . push ( voltageMeterConfig ) ;
213224 }
214225 }
215226 break ;
216227 case MSPCodes . MSP_CURRENT_METER_CONFIG :
217- var offset = 0 ;
218- CURRENT_METER_CONFIGS = [ ] ;
219- var current_meter_count = data . readU8 ( ) ;
220- for ( var i = 0 ; i < current_meter_count ; i ++ ) {
221- var currentMeterConfig = { } ;
222- var subframe_length = data . readU8 ( ) ;
223-
224- if ( subframe_length != 6 ) {
225- for ( var j = 0 ; j < subframe_length ; j ++ ) {
226- data . readU8 ( ) ;
227- }
228- } else {
229- currentMeterConfig . id = data . readU8 ( ) ;
230- currentMeterConfig . sensorType = data . readU8 ( ) ;
231- currentMeterConfig . scale = data . readU16 ( ) ;
232- currentMeterConfig . offset = data . readU16 ( ) ;
228+ if ( semver . lt ( CONFIG . apiVersion , "1.36.0" ) ) {
229+ BF_CONFIG . currentscale = data . read16 ( ) ;
230+ BF_CONFIG . currentoffset = data . read16 ( ) ;
231+ BF_CONFIG . currentmetertype = data . readU8 ( ) ;
232+ BF_CONFIG . batterycapacity = data . readU16 ( ) ;
233+ } else {
234+ var offset = 0 ;
235+ CURRENT_METER_CONFIGS = [ ] ;
236+ var current_meter_count = data . readU8 ( ) ;
237+ for ( var i = 0 ; i < current_meter_count ; i ++ ) {
238+ var currentMeterConfig = { } ;
239+ var subframe_length = data . readU8 ( ) ;
240+
241+ if ( subframe_length != 6 ) {
242+ for ( var j = 0 ; j < subframe_length ; j ++ ) {
243+ data . readU8 ( ) ;
244+ }
245+ } else {
246+ currentMeterConfig . id = data . readU8 ( ) ;
247+ currentMeterConfig . sensorType = data . readU8 ( ) ;
248+ currentMeterConfig . scale = data . readU16 ( ) ;
249+ currentMeterConfig . offset = data . readU16 ( ) ;
233250
234- CURRENT_METER_CONFIGS . push ( currentMeterConfig ) ;
251+ CURRENT_METER_CONFIGS . push ( currentMeterConfig ) ;
252+ }
235253 }
236254 }
237255 break ;
@@ -557,7 +575,9 @@ MspHelper.prototype.process_data = function(dataHandler) {
557575
558576 case MSPCodes . MSP_MIXER_CONFIG :
559577 MIXER_CONFIG . mixer = data . readU8 ( ) ;
560- MIXER_CONFIG . reverseMotorDir = data . readU8 ( ) ;
578+ if ( semver . gte ( CONFIG . apiVersion , "1.36.0" ) ) {
579+ MIXER_CONFIG . reverseMotorDir = data . readU8 ( ) ;
580+ }
561581 break ;
562582
563583 case MSPCodes . MSP_FEATURE_CONFIG :
@@ -1161,7 +1181,9 @@ MspHelper.prototype.crunch = function(code) {
11611181 break ;
11621182 case MSPCodes . MSP_SET_MIXER_CONFIG :
11631183 buffer . push8 ( MIXER_CONFIG . mixer )
1164- . push8 ( MIXER_CONFIG . reverseMotorDir ) ;
1184+ if ( semver . gte ( CONFIG . apiVersion , "1.36.0" ) ) {
1185+ buffer . push8 ( MIXER_CONFIG . reverseMotorDir ) ;
1186+ }
11651187 break ;
11661188 case MSPCodes . MSP_SET_BOARD_ALIGNMENT_CONFIG :
11671189 buffer . push16 ( BOARD_ALIGNMENT_CONFIG . roll )
@@ -1269,19 +1291,19 @@ MspHelper.prototype.crunch = function(code) {
12691291 case MSPCodes . MSP_SET_VOLTAGE_METER_CONFIG :
12701292 if ( semver . lt ( CONFIG . apiVersion , "1.36.0" ) ) {
12711293 buffer . push8 ( MISC . vbatscale )
1272- . push8 ( Math . round ( BATTERY_CONFIG . vbatmincellvoltage * 10 ) )
1273- . push8 ( Math . round ( BATTERY_CONFIG . vbatmaxcellvoltage * 10 ) )
1274- . push8 ( Math . round ( BATTERY_CONFIG . vbatwarningcellvoltage * 10 ) ) ;
1294+ . push8 ( Math . round ( MISC . vbatmincellvoltage * 10 ) )
1295+ . push8 ( Math . round ( MISC . vbatmaxcellvoltage * 10 ) )
1296+ . push8 ( Math . round ( MISC . vbatwarningcellvoltage * 10 ) ) ;
12751297 if ( semver . gte ( CONFIG . apiVersion , "1.23.0" ) ) {
1276- buffer . push8 ( BATTERY_CONFIG . voltageMeterSource ) ;
1298+ buffer . push8 ( MISC . batterymetertype ) ;
12771299 }
12781300 }
12791301 break ;
12801302 case MSPCodes . MSP_SET_CURRENT_METER_CONFIG :
12811303 if ( semver . lt ( CONFIG . apiVersion , "1.36.0" ) ) {
12821304 buffer . push16 ( BF_CONFIG . currentscale )
12831305 . push16 ( BF_CONFIG . currentoffset )
1284- . push8 ( BATTERY_CONFIG . currentMeterSource )
1306+ . push8 ( BF_CONFIG . currentmetertype )
12851307 . push16 ( BF_CONFIG . batterycapacity )
12861308 }
12871309 break ;
0 commit comments