Mercurial > public > hwos_code
view src/divemode.inc @ 622:02d1386429a6
0x60 added for (future) option to change logbook offset via PC/Bluetooth
author | heinrichsweikamp |
---|---|
date | Wed, 10 Apr 2019 10:51:07 +0200 |
parents | 7b3903536213 |
children | c40025d8e750 |
line wrap: on
line source
;============================================================================= ; ; File divemode.inc REFACTORED VERSION V2.99f ; ; ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. ;============================================================================= ; HISTORY ; 2011-08-15 : [mH] moving from OSTC code extern set_dive_modes extern diveloop extern apnoe_calc_maxdepth extern calc_deko_divemode_sensor ; Divemode layout: ; row =0...239 ; column =0...159 (x2) ; Divemode has multiple layouts but basicly splits the screen into 3 rows: ; - upper content row: depth, max depth, dive time, etc. ; - custom content view with selectable views ; - bottom content: temp, gas, ndl, tts, etc. ; I. The upper content row (0-99) ; The top row can be divided 2 areas: ; - header : has the titles (mask) ; - content: has the values ;******* Upper content / header row ******* #DEFINE dm_mask_depth_row .0 #DEFINE dm_mask_depth_column .12 #DEFINE dm_mask_maxdepth_row .0 #DEFINE dm_mask_maxdepth_column .73 #DEFINE dm_mask_maxdepth_column_nvsi .63 #DEFINE dm_mask_divetime_row .0 #DEFINE dm_mask_divetime_column .115 ; The content row contains 3 columns: ; - depth and ascend rate warning ; - max depth and warning messages ; - dive time, apnea dive times and warning icon ; DIVEMODE_OFFSET=position below the title row ;******* Upper content / content row / 1st col ******* ; GLOBAL #DEFINE dm_offset .14 ; 14 ; Depth #DEFINE dm_depth_row dm_offset ; TOP - 14 - start position of the depth numbers #DEFINE dm_depth_column .0 ; LEFT - 0 #DEFINE dm_depth_bot dm_depth_row+.61 ; 75 #DEFINE dm_depth_rgt dm_depth_column+.59 ; 59 #DEFINE dm_depth_dm_row dm_depth_row+.25 ; 39 - if metric and d<100, decimeter shown as: ".5" #DEFINE dm_depth_dm_column dm_depth_column+.40 ; 40 - bottom aligned so it has its own position (2nd content line only) ; Ascend rate #DEFINE dm_velocity_text_row dm_depth_row+.62 ; 76 #DEFINE dm_velocity_text_column dm_depth_column ; 0 #DEFINE dm_velocity_text_bot dm_velocity_text_row+.23 ; 99 #DEFINE dm_velocity_text_rgt dm_depth_rgt ; 61 ; Ascend/Descend bar #DEFINE dm_velobar_top dm_offset ; 14 #DEFINE dm_velobar_lft dm_depth_rgt+.1 ; 62 #DEFINE dm_velobar_bot dm_offset+.70 ; 84 #DEFINE dm_velobar_rgt .73 ; 73 #DEFINE dm_velobar_width .12 ;******* Upper content / content row / 2nd col ******* #DEFINE dm_upcnt_2ndcol .74 ; 74 #DEFINE dm_upcnt_2ndcol_nvsi .64 ; 64 ; Max depth #DEFINE dm_max_depth_row dm_offset ; 14 #DEFINE dm_max_depth_column dm_upcnt_2ndcol ; 74 #DEFINE dm_max_depth_column_nvsi dm_upcnt_2ndcol_nvsi ; 64 #DEFINE dm_max_depth_bot dm_max_depth_row+.34 ; 48 #DEFINE dm_max_depth_rgt dm_max_depth_column+.36 ; 100 #DEFINE dm_max_depth_dm_row dm_max_depth_row+.11 ; 25 #DEFINE dm_max_depth_dm_column dm_max_depth_column+.23 ; 87 #DEFINE dm_max_depth_dm_column_nvsi dm_max_depth_column_nvsi+.23 ; 77 #DEFINE dm_max_alt_column .0 ; 0 #DEFINE dm_max_alt_row .170 ; 170 #DEFINE dm_max_dm_alt_column dm_max_alt_column+.60 ; 60 ; Warning area (combined) #DEFINE dm_warning_row dm_offset+.36 ; 50 #DEFINE dm_warning_column dm_upcnt_2ndcol ; 74 #DEFINE dm_warning_bot dm_warning_row+.49 ; 99 #DEFINE dm_warning_rgt dm_warning_column+.62 ; 136 #DEFINE dm_warning_length .9 ; total string length ; Warning row #1 #DEFINE dm_warning1_row dm_warning_row ; 50 #DEFINE dm_warning1_column dm_warning_column ; 64 #DEFINE dm_warning1_bot dm_warning1_row+.23 ; 73 #DEFINE dm_warning1_rgt dm_warning_rgt ; 136 ; Warning row #2 #DEFINE dm_warning2_row dm_warning_row+.24 ; 74 #DEFINE dm_warning2_column dm_warning_column ; 64 #DEFINE dm_warning2_bot dm_warning2_row+.23 ; 97 #DEFINE dm_warning2_rgt dm_warning_rgt ; 136 ;******* Upper content / content row / 3rd col ******* ; Dive time #DEFINE dm_divetime_row dm_offset ; 14 #DEFINE dm_divetime_column .115 ; 115 #DEFINE dm_divetime_minsonly_column .111 ; 111 #DEFINE dm_divetime_bot dm_divetime_row+.34 ; 48 #DEFINE dm_divetime_rgt .159 ; 159 #DEFINE dm_divetime_secs_row dm_divetime_row+.11 ; 25 #DEFINE dm_divetime_secs_column dm_divetime_column+.24 ; 139 #DEFINE dm_divetime_alt_row dm_offset ; 14 #DEFINE dm_divetime_alt_column .68 ; 68 ; Warning icon #DEFINE dm_warning_icon_row dm_offset+.41 ; 55 #DEFINE dm_warning_icon_column .137 ; 137 #DEFINE dm_warning_icon_bot dm_warning_icon_row+.38 ; 93 #DEFINE dm_warning_icon_rgt dm_warning_icon_column+.21 ; 156 ; Apnea dive time #DEFINE dm_divetime_apnoe_row dm_offset ; 14 #DEFINE dm_divetime_apnoe_column .103 ; 103 #DEFINE dm_divetime_apnoe_secs_row dm_divetime_apnoe_row+.11 ; 25 #DEFINE dm_divetime_apnoe_secs_column dm_divetime_apnoe_column+.36 ; 139 ; Apnea total time #DEFINE dm_apnoe_total_divetime_row dm_divetime_apnoe_row+.50 ; 64 #DEFINE dm_apnoe_total_divetime_column dm_divetime_apnoe_column ; 103 #DEFINE dm_apnoe_total_divetime_secs_row dm_apnoe_total_divetime_row+.11 ; 75 #DEFINE dm_apnoe_total_divetime_secs_col dm_divetime_apnoe_column+.36 ; 139 #DEFINE dm_total_apnoe_text_row dm_apnoe_total_divetime_row-.11 ; 53 #DEFINE dm_total_apnoe_text_column .132 ; 132 ; I. End of the upper content row. (0-99) ; 1px space between the 1st and 2nd content rows #DEFINE dm_sep_1_2_row dm_offset+.86 ; 100 ; II. Custom/selectable content row ; The custom view display area is: 101,163,0,159 (t,b,l,r), or 0,101->159,163 ;******* Custom View: Global ******* #DEFINE dm_customview_row dm_offset+.87 ; 101 #DEFINE dm_customview_column .0 ; 0 #DEFINE dm_customview_bot dm_customview_row+.62 ; 163 #DEFINE dm_customview_rgt .159 ; 159 ;******* Custom View: Avg depth, stopwatch and avg depth ******* #DEFINE dm_custom_avr_stop_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_avr_stop_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_avr_stop_column1 .0 ; 0 #DEFINE dm_custom_avr_stop_column2 .54 ; 54 #DEFINE dm_custom_avr_stop_column3 .118 ; 118 ;******* Custom View: Decompressions stops ******* ; Title #DEFINE dm_custom_decoplan_title_row dm_customview_row ; 101 #DEFINE dm_custom_decoplan_title_column .65 ; 65 ; 1st col #DEFINE dm_cust_dstop_2nd_stop_row dm_customview_row+.14 ; 115 #DEFINE dm_cust_dstop_2nd_stop_column .0 ; 0 #DEFINE dm_cust_dstop_3rd_stop_row dm_customview_row+.37 ; 138 #DEFINE dm_cust_dstop_3rd_stop_column dm_cust_dstop_2nd_stop_column ; 0 ; 2nd col #DEFINE dm_cust_dstop_4th_stop_row dm_cust_dstop_2nd_stop_row ; 115 #DEFINE dm_cust_dstop_4th_stop_column .56 ; 56 #DEFINE dm_cust_dstop_5th_stop_row dm_cust_dstop_3rd_stop_row ; 138 #DEFINE dm_cust_dstop_5th_stop_column dm_cust_dstop_4th_stop_column ; 56 ; 3rd col #DEFINE dm_cust_dstop_6th_stop_row dm_cust_dstop_2nd_stop_row ; 115 #DEFINE dm_cust_dstop_6th_stop_column .111 ; 111 #DEFINE dm_cust_dstop_7th_stop_row dm_cust_dstop_3rd_stop_row ; 138 #DEFINE dm_cust_dstop_7th_stop_column dm_cust_dstop_6th_stop_column ; 111 ;******* Custom View: Time, Battery, Surface Pressure ******* ; Clock #DEFINE dm_custom_clock_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_clock_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_clock_column .0 ; 0 ; Battery #DEFINE dm_custom_battery_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_battery_volt_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_battery_percent_row dm_custom_ead_row+.23 ; 140 #DEFINE dm_custom_battery_column .62 ; 62 ; Surface Pressure #DEFINE dm_custom_surfpres_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_surfpres_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_surfpres_column .95 ; 95 ;****** Custom View: ppO2, EAD/ENDS and CNS ******* ; ppO2 #DEFINE dm_custom_ppo2_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_ppo2_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_ppo2_column .2 ; 2 ; EAD/END #DEFINE dm_custom_eadend_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_ead_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_ead_column .50 ; 50 #DEFINE dm_custom_end_row dm_custom_ead_row+.23 ; 140 #DEFINE dm_custom_end_column dm_custom_ead_column ; 50 ; CNS #DEFINE dm_custom_cns_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_cns_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_cns_column .115 ; 115 ;****** Custom View: tripple CNS ******* #DEFINE dm_custom_cns3_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_cns3_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_cns3_column1 .8 ; 8 #DEFINE dm_custom_cns3_column2 .62 ; 62 #DEFINE dm_custom_cns3_column3 .115 ; 115 ;****** Custom View: Ceiling, Tissues, (current GF) ; Ceiling #DEFINE dm_custom_ceiling_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_ceiling_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_ceiling_column .62 ; 62 ; Tissue title #DEFINE dm_custom_tissue_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_tissue_title_column .120 ; 120 ; N2 / He values #DEFINE dm_custom_tissue_N2_row dm_custom_ead_row+.5 ; 122 #DEFINE dm_custom_tissue_N2_column .105 ; 105 #DEFINE dm_custom_tissue_He_row dm_custom_end_row+.5 ; 145 #DEFINE dm_custom_tissue_He_column dm_custom_tissue_N2_column ; 105 ; Tissue diagram #DEFINE dm_custom_tissue_diagram_top dm_customview_row+.16 ; 117 #DEFINE dm_custom_tissue_diagram_bottom dm_custom_tissue_diagram_top+.43; 160 #DEFINE dm_custom_tissue_diagram_left .116 ; 116 #DEFINE dm_custom_tissue_diagram_frame_spacing .8 ; 8 ;******* Custom View: GF-lo/hi, aGF-lo/hi, current GF value ******* ; Title #DEFINE dm_custom_gf_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_gf_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_gf_column1 .0 ; 0 #DEFINE dm_custom_gf_column2 .65 ; 65 #DEFINE dm_custom_gf_column3 .95 ; 95 ;******* Custom View: Compass ******* ; Title #DEFINE dm_custom_compass_mask_row dm_customview_row ; 101 #DEFINE dm_custom_compass_mask_column .65 ; 65 ; Head and arrows #DEFINE dm_custom_compass_head_row dm_customview_row+.39 ; 140 #DEFINE dm_custom_compass_head_column .62 ; 62 #DEFINE dm_custom_compass_ldir_column .5 ; 5 #DEFINE dm_custom_compass_rdir_column .140 ; 140 ; Ruler #DEFINE dm_custom_compass_graph_row dm_customview_row ; 101 #DEFINE dm_custom_compass_graph_height .33 ; 33 #DEFINE dm_custom_compass_tick_height .3 ; 3 #DEFINE dm_custom_compass_tick_top_top dm_custom_compass_graph_row+.1 ; 102 #DEFINE dm_custom_compass_tick_top_bot dm_custom_compass_graph_row+.4 ; 105 #DEFINE dm_custom_compass_label_row dm_custom_compass_graph_row+.6 ; 107 #DEFINE dm_custom_compass_label_height .24 ; 24 #DEFINE dm_custom_compass_tick_bot_top dm_custom_compass_graph_row+.30 ; 131 #DEFINE dm_custom_compass_tick_bot_bot dm_custom_compass_graph_row+.33 ; 134 ;******* Custom View: O2 Sensor Values ******* #DEFINE dm_custom_hud_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_hud_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_hud_sensor1_column .6 ; 6 #DEFINE dm_custom_hud_sensor2_column .62 ; 62 #DEFINE dm_custom_hud_sensor3_column .118 ; 118 ;******* Custom View: Gas Needs ******* #DEFINE dm_custom_gas_mask_row dm_customview_row ; 101 #DEFINE dm_custom_gas_row1 dm_customview_row+.14 ; 115 #DEFINE dm_custom_gas_row2 dm_customview_row+.37 ; 138 #DEFINE dm_custom_gas_column_title .29 ; 29 #DEFINE dm_custom_gas_column1 .5 ; 5 #DEFINE dm_custom_gas_column2 .85 ; 85 ; ******* Custom View: Tank Pressures ******* #DEFINE dm_custom_tankdata_mask_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_tankdata_row dm_customview_row+.16 ; 117 #DEFINE dm_custom_tankdata_pres1_col .2 ; 2 #DEFINE dm_custom_tankdata_pres2_col .115 ; 115 #DEFINE dm_custom_tankdata_SAC_col .56 ; 56 ;******* Custom View: Sensor Check ******* #DEFINE dm_custom_s_check_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_s_check_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_s_check_title_column .50 ; 50 #DEFINE dm_custom_ppO2_column .115 ; 115 #DEFINE dm_custom_ppDil_column .2 ; 2 ;******* Custom View: PSCR Info ******* #DEFINE dm_custom_pscr_title_row dm_customview_row+.1 ; 102 #DEFINE dm_custom_pscr_row dm_customview_row+.18 ; 119 #DEFINE dm_custom_pscr_drop_column .55 ; 55 #DEFINE dm_custom_pscr_ratio_column .105 ; 105 ; II. End of the custom content row (101-163) ; 1px space between the 2nd and 3rd content rows #DEFINE dm_sep_2_3_row dm_offset+.150 ; 164 ; III. The 3rd content row contains temperature, active gas, NDL/TTS time, ; simulator menu, active/dil gas, decostop, Apnea surface time and max depth ; The content row contains 2 columns: ; - temperature, gas names ; - NDL/TTS, DecoStop #DEFINE dm_3rdrow_top dm_offset+.151 ; 165 #DEFINE dm_3rdrow_bot .239 ; 239 #DEFINE dm_3rdrow_lft .0 ; 0 #DEFINE dm_3rdrow_rgt .159 ; 159 ;******* Bottom content / 1st col ******* ; Temperature #DEFINE dm_temp_row dm_3rdrow_top-.4 ; 161 #DEFINE dm_temp_column .0 ; 0 ; Simulation text #DEFINE dm_simtext_row dm_3rdrow_top+.18 ; 183 #DEFINE dm_simtext_column .36 ; 35 ; Diluent gas #DEFINE dm_active_dil_row dm_3rdrow_top+.19 ; 185 #DEFINE dm_active_dil_column .0 ; 0 ; active gas for OC, blinking better gas, setpoint or bailout for CCR #DEFINE dm_active_gas_row .208 ; 208 #DEFINE dm_active_gas_column .0 ; 0 ;******* Bottom content / 2nd col ******* ; Next deco stop for TTS #DEFINE dm_decostop_1st_stop_row dm_3rdrow_top ; 165 #DEFINE dm_decostop_1st_stop_column .82 ; 82 ; Safety Stop #DEFINE dm_safetystop_row dm_3rdrow_top ; 165 #DEFINE dm_safetystop_column .118 ; 118 #DEFINE dm_safetystop_bot dm_safetystop_row+.31 ; 196 #DEFINE dm_safetystop_text_row dm_safetystop_row+.1 ; 166 #DEFINE dm_safetystop_text_column .80 ; 80 for the 4 chars "Stop" ; TTS #DEFINE dm_tts_value_row dm_3rdrow_top+.32; ; 197 #DEFINE dm_tts_value_column .118 ; 118 #DEFINE dm_tts_text_row dm_tts_value_row+.5 ; 202 #DEFINE dm_tts_text_column .85 ; 85 ; NDL - the same position as TTS #DEFINE dm_ndl_value_row dm_tts_value_row ; 197 #DEFINE dm_ndl_value_column dm_tts_value_column ; 118 #DEFINE dm_ndl_text_row dm_tts_text_row ; 202 #DEFINE dm_ndl_text_column dm_tts_text_column ; 85 ; FTTS (only modded screen) #DEFINE dm_ftts_value_row dm_3rdrow_top+.64 ; 215 #DEFINE dm_ftts_value_column .97 ; 97 ; Grid line (only modded screen) #DEFINE dm_gassep_row dm_sep_2_3_row ; 164 #DEFINE dm_gassep_bot .239 ; 239 #DEFINE dm_gassep_column .78 ; 78 ;******* Bottom content / Apnea mode *******; #DEFINE dm_apnoe_surface_time_text_row .192 ; 192 #DEFINE dm_apnoe_surface_time_text_col .30 ; 30 #DEFINE dm_apnoe_surface_time_row .207 ; 207 #DEFINE dm_apnoe_surface_time_column .15 ; 15 #DEFINE dm_apnoe_last_max_depth_text_row .192 ; 192 #DEFINE dm_apnoe_last_max_depth_text_col .100 ; 100 #DEFINE dm_apnoe_last_max_depth_row .207 ; 207 #DEFINE dm_apnoe_last_max_depth_column .100 ; 100 ; IV. The last set of parameters is for the menus displayed in dive mode ; Divemode menu #DEFINE dm_menu_row .164 ; 164 upper row, the frame's top line is the separator #DEFINE dm_menu_lower .239 ; 239 lower border #DEFINE dm_menu_left .0 ; 0 left #DEFINE dm_menu_right .159 ; 159 right #DEFINE dm_menu_item1_row dm_menu_row+.1 ; 165 #DEFINE dm_menu_item1_column .9 ; 9 #DEFINE dm_menu_item2_row dm_menu_item1_row+.24 ; 189 #DEFINE dm_menu_item2_column dm_menu_item1_column ; 9 #DEFINE dm_menu_item3_row dm_menu_item2_row+.24 ; 213 #DEFINE dm_menu_item3_column dm_menu_item1_column ; 9 #DEFINE dm_menu_item4_row dm_menu_row+.1 ; 165 #DEFINE dm_menu_item4_column .89 ; 89 #DEFINE dm_menu_item5_row dm_menu_item4_row+.24 ; 189 #DEFINE dm_menu_item5_column dm_menu_item4_column ; 89 #DEFINE dm_menu_item6_row dm_menu_item5_row+.24 ; 213 #DEFINE dm_menu_item6_column dm_menu_item4_column ; 89