@@ -185,6 +185,8 @@ public static void DoGUIMagCalib(bool dointro = true)
185
185
186
186
static List < Tuple < float , float , float > > datacompass3 = new List < Tuple < float , float , float > > ( ) ;
187
187
188
+ private static object _locker = new object ( ) ;
189
+
188
190
static bool ReceviedPacket ( MAVLink . MAVLinkMessage rawpacket )
189
191
{
190
192
if ( rawpacket . msgid == ( byte ) MAVLink . MAVLINK_MSG_ID . SCALED_IMU2 )
@@ -214,7 +216,7 @@ static bool ReceviedPacket(MAVLink.MAVLinkMessage rawpacket)
214
216
float rawmz = packet . zmag ;
215
217
216
218
// add data
217
- lock ( datacompass2 )
219
+ lock ( _locker )
218
220
{
219
221
if ( rawmx == 0 || rawmy == 0 || rawmz == 0 )
220
222
return true ;
@@ -251,7 +253,7 @@ static bool ReceviedPacket(MAVLink.MAVLinkMessage rawpacket)
251
253
float rawmz = packet . zmag ;
252
254
253
255
// add data
254
- lock ( datacompass3 )
256
+ lock ( _locker )
255
257
{
256
258
if ( rawmx == 0 || rawmy == 0 || rawmz == 0 )
257
259
return true ;
@@ -291,7 +293,7 @@ static bool ReceviedPacket(MAVLink.MAVLinkMessage rawpacket)
291
293
float rawmz = packet . zmag - ( float ) MainV2 . comPort . MAV . cs . mag_ofs_z ;
292
294
293
295
// add data
294
- lock ( datacompass1 )
296
+ lock ( _locker )
295
297
{
296
298
datacompass1 . Add ( new Tuple < float , float , float > ( rawmx , rawmy , rawmz ) ) ;
297
299
}
@@ -420,7 +422,7 @@ static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata
420
422
MainV2 . comPort . requestDatastream ( MAVLink . MAV_DATA_STREAM . RAW_SENSORS , 50 ) ;
421
423
422
424
lastlsq = DateTime . Now ;
423
- lock ( datacompass1 )
425
+ lock ( _locker )
424
426
{
425
427
var lsq = MagCalib . LeastSq ( datacompass1 , false ) ;
426
428
// simple validation
@@ -439,7 +441,7 @@ static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata
439
441
if ( datacompass2 . Count > 100 && lastlsq2 . Second != DateTime . Now . Second )
440
442
{
441
443
lastlsq2 = DateTime . Now ;
442
- lock ( datacompass2 )
444
+ lock ( _locker )
443
445
{
444
446
var lsq = MagCalib . LeastSq ( datacompass2 , false ) ;
445
447
// simple validation
@@ -458,7 +460,7 @@ static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata
458
460
if ( datacompass3 . Count > 100 && lastlsq3 . Second != DateTime . Now . Second )
459
461
{
460
462
lastlsq3 = DateTime . Now ;
461
- lock ( datacompass3 )
463
+ lock ( _locker )
462
464
{
463
465
var lsq = MagCalib . LeastSq ( datacompass3 , false ) ;
464
466
// simple validation
0 commit comments