Mercurial > public > ostc4
comparison Discovery/Src/tMenuEditCustom.c @ 604:fb5bb04ad914
Merged menu items of viewport and motion control:
viewport and motion control are depending on each other and were listed at the to level of custom view tab. Because motion control is just a one line item it has been moved into the viewport page. As result there is one free line for future custom view options available again.
| author | Ideenmodellierer |
|---|---|
| date | Wed, 06 Jan 2021 21:01:00 +0100 |
| parents | a48a1cd983af |
| children | 028d8f3a9410 |
comparison
equal
deleted
inserted
replaced
| 603:c56ed16dbd39 | 604:fb5bb04ad914 |
|---|---|
| 41 #include "tMenu.h" | 41 #include "tMenu.h" |
| 42 #include "tMenuSystem.h" | 42 #include "tMenuSystem.h" |
| 43 #include <math.h> | 43 #include <math.h> |
| 44 | 44 |
| 45 | 45 |
| 46 #define CV_PER_PAGE (5u) /* number of cv selections shown at one page */ | 46 #define CV_PER_PAGE (5u) /* number of cv selections shown at one page */ |
| 47 #define CV_SUBPAGE_MAX (2u) /* max number of customer view selection pages */ | 47 #define CV_SUBPAGE_MAX (2u) /* max number of customer view selection pages */ |
| 48 #define MAX_BACKLIGHT_BOOST (2u) /* max number of backlight levels which may be increased during focus state */ | |
| 48 | 49 |
| 49 static uint8_t customviewsSubpage = 0; | 50 static uint8_t customviewsSubpage = 0; |
| 50 static uint8_t customviewsSubpageMax = 0; /* number of pages needed to display all selectable views */ | 51 static uint8_t customviewsSubpageMax = 0; /* number of pages needed to display all selectable views */ |
| 51 static const uint8_t* pcv_curchangelist; | 52 static const uint8_t* pcv_curchangelist; |
| 52 /* Private function prototypes -----------------------------------------------*/ | 53 /* Private function prototypes -----------------------------------------------*/ |
| 63 uint8_t OnAction_CornerTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 64 uint8_t OnAction_CornerTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 64 uint8_t OnAction_CornerStandard(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 65 uint8_t OnAction_CornerStandard(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 65 uint8_t OnAction_CViewPortCalib(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 66 uint8_t OnAction_CViewPortCalib(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 66 uint8_t OnAction_CViewPortLayout(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 67 uint8_t OnAction_CViewPortLayout(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 67 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 68 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 69 uint8_t OnAction_CViewPortControl(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 68 /* Exported functions --------------------------------------------------------*/ | 70 /* Exported functions --------------------------------------------------------*/ |
| 69 | 71 |
| 70 | 72 |
| 71 | 73 |
| 72 | 74 |
| 185 point_t upperright = {799,479}; | 187 point_t upperright = {799,479}; |
| 186 float localLimit = 0.1; | 188 float localLimit = 0.1; |
| 187 | 189 |
| 188 text[0] = '\001'; | 190 text[0] = '\001'; |
| 189 text[1] = TXT_2BYTE; | 191 text[1] = TXT_2BYTE; |
| 190 text[2] = TXT2BYTE_CalibView; | 192 text[2] = TXT2BYTE_MotionCtrl; |
| 191 text[3] = 0; | 193 text[3] = 0; |
| 192 write_topline(text); | 194 write_topline(text); |
| 193 | 195 |
| 194 text[0] = TXT_2BYTE; | 196 text[0] = TXT_2BYTE; |
| 195 text[1] = TXT2BYTE_CalibView; | 197 text[1] = TXT2BYTE_CalibView; |
| 196 text[2] = 0; | 198 text[2] = 0; |
| 197 write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); | 199 write_label_var( 30, 700, ME_Y_LINE2, &FontT48, text); |
| 198 | 200 |
| 199 textIndex = 0; | 201 textIndex = 0; |
| 200 text[textIndex++] = TXT_2BYTE; | 202 text[textIndex++] = TXT_2BYTE; |
| 201 text[textIndex++] = TXT2BYTE_IndicateFrame; | 203 text[textIndex++] = TXT2BYTE_IndicateFrame; |
| 202 text[textIndex++] = ' '; | 204 text[textIndex++] = ' '; |
| 203 text[textIndex++] = '\006' - (settingsGetPointer()->viewPortMode >> 4); | 205 text[textIndex++] = '\006' - (settingsGetPointer()->viewPortMode >> 4); |
| 204 text[textIndex++] = 0; | 206 text[textIndex++] = 0; |
| 205 write_label_var( 30, 700, ME_Y_LINE5, &FontT48, text); | 207 write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); |
| 206 textIndex = 0; | 208 textIndex = 0; |
| 207 text[textIndex++] = TXT_2BYTE; | 209 text[textIndex++] = TXT_2BYTE; |
| 208 text[textIndex++] = TXT2BYTE_BoostBacklight; | 210 text[textIndex++] = TXT2BYTE_BoostBacklight; |
| 209 text[textIndex++] = ' '; | 211 text[textIndex++] = ' '; |
| 210 snprintf(&text[textIndex],32," %d",(settingsGetPointer()->viewPortMode & 0x3)); | 212 snprintf(&text[textIndex],32," %d",(settingsGetPointer()->viewPortMode & 0x3)); |
| 211 write_label_var( 30, 700, ME_Y_LINE6, &FontT48, text); | 213 write_label_var( 30, 700, ME_Y_LINE4, &FontT48, text); |
| 212 | 214 |
| 213 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | 215 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 214 | 216 |
| 215 /* test if we are in focus */ | 217 /* test if we are in focus */ |
| 216 if((pSettings->viewPitch != 0.0) || (pSettings->viewRoll != 0.0) || (pSettings->viewYaw != 0.0)) | 218 if((pSettings->viewPitch != 0.0) || (pSettings->viewRoll != 0.0) || (pSettings->viewYaw != 0.0)) |
| 217 { | 219 { |
| 218 distance = checkViewport(stateUsed->lifeData.compass_roll, stateUsed->lifeData.compass_pitch, stateUsed->lifeData.compass_heading); | 220 distance = checkViewport(stateUsed->lifeData.compass_roll, stateUsed->lifeData.compass_pitch, stateUsed->lifeData.compass_heading); |
| 219 | |
| 220 if(pSettings->showDebugInfo) | |
| 221 { | |
| 222 snprintf(text,32,"\001%03.3f",distance); | |
| 223 write_label_var( 30, 700, ME_Y_LINE2, &FontT48, text); | |
| 224 } | |
| 225 | |
| 226 | 221 |
| 227 /* show "bar graph" indicating the distance to the center point */ | 222 /* show "bar graph" indicating the distance to the center point */ |
| 228 textIndex = 0; | 223 textIndex = 0; |
| 229 text[textIndex++] = '\001'; | 224 text[textIndex++] = '\001'; |
| 230 | 225 |
| 247 } | 242 } |
| 248 } | 243 } |
| 249 text[textIndex] = 0; | 244 text[textIndex] = 0; |
| 250 write_label_var( 30, 700, ME_Y_LINE1, &FontT48, text); | 245 write_label_var( 30, 700, ME_Y_LINE1, &FontT48, text); |
| 251 | 246 |
| 247 /* MotionCtrl */ | |
| 248 textIndex = 0; | |
| 249 | |
| 250 text[textIndex++] = TXT_2BYTE; | |
| 251 text[textIndex++] = TXT2BYTE_MotionCtrl; | |
| 252 text[textIndex++] = ' '; | |
| 253 text[textIndex++] = ' '; | |
| 254 text[textIndex++] = TXT_2BYTE; | |
| 255 switch(settingsGetPointer()->MotionDetection) | |
| 256 { | |
| 257 case MOTION_DETECT_OFF: | |
| 258 text[textIndex++] = TXT2BYTE_MoCtrlNone; | |
| 259 break; | |
| 260 case MOTION_DETECT_MOVE: | |
| 261 text[textIndex++] = TXT2BYTE_MoCtrlPitch; | |
| 262 break; | |
| 263 case MOTION_DETECT_SECTOR: | |
| 264 text[textIndex++] = TXT2BYTE_MoCtrlSector; | |
| 265 break; | |
| 266 case MOTION_DETECT_SCROLL: | |
| 267 text[textIndex++] = TXT2BYTE_MoCtrlScroll; | |
| 268 break; | |
| 269 default: | |
| 270 snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection); | |
| 271 textIndex++; | |
| 272 break; | |
| 273 } | |
| 274 text[textIndex] = 0; | |
| 275 write_label_var( 30, 700, ME_Y_LINE6, &FontT48, text); | |
| 276 | |
| 252 if(distance < 0.5) | 277 if(distance < 0.5) |
| 253 { | 278 { |
| 254 set_Backlight_Boost(settingsGetPointer()->viewPortMode & 0x03); | 279 set_Backlight_Boost(settingsGetPointer()->viewPortMode & 0x03); |
| 255 if(pSettings->viewPortMode >> 4) | 280 if(pSettings->viewPortMode >> 4) |
| 256 { | 281 { |
| 267 GFX_draw_box(pdrawScreen,lowerleft,upperright,0,CLUT_MenuTopBackground); | 292 GFX_draw_box(pdrawScreen,lowerleft,upperright,0,CLUT_MenuTopBackground); |
| 268 } | 293 } |
| 269 } | 294 } |
| 270 resetFocusState(); /* no other instance shall be impacted by the local detection */ | 295 resetFocusState(); /* no other instance shall be impacted by the local detection */ |
| 271 } | 296 } |
| 272 | |
| 273 } | 297 } |
| 274 | 298 |
| 275 void openEdit_Custom(uint8_t line) | 299 void openEdit_Custom(uint8_t line) |
| 276 { | 300 { |
| 277 set_globalState_Menu_Line(line); | 301 set_globalState_Menu_Line(line); |
| 286 break; | 310 break; |
| 287 case 3: openEdit_CustomviewDivemode(cv_changelist); | 311 case 3: openEdit_CustomviewDivemode(cv_changelist); |
| 288 break; | 312 break; |
| 289 case 4: openEdit_CustomviewDivemode(cv_changelist_BS); | 313 case 4: openEdit_CustomviewDivemode(cv_changelist_BS); |
| 290 break; | 314 break; |
| 291 case 5: openEdit_MotionCtrl(); | 315 case 5: openEdit_ViewPort(); |
| 292 break; | 316 break; |
| 293 case 6: openEdit_ViewPort(); | |
| 294 break; | |
| 295 } | 317 } |
| 296 } | 318 } |
| 297 | 319 |
| 298 /* Private functions ---------------------------------------------------------*/ | 320 /* Private functions ---------------------------------------------------------*/ |
| 299 void openEdit_Customview(void) | 321 void openEdit_Customview(void) |
| 367 | 389 |
| 368 void openEdit_ViewPort(void) | 390 void openEdit_ViewPort(void) |
| 369 { | 391 { |
| 370 refresh_ViewPort(); | 392 refresh_ViewPort(); |
| 371 | 393 |
| 372 write_field_button(StMCustom6_CViewPortCalib, 400, 700, ME_Y_LINE3, &FontT48, ""); | 394 write_field_button(StMCustom5_CViewPortCalib, 400, 700, ME_Y_LINE2, &FontT48, ""); |
| 373 write_field_button(StMCustom6_CViewPortLayout, 400, 700, ME_Y_LINE5, &FontT48, ""); | 395 write_field_button(StMCustom5_CViewPortLayout, 400, 700, ME_Y_LINE3, &FontT48, ""); |
| 374 write_field_button(StMCustom6_CViewPortAmbient, 400, 700, ME_Y_LINE6, &FontT48, ""); | 396 write_field_button(StMCustom5_CViewPortAmbient, 400, 700, ME_Y_LINE4, &FontT48, ""); |
| 375 | 397 write_field_button(StMCustom5_CViewPortControl, 400, 700, ME_Y_LINE6, &FontT48, ""); |
| 376 setEvent(StMCustom6_CViewPortCalib, (uint32_t)OnAction_CViewPortCalib); | 398 |
| 377 setEvent(StMCustom6_CViewPortLayout, (uint32_t)OnAction_CViewPortLayout); | 399 |
| 378 setEvent(StMCustom6_CViewPortAmbient, (uint32_t)OnAction_CViewPortAmbient); | 400 setEvent(StMCustom5_CViewPortCalib, (uint32_t)OnAction_CViewPortCalib); |
| 401 setEvent(StMCustom5_CViewPortLayout, (uint32_t)OnAction_CViewPortLayout); | |
| 402 setEvent(StMCustom5_CViewPortAmbient, (uint32_t)OnAction_CViewPortAmbient); | |
| 403 setEvent(StMCustom5_CViewPortControl, (uint32_t)OnAction_CViewPortControl); | |
| 379 } | 404 } |
| 380 | 405 |
| 381 | 406 |
| 382 char customview_TXT2BYTE_helper(uint8_t customViewId) | 407 char customview_TXT2BYTE_helper(uint8_t customViewId) |
| 383 { | 408 { |
| 668 return UPDATE_DIVESETTINGS; | 693 return UPDATE_DIVESETTINGS; |
| 669 } | 694 } |
| 670 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 695 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 671 { | 696 { |
| 672 SSettings* pSettings = settingsGetPointer(); | 697 SSettings* pSettings = settingsGetPointer(); |
| 673 pSettings->viewPortMode = (pSettings->viewPortMode + 1) & 0xF3; | 698 if(((pSettings->viewPortMode +1) & 0x03) <= MAX_BACKLIGHT_BOOST) |
| 699 { | |
| 700 pSettings->viewPortMode++; | |
| 701 } | |
| 702 else | |
| 703 { | |
| 704 pSettings->viewPortMode &= 0xFC; | |
| 705 } | |
| 674 | 706 |
| 675 return UPDATE_DIVESETTINGS; | 707 return UPDATE_DIVESETTINGS; |
| 676 } | 708 } |
| 677 | 709 |
| 678 | 710 uint8_t OnAction_CViewPortControl(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 711 { | |
| 712 uint8_t newValue = 0; | |
| 713 SSettings *pSettings = settingsGetPointer(); | |
| 714 | |
| 715 switch(pSettings->MotionDetection) | |
| 716 { | |
| 717 case MOTION_DETECT_OFF: | |
| 718 newValue = MOTION_DETECT_MOVE; | |
| 719 break; | |
| 720 case MOTION_DETECT_MOVE: | |
| 721 newValue = MOTION_DETECT_SECTOR; | |
| 722 break; | |
| 723 case MOTION_DETECT_SECTOR: | |
| 724 newValue = MOTION_DETECT_SCROLL; | |
| 725 break; | |
| 726 case MOTION_DETECT_SCROLL: | |
| 727 newValue = MOTION_DETECT_OFF; | |
| 728 break; | |
| 729 default: | |
| 730 newValue = MOTION_DETECT_OFF; | |
| 731 break; | |
| 732 } | |
| 733 pSettings->MotionDetection = newValue; | |
| 734 return UPDATE_DIVESETTINGS; | |
| 735 } | |
| 679 | 736 |
| 680 void openEdit_CustomviewDivemode(const uint8_t* pcv_changelist) | 737 void openEdit_CustomviewDivemode(const uint8_t* pcv_changelist) |
| 681 { | 738 { |
| 682 | 739 |
| 683 SSettings *pSettings = settingsGetPointer(); | 740 SSettings *pSettings = settingsGetPointer(); |
