Selaa lähdekoodia

helper to compare current layer_state to user layer

Performs the same bit comparison that the layer_move
functions perform
Colin T.A. Gray 7 vuotta sitten
vanhempi
commit
1620d78e73
2 muutettua tiedostoa jossa 12 lisäystä ja 0 poistoa
  1. 10 0
      tmk_core/common/action_layer.c
  2. 2 0
      tmk_core/common/action_layer.h

+ 10 - 0
tmk_core/common/action_layer.c

@@ -88,6 +88,16 @@ void layer_clear(void)
     layer_state_set(0);
 }
 
+bool layer_state_is(uint8_t layer)
+{
+    return layer_state_cmp(layer_state, layer);
+}
+
+bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) {
+    if (layer == 0) { return cmp_layer_state == 0; }
+    return (cmp_layer_state & (1UL<<layer)) > 0;
+}
+
 void layer_move(uint8_t layer)
 {
     layer_state_set(1UL<<layer);

+ 2 - 0
tmk_core/common/action_layer.h

@@ -51,6 +51,8 @@ void default_layer_xor(uint32_t state);
 extern uint32_t layer_state;
 void layer_debug(void);
 void layer_clear(void);
+bool layer_state_is(uint8_t layer);
+bool layer_state_cmp(uint32_t layer1, uint8_t layer2);
 void layer_move(uint8_t layer);
 void layer_on(uint8_t layer);
 void layer_off(uint8_t layer);