| 670 | uint16_t LCD_layerStack_prevSize = 0; |
| 671 | uint16_t LCD_layerStack_prevTop = 0; |
| 672 | void LCD_layerStack_capability( TriggerMacro *trigger, uint8_t state, uint8_t stateType, uint8_t *args ) |
| 673 | { |
| 674 | CapabilityState cstate = KLL_CapabilityState( state, stateType ); |
| 675 | |
| 676 | switch ( cstate ) |
| 677 | { |
| 678 | case CapabilityState_Initial: |
| 679 | case CapabilityState_Any: |
| 680 | case CapabilityState_Last: |
| 681 | // Press/Hold/Release |
| 682 | break; |
| 683 | case CapabilityState_Debug: |
| 684 | // Display capability name |
| 685 | print("LCD_layerStack_capability()"); |
| 686 | return; |
| 687 | default: |
| 688 | return; |
| 689 | } |
| 690 | |
| 691 | // Parse the layer stack, top to bottom |
| 692 | extern uint16_t macroLayerIndexStack[]; |
| 693 | extern uint16_t macroLayerIndexStackSize; |
| 694 | |
| 695 | // Ignore if the stack size hasn't changed and the top of the stack is the same |
| 696 | if ( macroLayerIndexStackSize == LCD_layerStack_prevSize |
| 697 | && macroLayerIndexStack[macroLayerIndexStackSize - 1] == LCD_layerStack_prevTop ) |
| 698 | { |
| 699 | return; |
| 700 | } |
| 701 | LCD_layerStack_prevSize = macroLayerIndexStackSize; |
| 702 | LCD_layerStack_prevTop = macroLayerIndexStack[macroLayerIndexStackSize - 1]; |
| 703 | |
| 704 | LCD_layerStackExact_args stack_args; |
| 705 | memset( stack_args.layers, 0, sizeof( stack_args.layers ) ); |
| 706 | |
| 707 | // Use the LCD_layerStackExact_capability to set the LCD using the determined stack |
| 708 | // Construct argument set for capability |
| 709 | stack_args.numArgs = macroLayerIndexStackSize; |
| 710 | for ( uint16_t layer = 1; layer <= macroLayerIndexStackSize; layer++ ) |
| 711 | { |
| 712 | stack_args.layers[ layer - 1 ] = macroLayerIndexStack[ macroLayerIndexStackSize - layer ]; |
| 713 | } |
| 714 | |
| 715 | // Only deal with the interconnect if it has been compiled in |
| 716 | #if defined(ConnectEnabled_define) |
| 717 | if ( Connect_master ) |
| 718 | { |
| 719 | // generatedKeymap.h |
| 720 | extern const Capability CapabilitiesList[]; |
| 721 | |
| 722 | // Broadcast layerStackExact remote capability (0xFF is the broadcast id) |
| 723 | Connect_send_RemoteCapability( |
| 724 | 0xFF, |
| 725 | LCD_layerStackExact_capability_index, |
| 726 | state, |
| 727 | stateType, |
| 728 | CapabilitiesList[ LCD_layerStackExact_capability_index ].argCount, |
| 729 | (uint8_t*)&stack_args |
nothing calls this directly
no test coverage detected
searching dependent graphs…