Mercurial > public > ostc4
comparison Discovery/Src/settings.c @ 662:1b995079c045 Betatest
PSCR Mode
| author | heinrichs weikamp |
|---|---|
| date | Tue, 14 Dec 2021 15:36:10 +0100 |
| parents | 9513a92b293b |
| children | 12d029f38430 |
comparison
equal
deleted
inserted
replaced
| 661:87bee7cc77b3 | 662:1b995079c045 |
|---|---|
| 34 #include "tHome.h" // for CVIEW_END | 34 #include "tHome.h" // for CVIEW_END |
| 35 #include "motion.h" | 35 #include "motion.h" |
| 36 #include "t7.h" | 36 #include "t7.h" |
| 37 #include "data_central.h" | 37 #include "data_central.h" |
| 38 | 38 |
| 39 static uint8_t settingsWarning = 0; /* Active if setting values have been corrected */ | |
| 40 | |
| 39 SSettings Settings; | 41 SSettings Settings; |
| 40 | 42 |
| 41 const uint8_t RTErequiredHigh = 2; | 43 const uint8_t RTErequiredHigh = 2; |
| 42 const uint8_t RTErequiredLow = 7; | 44 const uint8_t RTErequiredLow = 7; |
| 43 | 45 |
| 83 | 85 |
| 84 /* always adjust check_and_correct_settings() accordingly | 86 /* always adjust check_and_correct_settings() accordingly |
| 85 * There might even be entries with fixed values that have no range | 87 * There might even be entries with fixed values that have no range |
| 86 */ | 88 */ |
| 87 const SSettings SettingsStandard = { | 89 const SSettings SettingsStandard = { |
| 88 .header = 0xFFFF001F, | 90 .header = 0xFFFF0021, |
| 89 .warning_blink_dsec = 8 * 2, | 91 .warning_blink_dsec = 8 * 2, |
| 90 .lastDiveLogId = 0, | 92 .lastDiveLogId = 0, |
| 91 .logFlashNextSampleStartAddress = 0, | 93 .logFlashNextSampleStartAddress = SAMPLESTART, |
| 92 | 94 |
| 93 .gas[0].oxygen_percentage = 21, | 95 .gas[0].oxygen_percentage = 21, |
| 94 .gas[1].oxygen_percentage = 21, | 96 .gas[1].oxygen_percentage = 21, |
| 95 .gas[2].oxygen_percentage = 21, | 97 .gas[2].oxygen_percentage = 21, |
| 96 .gas[3].oxygen_percentage = 21, | 98 .gas[3].oxygen_percentage = 21, |
| 217 .ppO2_max_deco = 160, | 219 .ppO2_max_deco = 160, |
| 218 .ppO2_max_std = 140, | 220 .ppO2_max_std = 140, |
| 219 .ppO2_min = 15, | 221 .ppO2_min = 15, |
| 220 .CNS_max = 90, | 222 .CNS_max = 90, |
| 221 .ascent_MeterPerMinute_max = 30, | 223 .ascent_MeterPerMinute_max = 30, |
| 222 .ascent_MeterPerMinute_showGraph = 7, | 224 .ascent_MeterPerMinute_showGraph = 30, |
| 223 .future_TTS = 5, | 225 .future_TTS = 5, |
| 224 .GF_high = 85, | 226 .GF_high = 85, |
| 225 .GF_low = 30, | 227 .GF_low = 30, |
| 226 .aGF_high = 95, | 228 .aGF_high = 95, |
| 227 .aGF_low = 95, | 229 .aGF_low = 95, |
| 266 .nonMetricalSystem = 0, | 268 .nonMetricalSystem = 0, |
| 267 .fallbackToFixedSetpoint = 1, | 269 .fallbackToFixedSetpoint = 1, |
| 268 .bluetoothActive = 0, | 270 .bluetoothActive = 0, |
| 269 .safetystopDepth = 5, | 271 .safetystopDepth = 5, |
| 270 .updateSettingsAllowedFromHeader = 0xFFFF0002, | 272 .updateSettingsAllowedFromHeader = 0xFFFF0002, |
| 271 .scooterControl = 0, | 273 .pscr_lung_ratio = 10, |
| 272 .scooterDrag = 2, | 274 .pscr_o2_drop = 4, |
| 273 .scooterLoad = 2, | 275 .co2_sensor_active = 0, |
| 274 .scooterNumberOfBatteries = 1, | |
| 275 .scooterBattSize = 760, | |
| 276 .scooterSPARE1[0] = 0, | |
| 277 .scooterSPARE2[0] = 0, | |
| 278 .ppo2sensors_deactivated = 0, | 276 .ppo2sensors_deactivated = 0, |
| 279 .tX_colorscheme = 0, | 277 .tX_colorscheme = 0, |
| 280 .tX_userselectedLeftLowerCornerPrimary = LLC_Temperature, | 278 .tX_userselectedLeftLowerCornerPrimary = LLC_Temperature, |
| 281 .tX_userselectedLeftLowerCornerTimeout = 0, | 279 .tX_userselectedLeftLowerCornerTimeout = 0, |
| 282 .tX_customViewPrimary = 1, | 280 .tX_customViewPrimary = 1, |
| 368 settingsGetPointer()->firmwareVersion[2] = firmware_FirmwareData.versionThird; | 366 settingsGetPointer()->firmwareVersion[2] = firmware_FirmwareData.versionThird; |
| 369 settingsGetPointer()->firmwareVersion[3] = firmware_FirmwareData.versionBeta; | 367 settingsGetPointer()->firmwareVersion[3] = firmware_FirmwareData.versionBeta; |
| 370 | 368 |
| 371 SSettings* pSettings = settingsGetPointer(); | 369 SSettings* pSettings = settingsGetPointer(); |
| 372 const SSettings* pStandard = settingsGetPointerStandard(); | 370 const SSettings* pStandard = settingsGetPointerStandard(); |
| 373 | |
| 374 pSettings->scooterControl = 0; | |
| 375 | 371 |
| 376 /* Pointing to the old header data => set new data depending on what had been added since last version */ | 372 /* Pointing to the old header data => set new data depending on what had been added since last version */ |
| 377 switch(pSettings->header) | 373 switch(pSettings->header) |
| 378 { | 374 { |
| 379 case 0xFFFF0000: | 375 case 0xFFFF0000: |
| 431 pSettings->debugModeOnStart = 0; | 427 pSettings->debugModeOnStart = 0; |
| 432 // no break | 428 // no break |
| 433 case 0xFFFF000F: | 429 case 0xFFFF000F: |
| 434 pSettings->compassBearing = 0; | 430 pSettings->compassBearing = 0; |
| 435 // no break | 431 // no break |
| 436 case 0xFFFF0010: | |
| 437 pSettings->scooterDrag = 2; | |
| 438 pSettings->scooterLoad = 2; | |
| 439 pSettings->scooterSPARE1[0] = 0; | |
| 440 pSettings->scooterSPARE2[0] = 0; | |
| 441 // no break | |
| 442 case 0xFFFF0011: | 432 case 0xFFFF0011: |
| 443 pSettings->scooterNumberOfBatteries = 1; | |
| 444 pSettings->scooterBattSize = 760; | |
| 445 pSettings->lastKnownBatteryPercentage = 0; | 433 pSettings->lastKnownBatteryPercentage = 0; |
| 446 // no break | 434 // no break |
| 447 case 0xFFFF0012: | 435 case 0xFFFF0012: |
| 448 pSettings->buttonBalance[0] = 3; | 436 pSettings->buttonBalance[0] = 3; |
| 449 pSettings->buttonBalance[1] = 3; | 437 pSettings->buttonBalance[1] = 3; |
| 494 case 0xFFFF001D: | 482 case 0xFFFF001D: |
| 495 pSettings->ppo2sensors_source = O2_SENSOR_SOURCE_OPTIC; | 483 pSettings->ppo2sensors_source = O2_SENSOR_SOURCE_OPTIC; |
| 496 pSettings->ppo2sensors_calibCoeff[0] = 0.0; | 484 pSettings->ppo2sensors_calibCoeff[0] = 0.0; |
| 497 pSettings->ppo2sensors_calibCoeff[1] = 0.0; | 485 pSettings->ppo2sensors_calibCoeff[1] = 0.0; |
| 498 pSettings->ppo2sensors_calibCoeff[2] = 0.0; | 486 pSettings->ppo2sensors_calibCoeff[2] = 0.0; |
| 487 pSettings->amPMTime = 0; | |
| 499 // no break | 488 // no break |
| 489 case 0xFFFF001E: | |
| 490 pSettings->autoSetpoint = 0; | |
| 491 pSettings->scrubTimerMax = 0; | |
| 492 pSettings->scrubTimerCur = 0; | |
| 493 pSettings->scrubTimerMode = SCRUB_TIMER_OFF; | |
| 494 // no break | |
| 495 case 0xFFFF001F: | |
| 496 pSettings->pscr_lung_ratio = 10; | |
| 497 pSettings->pscr_o2_drop = 4; | |
| 498 // no break | |
| 499 case 0xFFFF0020: | |
| 500 pSettings->co2_sensor_active = 0; | |
| 501 // no break; | |
| 500 default: | 502 default: |
| 501 pSettings->header = pStandard->header; | 503 pSettings->header = pStandard->header; |
| 502 break; // no break before!! | 504 break; // no break before!! |
| 503 } | 505 } |
| 504 } | 506 } |
| 534 { | 536 { |
| 535 uint32_t corrections = 0; | 537 uint32_t corrections = 0; |
| 536 uint8_t firstGasFoundOC = 0; | 538 uint8_t firstGasFoundOC = 0; |
| 537 uint8_t firstGasFoundCCR = 0; | 539 uint8_t firstGasFoundCCR = 0; |
| 538 | 540 |
| 541 | |
| 542 settingsWarning = 0; /* reset warning indicator */ | |
| 543 | |
| 539 /* uint32_t header; | 544 /* uint32_t header; |
| 540 */ | 545 */ |
| 541 | 546 |
| 542 /* uint8_t warning_blink_dsec; 1/10 seconds | 547 /* uint8_t warning_blink_dsec; 1/10 seconds |
| 543 */ | 548 */ |
| 562 /* uint8_t dive_mode; has to before the gases | 567 /* uint8_t dive_mode; has to before the gases |
| 563 */ | 568 */ |
| 564 if( (Settings.dive_mode != DIVEMODE_OC) && | 569 if( (Settings.dive_mode != DIVEMODE_OC) && |
| 565 (Settings.dive_mode != DIVEMODE_CCR) && | 570 (Settings.dive_mode != DIVEMODE_CCR) && |
| 566 (Settings.dive_mode != DIVEMODE_Gauge) && | 571 (Settings.dive_mode != DIVEMODE_Gauge) && |
| 567 (Settings.dive_mode != DIVEMODE_Apnea) ) | 572 (Settings.dive_mode != DIVEMODE_Apnea) && |
| 573 (Settings.dive_mode != DIVEMODE_PSCR)) | |
| 568 { | 574 { |
| 569 Settings.dive_mode = DIVEMODE_OC; | 575 Settings.dive_mode = DIVEMODE_OC; |
| 570 corrections++; | 576 corrections++; |
| 571 } | 577 } |
| 572 | 578 |
| 616 corrections++; | 622 corrections++; |
| 617 } | 623 } |
| 618 } | 624 } |
| 619 if(Settings.gas[i].note.ub.first) | 625 if(Settings.gas[i].note.ub.first) |
| 620 { | 626 { |
| 621 if(Settings.setpoint[i].note.ub.active != 1) | 627 if(Settings.gas[i].note.ub.active != 1) |
| 622 { | 628 { |
| 623 Settings.setpoint[i].note.ub.active = 1; | 629 Settings.gas[i].note.ub.active = 1; |
| 624 corrections++; | 630 corrections++; |
| 625 } | 631 } |
| 626 if(Settings.gas[i].note.ub.travel == 1) | 632 if(Settings.gas[i].note.ub.travel == 1) |
| 627 { | 633 { |
| 628 Settings.gas[i].note.ub.travel = 0; | 634 Settings.gas[i].note.ub.travel = 0; |
| 669 { | 675 { |
| 670 Settings.gas[1].note.ub.active = 1; | 676 Settings.gas[1].note.ub.active = 1; |
| 671 Settings.gas[1].note.ub.first = 1; | 677 Settings.gas[1].note.ub.first = 1; |
| 672 Settings.gas[1].note.ub.travel = 0; | 678 Settings.gas[1].note.ub.travel = 0; |
| 673 Settings.gas[1].note.ub.deco = 0; | 679 Settings.gas[1].note.ub.deco = 0; |
| 680 corrections++; | |
| 674 } | 681 } |
| 675 if(!firstGasFoundCCR) | 682 if(!firstGasFoundCCR) |
| 676 { | 683 { |
| 677 Settings.gas[1 + NUM_GASES].note.ub.active = 1; | 684 Settings.gas[1 + NUM_GASES].note.ub.active = 1; |
| 678 Settings.gas[1 + NUM_GASES].note.ub.first = 1; | 685 Settings.gas[1 + NUM_GASES].note.ub.first = 1; |
| 679 Settings.gas[1 + NUM_GASES].note.ub.travel = 0; | 686 Settings.gas[1 + NUM_GASES].note.ub.travel = 0; |
| 680 Settings.gas[1 + NUM_GASES].note.ub.deco = 0; | 687 Settings.gas[1 + NUM_GASES].note.ub.deco = 0; |
| 688 corrections++; | |
| 681 } | 689 } |
| 682 /* SSetpointLine setpoint[1 + NUM_GASES]; | 690 /* SSetpointLine setpoint[1 + NUM_GASES]; |
| 683 */ | 691 */ |
| 684 for(int i=1; i<=NUM_GASES;i++) | 692 for(int i=1; i<=NUM_GASES;i++) |
| 685 { | 693 { |
| 745 } // for(int i=1; i<=NUM_GASES;i++) | 753 } // for(int i=1; i<=NUM_GASES;i++) |
| 746 | 754 |
| 747 /* uint8_t CCR_Mode; | 755 /* uint8_t CCR_Mode; |
| 748 */ | 756 */ |
| 749 if( (Settings.CCR_Mode != CCRMODE_Sensors) && | 757 if( (Settings.CCR_Mode != CCRMODE_Sensors) && |
| 758 (Settings.CCR_Mode != CCRMODE_Simulation) && | |
| 750 (Settings.CCR_Mode != CCRMODE_FixedSetpoint)) | 759 (Settings.CCR_Mode != CCRMODE_FixedSetpoint)) |
| 751 { | 760 { |
| 752 Settings.CCR_Mode = CCRMODE_FixedSetpoint; | 761 Settings.CCR_Mode = CCRMODE_FixedSetpoint; |
| 753 corrections++; | 762 corrections++; |
| 754 } | 763 } |
| 1459 if(Settings.scrubTimerMode > SCRUB_TIMER_END) | 1468 if(Settings.scrubTimerMode > SCRUB_TIMER_END) |
| 1460 { | 1469 { |
| 1461 Settings.scrubTimerMode = SCRUB_TIMER_OFF; | 1470 Settings.scrubTimerMode = SCRUB_TIMER_OFF; |
| 1462 corrections++; | 1471 corrections++; |
| 1463 } | 1472 } |
| 1473 | |
| 1474 if((Settings.pscr_lung_ratio > PSCR_MAX_LUNG_RATIO) || (Settings.pscr_lung_ratio < PSCR_MIN_LUNG_RATIO)) | |
| 1475 { | |
| 1476 Settings.pscr_lung_ratio = 10; | |
| 1477 corrections++; | |
| 1478 } | |
| 1479 if(Settings.pscr_o2_drop > PSCR_MAX_O2_DROP) | |
| 1480 { | |
| 1481 Settings.pscr_o2_drop = 4; | |
| 1482 corrections++; | |
| 1483 } | |
| 1484 | |
| 1485 if(Settings.co2_sensor_active > 1) | |
| 1486 { | |
| 1487 Settings.co2_sensor_active = 0; | |
| 1488 corrections++; | |
| 1489 } | |
| 1490 | |
| 1491 if(corrections) | |
| 1492 { | |
| 1493 settingsWarning = 1; | |
| 1494 } | |
| 1495 else | |
| 1496 | |
| 1464 if(corrections > 255) | 1497 if(corrections > 255) |
| 1465 return 255; | 1498 { |
| 1466 else | 1499 corrections = 255; |
| 1467 return (uint8_t)corrections; | 1500 } |
| 1501 | |
| 1502 return (uint8_t)corrections; | |
| 1468 } | 1503 } |
| 1469 | 1504 |
| 1470 | 1505 |
| 1471 /* always at 0x8080000, do not move -> bootloader access */ | 1506 /* always at 0x8080000, do not move -> bootloader access */ |
| 1472 const SFirmwareData* firmwareDataGetPointer(void) | 1507 const SFirmwareData* firmwareDataGetPointer(void) |
| 2919 { | 2954 { |
| 2920 return 110; | 2955 return 110; |
| 2921 } | 2956 } |
| 2922 } | 2957 } |
| 2923 } | 2958 } |
| 2959 | |
| 2960 void reset_SettingWarning() | |
| 2961 { | |
| 2962 settingsWarning = 0; | |
| 2963 } | |
| 2964 inline uint8_t isSettingsWarning() | |
| 2965 { | |
| 2966 return settingsWarning; | |
| 2967 } | |
| 2968 |
