@@ -144,7 +144,7 @@ oceanic_atom2_parser_create (dc_parser_t **out, dc_context_t *context, const uns
144
144
} else if (model == I550C || model == WISDOM4 ||
145
145
model == I200CV2 || model == I100V2 ) {
146
146
parser -> headersize = 5 * PAGESIZE / 2 ;
147
- } else if (model == I330R ) {
147
+ } else if (model == I330R || model == I330R_C ) {
148
148
parser -> logbooksize = 64 ;
149
149
parser -> headersize = parser -> logbooksize + 80 ;
150
150
parser -> footersize = 48 ;
@@ -195,6 +195,7 @@ oceanic_atom2_parser_get_datetime (dc_parser_t *abstract, dc_datetime_t *datetim
195
195
196
196
switch (parser -> model ) {
197
197
case I330R :
198
+ case I330R_C :
198
199
case DSX :
199
200
datetime -> year = p [7 ] + 2000 ;
200
201
datetime -> month = p [6 ];
@@ -391,7 +392,7 @@ oceanic_atom2_parser_cache (oceanic_atom2_parser_t *parser)
391
392
} else if (parser -> model == VEO20 || parser -> model == VEO30 ||
392
393
parser -> model == OCS ) {
393
394
mode = (data [1 ] & 0x60 ) >> 5 ;
394
- } else if (parser -> model == I330R ) {
395
+ } else if (parser -> model == I330R || parser -> model == I330R_C ) {
395
396
mode = data [2 ];
396
397
} else if (parser -> model == DSX ) {
397
398
mode = data [45 ];
@@ -452,7 +453,7 @@ oceanic_atom2_parser_cache (oceanic_atom2_parser_t *parser)
452
453
} else if (parser -> model == WISDOM4 ) {
453
454
o2_offset = header + 4 ;
454
455
ngasmixes = 1 ;
455
- } else if (parser -> model == I330R ) {
456
+ } else if (parser -> model == I330R || parser -> model == I330R_C ) {
456
457
ngasmixes = 3 ;
457
458
o2_offset = parser -> logbooksize + 16 ;
458
459
} else if (parser -> model == DSX ) {
@@ -477,7 +478,8 @@ oceanic_atom2_parser_cache (oceanic_atom2_parser_t *parser)
477
478
if (data [o2_offset + i * o2_step ]) {
478
479
parser -> oxygen [i ] = data [o2_offset + i * o2_step ];
479
480
// The i330R uses 20 as "Air" and 21 as 21% Nitrox
480
- if (parser -> model == I330R && parser -> oxygen [i ] == 20 ) {
481
+ if ((parser -> model == I330R || parser -> model == I330R_C ) &&
482
+ parser -> oxygen [i ] == 20 ) {
481
483
parser -> oxygen [i ] = 21 ;
482
484
}
483
485
} else {
@@ -538,13 +540,13 @@ oceanic_atom2_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, uns
538
540
parser -> model == F11A || parser -> model == F11B ||
539
541
parser -> model == MUNDIAL2 || parser -> model == MUNDIAL3 )
540
542
* ((double * ) value ) = array_uint16_le (data + 4 ) / 16.0 * FEET ;
541
- else if (parser -> model == I330R || parser -> model == DSX )
543
+ else if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX )
542
544
* ((double * ) value ) = array_uint16_le (data + parser -> footer + 10 ) / 10.0 * FEET ;
543
545
else
544
546
* ((double * ) value ) = (array_uint16_le (data + parser -> footer + 4 ) & 0x0FFF ) / 16.0 * FEET ;
545
547
break ;
546
548
case DC_FIELD_AVGDEPTH :
547
- if (parser -> model == I330R || parser -> model == DSX ) {
549
+ if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
548
550
* ((double * ) value ) = array_uint16_le (data + parser -> footer + 12 ) / 10.0 * FEET ;
549
551
} else {
550
552
return DC_STATUS_UNSUPPORTED ;
@@ -568,7 +570,7 @@ oceanic_atom2_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, uns
568
570
water -> type = DC_WATER_SALT ;
569
571
}
570
572
water -> density = 0.0 ;
571
- } else if (parser -> model == I330R || parser -> model == DSX ) {
573
+ } else if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
572
574
unsigned int settings = array_uint32_le (data + parser -> logbooksize + 12 );
573
575
if (settings & 0x10000 ) {
574
576
water -> type = DC_WATER_FRESH ;
@@ -675,7 +677,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
675
677
unsigned int time = 0 ;
676
678
unsigned int interval = 1000 ;
677
679
if (!is_freedive (parser -> mode , parser -> model )) {
678
- if (parser -> model == I330R || parser -> model == DSX ) {
680
+ if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
679
681
interval = data [parser -> logbooksize + 36 ] * 1000 ;
680
682
} else {
681
683
unsigned int offset = 0x17 ;
@@ -710,7 +712,8 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
710
712
parser -> model == I750TC || parser -> model == PROPLUSX ||
711
713
parser -> model == I770R || parser -> model == I470TC ||
712
714
parser -> model == SAGE || parser -> model == BEACON ||
713
- parser -> model == GEOAIR || parser -> model == I330R ) {
715
+ parser -> model == GEOAIR || parser -> model == I330R ||
716
+ parser -> model == I330R_C ) {
714
717
samplesize = PAGESIZE ;
715
718
} else if (parser -> model == DSX ) {
716
719
samplesize = 32 ;
@@ -729,7 +732,8 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
729
732
parser -> model == I300C || parser -> model == TALIS ||
730
733
parser -> model == I200C || parser -> model == I200CV2 ||
731
734
parser -> model == GEO40 || parser -> model == VEO40 ||
732
- parser -> model == I330R || parser -> model == I100V2 ) {
735
+ parser -> model == I330R || parser -> model == I330R_C ||
736
+ parser -> model == I100V2 ) {
733
737
have_pressure = 0 ;
734
738
}
735
739
@@ -898,7 +902,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
898
902
parser -> model == I770R || parser -> model == SAGE ||
899
903
parser -> model == BEACON ) {
900
904
temperature = data [offset + 11 ];
901
- } else if (parser -> model == I330R || parser -> model == DSX ) {
905
+ } else if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
902
906
temperature = array_uint16_le (data + offset + 10 );
903
907
} else {
904
908
unsigned int sign ;
@@ -922,7 +926,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
922
926
else
923
927
temperature += (data [offset + 7 ] & 0x0C ) >> 2 ;
924
928
}
925
- if (parser -> model == I330R || parser -> model == DSX ) {
929
+ if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
926
930
sample .temperature = ((temperature / 10.0 ) - 32.0 ) * (5.0 / 9.0 );
927
931
} else {
928
932
sample .temperature = (temperature - 32.0 ) * (5.0 / 9.0 );
@@ -979,13 +983,13 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
979
983
parser -> model == I470TC || parser -> model == I200CV2 ||
980
984
parser -> model == GEOAIR || parser -> model == I100V2 )
981
985
depth = (data [offset + 4 ] + (data [offset + 5 ] << 8 )) & 0x0FFF ;
982
- else if (parser -> model == I330R || parser -> model == DSX )
986
+ else if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX )
983
987
depth = array_uint16_le (data + offset + 2 );
984
988
else if (parser -> model == ATOM1 )
985
989
depth = data [offset + 3 ] * 16 ;
986
990
else
987
991
depth = (data [offset + 2 ] + (data [offset + 3 ] << 8 )) & 0x0FFF ;
988
- if (parser -> model == I330R || parser -> model == DSX ) {
992
+ if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
989
993
sample .depth = depth / 10.0 * FEET ;
990
994
} else {
991
995
sample .depth = depth / 16.0 * FEET ;
@@ -1048,7 +1052,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
1048
1052
decostop = (data [offset + 7 ] & 0xF0 ) >> 4 ;
1049
1053
decotime = array_uint16_le (data + offset + 6 ) & 0x0FFF ;
1050
1054
have_deco = 1 ;
1051
- } else if (parser -> model == I330R || parser -> model == DSX ) {
1055
+ } else if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
1052
1056
decostop = data [offset + 8 ];
1053
1057
if (decostop ) {
1054
1058
// Deco time
@@ -1062,7 +1066,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
1062
1066
if (have_deco ) {
1063
1067
if (decostop ) {
1064
1068
sample .deco .type = DC_DECO_DECOSTOP ;
1065
- if (parser -> model == I330R || parser -> model == DSX ) {
1069
+ if (parser -> model == I330R || parser -> model == I330R_C || parser -> model == DSX ) {
1066
1070
sample .deco .depth = decostop * FEET ;
1067
1071
} else {
1068
1072
sample .deco .depth = decostop * 10 * FEET ;
@@ -1101,7 +1105,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
1101
1105
}
1102
1106
1103
1107
// PPO2
1104
- if (parser -> model == I330R ) {
1108
+ if (parser -> model == I330R || parser -> model == I330R_C ) {
1105
1109
sample .ppo2 .sensor = DC_SENSOR_NONE ;
1106
1110
sample .ppo2 .value = data [offset + 9 ] / 100.0 ;
1107
1111
if (callback ) callback (DC_SAMPLE_PPO2 , & sample , userdata );
0 commit comments