comparison Discovery/Src/t7.c @ 895:94535e672583 Evo_2_23

Zusammenf?hren
author heinrichsweikamp
date Wed, 18 Sep 2024 14:31:06 +0200
parents 0e084e5554a8
children f29369fff71e
comparison
equal deleted inserted replaced
894:9e2f9b91e827 895:94535e672583
2774 Gfx_colorsscheme_mod(TextL2, 0); 2774 Gfx_colorsscheme_mod(TextL2, 0);
2775 GFX_write_string(&FontT105,&t7l2,TextL2,1); 2775 GFX_write_string(&FontT105,&t7l2,TextL2,1);
2776 2776
2777 /* ascent rate graph */ 2777 /* ascent rate graph */
2778 2778
2779 if((pSettings->slowExitTime != 0) && (stateUsed->lifeData.depth_meter < pSettings->last_stop_depth_meter)) 2779 if((pSettings->slowExitTime != 0) && (pDecoinfo->output_time_to_surface_seconds == 0) && (stateUsed->lifeData.depth_meter < pSettings->last_stop_depth_meter))
2780 { 2780 {
2781 color = t7_drawSlowExitGraph(); 2781 color = t7_drawSlowExitGraph();
2782 } 2782 }
2783 else if(stateUsed->lifeData.ascent_rate_meter_per_min > 1) /* a value < 1 would cause a bar in negative direction brush rectangle of 12 and step width of 6 */ 2783 else if(stateUsed->lifeData.ascent_rate_meter_per_min > 1) /* a value < 1 would cause a bar in negative direction brush rectangle of 12 and step width of 6 */
2784 { 2784 {
4724 } 4724 }
4725 else 4725 else
4726 { 4726 {
4727 if(slowExitState != SE_END) 4727 if(slowExitState != SE_END)
4728 { 4728 {
4729 if(slowExitState == SE_INIT) 4729 if((slowExitState == SE_INIT) && (stateUsed->lifeData.dive_time_seconds > 900)) /* min 15min divetime */
4730 { 4730 {
4731 slowExitState = SE_ACTIVE; 4731 slowExitState = SE_ACTIVE;
4732 exitSecTick = HAL_GetTick(); 4732 exitSecTick = HAL_GetTick();
4733 } 4733 }
4734 if(time_elapsed_ms(exitSecTick, HAL_GetTick()) > 1000) 4734 else if(slowExitState == SE_ACTIVE)
4735 { 4735 {
4736 exitSecTick = HAL_GetTick(); 4736 if(time_elapsed_ms(exitSecTick, HAL_GetTick()) > 1000)
4737
4738 /* select depth digit color */
4739 if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) < 0.5 )
4740 { 4737 {
4741 color = CLUT_NiceGreen; 4738 exitSecTick = HAL_GetTick();
4739
4740 /* select depth digit color */
4741 if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) < 0.5 )
4742 {
4743 color = CLUT_NiceGreen;
4744 }
4745 else if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.5)
4746 {
4747 color = CLUT_WarningYellow;
4748 }
4749 else if(stateUsed->lifeData.depth_meter - exitDepthMeter < -1.5 )
4750 {
4751 color = CLUT_WarningRed;
4752 }
4753 else
4754 {
4755 color = 0;
4756 }
4757
4758 if((fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.6 ) /* only decrease counter if diver is close to target depth */
4759 || (color == CLUT_WarningRed)) /* or if diver is far ahead */
4760 {
4761 countDownSec--;
4762 if(countDownSec == 0)
4763 {
4764 slowExitState = SE_END;
4765 color = 0;
4766 }
4767 exitDepthMeter -= (pSettings->last_stop_depth_meter / (float)(pSettings->slowExitTime * 60));
4768 }
4742 } 4769 }
4743 else if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.5) 4770 if(!pSettings->FlipDisplay)
4744 { 4771 {
4745 color = CLUT_WarningYellow; 4772 start.y = t7l1.WindowY0 - 1;
4746 }
4747 else if(stateUsed->lifeData.depth_meter - exitDepthMeter < -1.5 )
4748 {
4749 color = CLUT_WarningRed;
4750 } 4773 }
4751 else 4774 else
4752 { 4775 {
4753 color = 0; 4776 start.y = t7l3.WindowY0 - 25;
4754 } 4777 }
4755 4778
4756 if((fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.6 ) /* only decrease counter if diver is close to target depth */ 4779 for(index = 0; index < pSettings->last_stop_depth_meter; index++) /* draw meter indicators */
4757 || (color == CLUT_WarningRed)) /* or if diver is far ahead */
4758 { 4780 {
4759 countDownSec--; 4781 start.y += drawingMeterStep;
4760 if(countDownSec == 0) 4782 stop.y = start.y;
4761 { 4783 start.x = CUSTOMBOX_LINE_LEFT - 1;
4762 slowExitState = SE_END; 4784 stop.x = start.x - 40;
4763 color = 0; 4785 GFX_draw_line(&t7screen, start, stop, 0);
4764 }
4765 exitDepthMeter -= (pSettings->last_stop_depth_meter / (float)(pSettings->slowExitTime * 60));
4766 } 4786 }
4787
4788 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 20;
4789 stop.x = start.x;
4790 if(!pSettings->FlipDisplay)
4791 {
4792 start.y = t7l1.WindowY0 + ASCENT_GRAPH_YPIXEL;
4793 }
4794 else
4795 {
4796 start.y = t7l3.WindowY0 - 25;
4797 }
4798 stop.y = start.y - countDownSec * (ASCENT_GRAPH_YPIXEL / (float)(pSettings->slowExitTime * 60.0));
4799 if(stop.y >= 470)
4800 stop.y = 470;
4801
4802 GFX_draw_thick_line(15,&t7screen, start, stop, 3);
4803 /* mark diver depth */
4804 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 25;
4805 stop.x = start.x + 15;
4806
4807 start.y = start.y - (stateUsed->lifeData.depth_meter *120 / pSettings->last_stop_depth_meter);
4808 stop.y = start.y;
4809 GFX_draw_thick_line(10,&t7screen, start, stop, 9);
4767 } 4810 }
4768 if(!pSettings->FlipDisplay)
4769 {
4770 start.y = t7l1.WindowY0 - 1;
4771 }
4772 else
4773 {
4774 start.y = t7l3.WindowY0 - 25;
4775 }
4776
4777 for(index = 0; index < pSettings->last_stop_depth_meter; index++) /* draw meter indicators */
4778 {
4779 start.y += drawingMeterStep;
4780 stop.y = start.y;
4781 start.x = CUSTOMBOX_LINE_LEFT - 1;
4782 stop.x = start.x - 40;
4783 GFX_draw_line(&t7screen, start, stop, 0);
4784 }
4785
4786 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 20;
4787 stop.x = start.x;
4788 if(!pSettings->FlipDisplay)
4789 {
4790 start.y = t7l1.WindowY0 + ASCENT_GRAPH_YPIXEL;
4791 }
4792 else
4793 {
4794 start.y = t7l3.WindowY0 - 25;
4795 }
4796 stop.y = start.y - countDownSec * (ASCENT_GRAPH_YPIXEL / (float)(pSettings->slowExitTime * 60.0));
4797 if(stop.y >= 470)
4798 stop.y = 470;
4799
4800 GFX_draw_thick_line(15,&t7screen, start, stop, 3);
4801 /* mark diver depth */
4802 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 25;
4803 stop.x = start.x + 15;
4804
4805 start.y = start.y - (stateUsed->lifeData.depth_meter *120 / pSettings->last_stop_depth_meter);
4806 stop.y = start.y;
4807 GFX_draw_thick_line(10,&t7screen, start, stop, 9);
4808 //GFX_draw_line(&t7screen, start, stop, 2);
4809 } 4811 }
4810 } 4812 }
4811 return color; 4813 return color;
4812 } 4814 }
4813 void t7_tick(void) 4815 void t7_tick(void)