Mercurial > public > ostc4
comparison Discovery/Src/data_central.c @ 300:5ca177d2df5d cleanup-4
cleanup: remove commented/unused code, make static
without any functional change.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
| author | Jan Mulder <jlmulder@xs4all.nl> |
|---|---|
| date | Fri, 17 May 2019 21:19:04 +0200 |
| parents | 54d14bc2083c |
| children | eba8d1eb5bef |
comparison
equal
deleted
inserted
replaced
| 299:b70c26be71a0 | 300:5ca177d2df5d |
|---|---|
| 73 | 73 |
| 74 static SDiveState stateReal = { 0 }; | 74 static SDiveState stateReal = { 0 }; |
| 75 SDiveState stateSim = { 0 }; | 75 SDiveState stateSim = { 0 }; |
| 76 SDiveState stateDeco = { 0 }; | 76 SDiveState stateDeco = { 0 }; |
| 77 | 77 |
| 78 SDevice stateDevice = | 78 static SDevice stateDevice = |
| 79 { | 79 { |
| 80 /* max is 0x7FFFFFFF, min is 0x80000000 but also defined in stdint.h :-) */ | 80 /* max is 0x7FFFFFFF, min is 0x80000000 but also defined in stdint.h :-) */ |
| 81 | 81 |
| 82 /* count, use 0 */ | 82 /* count, use 0 */ |
| 83 .batteryChargeCompleteCycles.value_int32 = 0, | 83 .batteryChargeCompleteCycles.value_int32 = 0, |
| 92 /* min values, use max. */ | 92 /* min values, use max. */ |
| 93 .temperatureMinimum.value_int32 = INT32_MAX, | 93 .temperatureMinimum.value_int32 = INT32_MAX, |
| 94 .voltageMinimum.value_int32 = INT32_MAX, | 94 .voltageMinimum.value_int32 = INT32_MAX, |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 SVpmRepetitiveData stateVPM = | 97 static SVpmRepetitiveData stateVPM = |
| 98 { | 98 { |
| 99 .repetitive_variables_not_valid = 1, | 99 .repetitive_variables_not_valid = 1, |
| 100 .is_data_from_RTE_CPU = 0, | 100 .is_data_from_RTE_CPU = 0, |
| 101 }; | 101 }; |
| 102 | 102 |
| 173 return 0xFFFFFFFF - ticksstart + ticksnow; | 173 return 0xFFFFFFFF - ticksstart + ticksnow; |
| 174 } | 174 } |
| 175 | 175 |
| 176 | 176 |
| 177 uint8_t decoLock = DECO_CALC_undefined; | 177 uint8_t decoLock = DECO_CALC_undefined; |
| 178 int ascent_rate_meter_per_min = 12; | 178 |
| 179 int descent_rate_meter_per_min = 20; | 179 static int descent_rate_meter_per_min = 20; |
| 180 int max_depth = 70; | 180 static int max_depth = 70; |
| 181 int bottom_time = 10; | 181 static int bottom_time = 10; |
| 182 | 182 |
| 183 _Bool vpm_crush(SDiveState* pDiveState); | 183 _Bool vpm_crush(SDiveState* pDiveState); |
| 184 void setSimulationValues(int _ascent_rate_meter_per_min, int _descent_rate_meter_per_min, int _max_depth, int _bottom_time ) | 184 void setSimulationValues(int _ascent_rate_meter_per_min, int _descent_rate_meter_per_min, int _max_depth, int _bottom_time ) |
| 185 { | 185 { |
| 186 ascent_rate_meter_per_min = _ascent_rate_meter_per_min; | |
| 187 descent_rate_meter_per_min = _descent_rate_meter_per_min; | 186 descent_rate_meter_per_min = _descent_rate_meter_per_min; |
| 188 max_depth = _max_depth; | 187 max_depth = _max_depth; |
| 189 bottom_time = _bottom_time; | 188 bottom_time = _bottom_time; |
| 190 } | 189 } |
| 191 | 190 |
| 192 | |
| 193 | |
| 194 int current_second(void) { | 191 int current_second(void) { |
| 195 | 192 |
| 196 return HAL_GetTick() / 1000; | 193 return HAL_GetTick() / 1000; |
| 197 // printf("milliseconds: %lld\n", milliseconds); | 194 } |
| 198 //return milliseconds; | |
| 199 } | |
| 200 | |
| 201 | |
| 202 | 195 |
| 203 #define OXY_ONE_SIXTIETH_PART 0.0166667f | 196 #define OXY_ONE_SIXTIETH_PART 0.0166667f |
| 204 | |
| 205 /*void oxygen_calculate_cns(float* oxygen_cns, float pressure_oxygen_real) | |
| 206 { | |
| 207 int cns_no_range = 0; | |
| 208 _Bool not_found = 1; | |
| 209 //for the cns calculation | |
| 210 const float cns_ppo2_ranges[60][2] = { {0.50, 0.00}, {0.60, 0.14}, {0.64, 0.15}, {0.66, 0.16}, {0.68, 0.17}, {0.70, 0.18}, | |
| 211 {0.74, 0.19}, {0.76, 0.20}, {0.78, 0.21}, {0.80, 0.22}, {0.82, 0.23}, {0.84, 0.24}, | |
| 212 {0.86, 0.25}, {0.88, 0.26}, {0.90, 0.28}, {0.92, 0.29}, {0.94, 0.30}, {0.96, 0.31}, | |
| 213 {0.98, 0.32}, {1.00, 0.33}, {1.02, 0.35}, {1.04, 0.36}, {1.06, 0.38}, {1.08, 0.40}, | |
| 214 {1.10, 0.42}, {1.12, 0.43}, {1.14, 0.43}, {1.16, 0.44}, {1.18, 0.46}, {1.20, 0.47}, | |
| 215 {1.22, 0.48}, {1.24, 0.51}, {1.26, 0.52}, {1.28, 0.54}, {1.30, 0.56}, {1.32, 0.57}, | |
| 216 {1.34, 0.60}, {1.36, 0.62}, {1.38, 0.63}, {1.40, 0.65}, {1.42, 0.68}, {1.44, 0.71}, | |
| 217 {1.46, 0.74}, {1.48, 0.78}, {1.50, 0.83}, {1.52, 0.93}, {1.54, 1.04}, {1.56, 1.19}, | |
| 218 {1.58, 1.47}, {1.60, 2.22}, {1.62, 5.00}, {1.65, 6.25}, {1.67, 7.69}, {1.70, 10.0}, | |
| 219 {1.72,12.50}, {1.74,20.00}, {1.77,25.00}, {1.79,31.25}, {1.80,50.00}, {1.82,100.0}}; | |
| 220 //find the correct cns range for the corresponding ppo2 | |
| 221 cns_no_range = 58; | |
| 222 while (cns_no_range && not_found) | |
| 223 { | |
| 224 if (pressure_oxygen_real > cns_ppo2_ranges[cns_no_range][0]) | |
| 225 { | |
| 226 cns_no_range++; | |
| 227 not_found = 0; | |
| 228 } | |
| 229 else | |
| 230 cns_no_range--; | |
| 231 } | |
| 232 | |
| 233 //calculate cns for the actual ppo2 for 1 second | |
| 234 *oxygen_cns += OXY_ONE_SIXTIETH_PART * cns_ppo2_ranges[cns_no_range][1]; | |
| 235 }*/ | |
| 236 | 197 |
| 237 uint8_t calc_MOD(uint8_t gasId) | 198 uint8_t calc_MOD(uint8_t gasId) |
| 238 { | 199 { |
| 239 int16_t oxygen, maxppO2, result; | 200 int16_t oxygen, maxppO2, result; |
| 240 SSettings *pSettings; | 201 SSettings *pSettings; |
| 258 if(result > 255) | 219 if(result > 255) |
| 259 return 255; | 220 return 255; |
| 260 | 221 |
| 261 return result; | 222 return result; |
| 262 } | 223 } |
| 263 | |
| 264 uint8_t calc_MinOD(uint8_t gasId) | |
| 265 { | |
| 266 int16_t oxygen, minppO2, result; | |
| 267 SSettings *pSettings; | |
| 268 | |
| 269 pSettings = settingsGetPointer(); | |
| 270 | |
| 271 oxygen = (int16_t)(pSettings->gas[gasId].oxygen_percentage); | |
| 272 minppO2 =(int16_t)(pSettings->ppO2_min); | |
| 273 result = 10 * minppO2; | |
| 274 result += 9; | |
| 275 result /= oxygen; | |
| 276 result -= 10; | |
| 277 | |
| 278 if(result < 0) | |
| 279 return 0; | |
| 280 | |
| 281 if(result > 255) | |
| 282 return 255; | |
| 283 | |
| 284 return result; | |
| 285 } | |
| 286 /* | |
| 287 float calc_ppO2(float input_ambient_pressure_bar, SGas* pGas) | |
| 288 { | |
| 289 float percent_N2 = 0; | |
| 290 float percent_He = 0; | |
| 291 float percent_O2 = 0; | |
| 292 decom_get_inert_gases(input_ambient_pressure_bar, pGas, &percent_N2, &percent_He); | |
| 293 percent_O2 = 1 - percent_N2 - percent_He; | |
| 294 | |
| 295 return (input_ambient_pressure_bar - WATER_VAPOUR_PRESSURE) * percent_O2; | |
| 296 }*/ | |
| 297 | 224 |
| 298 float get_ambiant_pressure_simulation(long dive_time_seconds, float surface_pressure_bar ) | 225 float get_ambiant_pressure_simulation(long dive_time_seconds, float surface_pressure_bar ) |
| 299 { | 226 { |
| 300 static | 227 static |
| 301 long descent_time; | 228 long descent_time; |
| 649 stateRealGetPointerWrite()->cnsHigh_at_the_end_of_dive = 0; | 576 stateRealGetPointerWrite()->cnsHigh_at_the_end_of_dive = 0; |
| 650 stateRealGetPointerWrite()->decoMissed_at_the_end_of_dive = 0; | 577 stateRealGetPointerWrite()->decoMissed_at_the_end_of_dive = 0; |
| 651 } | 578 } |
| 652 | 579 |
| 653 | 580 |
| 654 int32_t helper_days_from_civil(int32_t y, uint32_t m, uint32_t d) | 581 static int32_t helper_days_from_civil(int32_t y, uint32_t m, uint32_t d) |
| 655 { | 582 { |
| 656 y += 2000; | 583 y += 2000; |
| 657 y -= m <= 2; | 584 y -= m <= 2; |
| 658 int32_t era = (y >= 0 ? y : y-399) / 400; | 585 int32_t era = (y >= 0 ? y : y-399) / 400; |
| 659 uint32_t yoe = (uint32_t)(y - era * 400); // [0, 399] | 586 uint32_t yoe = (uint32_t)(y - era * 400); // [0, 399] |
| 661 uint32_t doe = yoe * 365 + yoe/4 - yoe/100 + doy; // [0, 146096] | 588 uint32_t doe = yoe * 365 + yoe/4 - yoe/100 + doy; // [0, 146096] |
| 662 return era * 146097 + (int32_t)(doe) - 719468; | 589 return era * 146097 + (int32_t)(doe) - 719468; |
| 663 } | 590 } |
| 664 | 591 |
| 665 | 592 |
| 666 uint8_t helper_weekday_from_days(int32_t z) | 593 static uint8_t helper_weekday_from_days(int32_t z) |
| 667 { | 594 { |
| 668 return (uint8_t)(z >= -4 ? (z+4) % 7 : (z+5) % 7 + 6); | 595 return (uint8_t)(z >= -4 ? (z+4) % 7 : (z+5) % 7 + 6); |
| 669 } | 596 } |
| 670 | 597 |
| 671 | 598 |
| 712 sTime->Minutes = (uint8_t)RTC_Bcd2ToByte(sTime->Minutes); | 639 sTime->Minutes = (uint8_t)RTC_Bcd2ToByte(sTime->Minutes); |
| 713 sTime->Seconds = (uint8_t)RTC_Bcd2ToByte(sTime->Seconds); | 640 sTime->Seconds = (uint8_t)RTC_Bcd2ToByte(sTime->Seconds); |
| 714 sTime->SubSeconds = 0; | 641 sTime->SubSeconds = 0; |
| 715 } | 642 } |
| 716 | 643 |
| 717 | |
| 718 /* | |
| 719 void initDiveState(SDiveSettings * pDiveSettings, SVpm * pVpm) | |
| 720 { | |
| 721 SSettings* pSettings = settingsGetPointer(); | |
| 722 for(int i = 0; i< NUM_GASES; i++) | |
| 723 { | |
| 724 pDiveSettings->gas[i] = pSettings->gas[i]; | |
| 725 pDiveSettings->gas[NUM_OFFSET_DILUENT + i] = pSettings->gas[NUM_OFFSET_DILUENT + i]; | |
| 726 pDiveSettings->setpoint[i] = pSettings->setpoint[i]; | |
| 727 } | |
| 728 pDiveSettings->diveMode = pSettings->dive_mode; | |
| 729 | |
| 730 pDiveSettings->gf_high = pSettings->GF_high; | |
| 731 pDiveSettings->gf_low = pSettings->GF_low; | |
| 732 pDiveSettings->last_stop_depth_bar = ((float)pSettings->last_stop_depth_meter) / 10.0; | |
| 733 pDiveSettings->ascentRate_meterperminute = 10; | |
| 734 pDiveSettings->vpm_conservatism = 1; | |
| 735 | |
| 736 pDiveSettings->input_next_stop_increment_depth_bar = ((float)pSettings->stop_increment_depth_meter) / 10.0f; | |
| 737 | |
| 738 vpm_init(pVpm, pDiveSettings->vpm_conservatism, 0, 0); | |
| 739 } | |
| 740 */ | |
| 741 _Bool deco_zone_reached(void) | |
| 742 { | |
| 743 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
| 744 return stateUsed->lifeData.pressure_ambient_bar <= stateUsed->diveSettings.internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero; | |
| 745 else | |
| 746 return stateUsed->vpm.deco_zone_reached; | |
| 747 | |
| 748 } | |
| 749 | |
| 750 | |
| 751 void resetEvents(const SDiveState *pStateUsed) | 644 void resetEvents(const SDiveState *pStateUsed) |
| 752 { | 645 { |
| 753 memset((void *)&pStateUsed->events, 0, sizeof(SEvents)); | 646 memset((void *)&pStateUsed->events, 0, sizeof(SEvents)); |
| 754 } | |
| 755 | |
| 756 | |
| 757 /* This is derived from crc32b but does table lookup. First the table | |
| 758 itself is calculated, if it has not yet been set up. | |
| 759 Not counting the table setup (which would probably be a separate | |
| 760 function), when compiled to Cyclops with GCC, this function executes in | |
| 761 7 + 13n instructions, where n is the number of bytes in the input | |
| 762 message. It should be doable in 4 + 9n instructions. In any case, two | |
| 763 of the 13 or 9 instrucions are load byte. | |
| 764 This is Figure 14-7 in the text. */ | |
| 765 | |
| 766 /* http://www.hackersdelight.org/ i guess ;-) *hw */ | |
| 767 | |
| 768 uint32_t crc32c_checksum(uint8_t* message, uint16_t length, uint8_t* message2, uint16_t length2) { | |
| 769 int i, j; | |
| 770 uint32_t byte, crc, mask; | |
| 771 static unsigned int table[256] = {0}; | |
| 772 | |
| 773 /* Set up the table, if necessary. */ | |
| 774 if (table[1] == 0) { | |
| 775 for (byte = 0; byte <= 255; byte++) { | |
| 776 crc = byte; | |
| 777 for (j = 7; j >= 0; j--) { // Do eight times. | |
| 778 mask = -(crc & 1); | |
| 779 crc = (crc >> 1) ^ (0xEDB88320 & mask); | |
| 780 } | |
| 781 table[byte] = crc; | |
| 782 } | |
| 783 } | |
| 784 | |
| 785 /* Through with table setup, now calculate the CRC. */ | |
| 786 i = 0; | |
| 787 crc = 0xFFFFFFFF; | |
| 788 while (length--) { | |
| 789 byte = message[i]; | |
| 790 crc = (crc >> 8) ^ table[(crc ^ byte) & 0xFF]; | |
| 791 i = i + 1; | |
| 792 } | |
| 793 if(length2) | |
| 794 { | |
| 795 i = 0; | |
| 796 while (length2--) { | |
| 797 byte = message2[i]; | |
| 798 crc = (crc >> 8) ^ table[(crc ^ byte) & 0xFF]; | |
| 799 i = i + 1; | |
| 800 } | |
| 801 } | |
| 802 return ~crc; | |
| 803 } | 647 } |
| 804 | 648 |
| 805 | 649 |
| 806 uint32_t CRC_CalcBlockCRC_moreThan768000(uint32_t *buffer1, uint32_t *buffer2, uint32_t words) | 650 uint32_t CRC_CalcBlockCRC_moreThan768000(uint32_t *buffer1, uint32_t *buffer2, uint32_t words) |
| 807 { | 651 { |
