diff options
| author | Fred Sundvik <fsundvik@gmail.com> | 2016-04-24 13:46:19 +0300 | 
|---|---|---|
| committer | Fred Sundvik <fsundvik@gmail.com> | 2016-04-24 13:46:19 +0300 | 
| commit | c95b17b536b4437f001d5f5e8a54753969e36bb2 (patch) | |
| tree | d944e4a2ff6da1d5a06c671dfa1382423f5515d1 | |
| parent | 61f7761c034d46eb0856fb115260de2679abc419 (diff) | |
| download | firmware-c95b17b536b4437f001d5f5e8a54753969e36bb2.tar.gz firmware-c95b17b536b4437f001d5f5e8a54753969e36bb2.tar.bz2 firmware-c95b17b536b4437f001d5f5e8a54753969e36bb2.zip  | |
Add simple led support
Also the first version of a led testing animation
| -rw-r--r-- | led_test.c | 45 | ||||
| -rw-r--r-- | led_test.h | 35 | ||||
| -rw-r--r-- | visualizer.c | 8 | ||||
| -rw-r--r-- | visualizer.h | 3 | ||||
| -rw-r--r-- | visualizer.mk | 10 | 
5 files changed, 99 insertions, 2 deletions
diff --git a/led_test.c b/led_test.c new file mode 100644 index 000000000..1aadd5541 --- /dev/null +++ b/led_test.c @@ -0,0 +1,45 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +#include "led_test.h" +#include "gfx.h" + +keyframe_animation_t led_test_animation = { +    .num_frames = 1, +    .loop = true, +    .frame_lengths = {MS2ST(1000)}, +    .frame_functions = { +        keyframe_fade_in_all_leds, +    }, +}; + +bool keyframe_fade_in_all_leds(keyframe_animation_t* animation, visualizer_state_t* state) { +    (void)state; +    int frame_length = animation->frame_lengths[animation->current_frame]; +    int current_pos = frame_length - animation->time_left_in_frame; +    uint8_t luma = 0x255 * current_pos / frame_length; +    color_t color = LUMA2COLOR(luma); +    gdispGClear(LED_DISPLAY, color); +    gdispGFlush(LED_DISPLAY); +    return true; +} diff --git a/led_test.h b/led_test.h new file mode 100644 index 000000000..521e05216 --- /dev/null +++ b/led_test.h @@ -0,0 +1,35 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 Fred Sundvik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef TMK_VISUALIZER_LED_TEST_H_ +#define TMK_VISUALIZER_LED_TEST_H_ + +#include "visualizer.h" + +bool keyframe_fade_in_all_leds(keyframe_animation_t* animation, visualizer_state_t* state); + +extern keyframe_animation_t led_test_animation; + + +#endif /* TMK_VISUALIZER_LED_TEST_H_ */ diff --git a/visualizer.c b/visualizer.c index 867a1d334..ed5c9fa2c 100644 --- a/visualizer.c +++ b/visualizer.c @@ -77,6 +77,9 @@ static remote_object_t* remote_objects[] = {  #endif +GDisplay* LCDDisplay; +GDisplay* LEDDisplay; +  void start_keyframe_animation(keyframe_animation_t* animation) {      animation->current_frame = -1; @@ -405,6 +408,11 @@ void visualizer_init(void) {  #ifdef USE_SERIAL_LINK      add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t*) );  #endif +    // TODO: Make sure these works when either of these are disabled +    LCDDisplay = gdispGetDisplay(0); +    LEDDisplay = gdispGetDisplay(1); + +      // We are using a low priority thread, the idea is to have it run only      // when the main thread is sleeping during the matrix scanning      chEvtObjectInit(&layer_changed_event); diff --git a/visualizer.h b/visualizer.h index 22798cda6..6a72fde1f 100644 --- a/visualizer.h +++ b/visualizer.h @@ -99,6 +99,9 @@ typedef struct keyframe_animation_t {  } keyframe_animation_t; +extern GDisplay* LCD_DISPLAY; +extern GDisplay* LED_DISPLAY; +  void start_keyframe_animation(keyframe_animation_t* animation);  void stop_keyframe_animation(keyframe_animation_t* animation); diff --git a/visualizer.mk b/visualizer.mk index 13c5d3158..96ca468e8 100644 --- a/visualizer.mk +++ b/visualizer.mk @@ -21,13 +21,14 @@  # SOFTWARE.  GFXLIB = $(VISUALIZER_DIR)/ugfx +SRC += $(GFXSRC) $(VISUALIZER_DIR)/visualizer.c +UINCDIR += $(GFXINC) $(VISUALIZER_DIR) +  ifdef LCD_ENABLE  include $(GFXLIB)/gfx.mk  UDEFS += -DLCD_ENABLE  ULIBS += -lm  endif -SRC += $(GFXSRC) $(VISUALIZER_DIR)/visualizer.c -UINCDIR += $(GFXINC) $(VISUALIZER_DIR)  ifdef LCD_BACKLIGHT_ENABLE  SRC += $(VISUALIZER_DIR)/lcd_backlight.c @@ -35,6 +36,11 @@ SRC += lcd_backlight_hal.c  UDEFS += -DLCD_BACKLIGHT_ENABLE  endif +ifdef LED_ENABLE +SRC += $(VISUALIZER_DIR)/led_test.c +UDEFS += -DLED_ENABLE +endif +  ifndef VISUALIZER_USER  VISUALIZER_USER = visualizer_user.c  endif  | 
