From 61281475063f7c593c4369cdf61ec51ffd06ff12 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Date: Wed, 11 Nov 2015 15:11:15 -0800 Subject: Updating 3.1 docs --- docs/3.1/_fast_l_e_d_8h.html | 15 +- docs/3.1/_fast_l_e_d_8h_source.html | 753 +++++----- docs/3.1/annotated.html | 91 +- docs/3.1/bitswap_8h.html | 2 +- docs/3.1/bitswap_8h_source.html | 2 +- docs/3.1/chipsets_8h.html | 10 +- docs/3.1/chipsets_8h_source.html | 701 +++++---- docs/3.1/class_a_p_a102_controller-members.html | 69 +- docs/3.1/class_a_p_a102_controller.html | 13 +- docs/3.1/class_a_p_a104.html | 2 +- .../class_a_v_r_software_s_p_i_output-members.html | 2 +- docs/3.1/class_a_v_r_software_s_p_i_output.html | 2 +- docs/3.1/class_c_every_n_time_periods-members.html | 2 +- docs/3.1/class_c_every_n_time_periods.html | 2 +- docs/3.1/class_c_fast_l_e_d-members.html | 4 +- docs/3.1/class_c_fast_l_e_d.html | 83 +- docs/3.1/class_c_h_s_v_palette16-members.html | 8 +- docs/3.1/class_c_h_s_v_palette16.html | 8 +- docs/3.1/class_c_h_s_v_palette256-members.html | 10 +- docs/3.1/class_c_h_s_v_palette256.html | 8 +- docs/3.1/class_c_l_e_d_controller-members.html | 69 +- docs/3.1/class_c_l_e_d_controller.html | 13 +- docs/3.1/class_c_min_wait-members.html | 2 +- docs/3.1/class_c_min_wait.html | 2 +- docs/3.1/class_c_r_g_b_palette16-members.html | 12 +- docs/3.1/class_c_r_g_b_palette16.html | 8 +- docs/3.1/class_c_r_g_b_palette256-members.html | 14 +- docs/3.1/class_c_r_g_b_palette256.html | 8 +- docs/3.1/class_d_a_t_a___n_o_p-members.html | 4 +- docs/3.1/class_d_a_t_a___n_o_p.html | 8 +- docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html | 69 +- docs/3.1/class_d_m_x_s_e_r_i_a_l.html | 13 +- docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html | 69 +- docs/3.1/class_d_m_x_s_i_m_p_l_e.html | 13 +- .../3.1/class_d_m_x_serial_controller-members.html | 69 +- docs/3.1/class_d_m_x_serial_controller.html | 13 +- .../3.1/class_d_m_x_simple_controller-members.html | 69 +- docs/3.1/class_d_m_x_simple_controller.html | 13 +- docs/3.1/class_fast_pin-members.html | 22 +- docs/3.1/class_fast_pin.html | 50 +- docs/3.1/class_fast_pin_b_b-members.html | 22 +- docs/3.1/class_fast_pin_b_b.html | 50 +- docs/3.1/class_g_w6205.html | 2 +- docs/3.1/class_g_w6205__400.html | 2 +- docs/3.1/class_g_w6205_controller400_khz.html | 2 +- docs/3.1/class_g_w6205_controller800_khz.html | 2 +- docs/3.1/class_input_pin-members.html | 2 +- docs/3.1/class_input_pin.html | 2 +- docs/3.1/class_l_p_d1886.html | 2 +- docs/3.1/class_l_p_d1886_controller1250_khz.html | 2 +- docs/3.1/class_l_p_d8806_controller-members.html | 71 +- docs/3.1/class_l_p_d8806_controller.html | 13 +- docs/3.1/class_n_e_o_p_i_x_e_l.html | 2 +- docs/3.1/class_n_o_p_s_p_i_output-members.html | 118 ++ docs/3.1/class_n_o_p_s_p_i_output.html | 183 +++ docs/3.1/class_output_pin-members.html | 2 +- docs/3.1/class_output_pin.html | 2 +- docs/3.1/class_p9813_controller-members.html | 71 +- docs/3.1/class_p9813_controller.html | 13 +- docs/3.1/class_p_l9823.html | 117 ++ docs/3.1/class_p_l9823__coll__graph.map | 3 + docs/3.1/class_p_l9823__coll__graph.md5 | 1 + docs/3.1/class_p_l9823__coll__graph.png | Bin 0 -> 25731 bytes docs/3.1/class_p_l9823__inherit__graph.map | 3 + docs/3.1/class_p_l9823__inherit__graph.md5 | 1 + docs/3.1/class_p_l9823__inherit__graph.png | Bin 0 -> 25731 bytes docs/3.1/class_p_l9823_controller.html | 117 ++ docs/3.1/class_p_l9823_controller__coll__graph.map | 2 + docs/3.1/class_p_l9823_controller__coll__graph.md5 | 1 + docs/3.1/class_p_l9823_controller__coll__graph.png | Bin 0 -> 19276 bytes .../class_p_l9823_controller__inherit__graph.map | 3 + .../class_p_l9823_controller__inherit__graph.md5 | 1 + .../class_p_l9823_controller__inherit__graph.png | Bin 0 -> 25711 bytes docs/3.1/class_pin-members.html | 2 +- docs/3.1/class_pin.html | 2 +- .../class_r_e_f_hardware_s_p_i_output-members.html | 118 ++ docs/3.1/class_r_e_f_hardware_s_p_i_output.html | 162 +++ docs/3.1/class_s_k6812.html | 117 ++ docs/3.1/class_s_k6812__coll__graph.map | 3 + docs/3.1/class_s_k6812__coll__graph.md5 | 1 + docs/3.1/class_s_k6812__coll__graph.png | Bin 0 -> 25788 bytes docs/3.1/class_s_k6812__inherit__graph.map | 3 + docs/3.1/class_s_k6812__inherit__graph.md5 | 1 + docs/3.1/class_s_k6812__inherit__graph.png | Bin 0 -> 25788 bytes docs/3.1/class_s_k6812_controller.html | 117 ++ docs/3.1/class_s_k6812_controller__coll__graph.map | 2 + docs/3.1/class_s_k6812_controller__coll__graph.md5 | 1 + docs/3.1/class_s_k6812_controller__coll__graph.png | Bin 0 -> 19303 bytes .../class_s_k6812_controller__inherit__graph.map | 3 + .../class_s_k6812_controller__inherit__graph.md5 | 1 + .../class_s_k6812_controller__inherit__graph.png | Bin 0 -> 25816 bytes docs/3.1/class_s_m16716_controller-members.html | 71 +- docs/3.1/class_s_m16716_controller.html | 13 +- docs/3.1/class_s_p_i_output-members.html | 2 +- docs/3.1/class_s_p_i_output.html | 6 +- ...2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- ...i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- ...2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- ...i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- ...0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- ...1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html | 2 +- docs/3.1/class_s_p_i_output__coll__graph.map | 2 +- docs/3.1/class_s_p_i_output__coll__graph.md5 | 2 +- docs/3.1/class_s_p_i_output__coll__graph.png | Bin 10489 -> 17580 bytes docs/3.1/class_s_p_i_output__inherit__graph.map | 2 +- docs/3.1/class_s_p_i_output__inherit__graph.md5 | 2 +- docs/3.1/class_s_p_i_output__inherit__graph.png | Bin 10489 -> 17580 bytes docs/3.1/class_selectable-members.html | 2 +- docs/3.1/class_selectable.html | 2 +- docs/3.1/class_software_s_p_i_output-members.html | 2 +- docs/3.1/class_software_s_p_i_output.html | 2 +- docs/3.1/class_t_m1803.html | 2 +- docs/3.1/class_t_m1803_controller400_khz.html | 2 +- docs/3.1/class_t_m1804.html | 2 +- docs/3.1/class_t_m1809.html | 2 +- docs/3.1/class_t_m1809_controller800_khz.html | 4 +- ...s_t_m1809_controller800_khz__inherit__graph.map | 5 +- ...s_t_m1809_controller800_khz__inherit__graph.md5 | 2 +- ...s_t_m1809_controller800_khz__inherit__graph.png | Bin 28898 -> 29161 bytes docs/3.1/class_t_m1812.html | 117 ++ docs/3.1/class_t_m1812__coll__graph.map | 3 + docs/3.1/class_t_m1812__coll__graph.md5 | 1 + docs/3.1/class_t_m1812__coll__graph.png | Bin 0 -> 25742 bytes docs/3.1/class_t_m1812__inherit__graph.map | 3 + docs/3.1/class_t_m1812__inherit__graph.md5 | 1 + docs/3.1/class_t_m1812__inherit__graph.png | Bin 0 -> 25742 bytes docs/3.1/class_t_m1829.html | 2 +- docs/3.1/class_t_m1829_controller1600_khz.html | 2 +- docs/3.1/class_t_m1829_controller800_khz.html | 2 +- docs/3.1/class_u_c_s1903.html | 2 +- docs/3.1/class_u_c_s1903_b.html | 2 +- docs/3.1/class_u_c_s1903_b_controller800_khz.html | 2 +- docs/3.1/class_u_c_s1903_controller400_khz.html | 2 +- docs/3.1/class_u_c_s1904.html | 2 +- docs/3.1/class_u_c_s1904_controller800_khz.html | 2 +- docs/3.1/class_w_s2801_controller-members.html | 71 +- docs/3.1/class_w_s2801_controller.html | 13 +- docs/3.1/class_w_s2803_controller-members.html | 71 +- docs/3.1/class_w_s2803_controller.html | 13 +- docs/3.1/class_w_s2811.html | 2 +- docs/3.1/class_w_s2811__400.html | 2 +- docs/3.1/class_w_s2811_controller400_khz.html | 2 +- docs/3.1/class_w_s2811_controller800_khz.html | 2 +- docs/3.1/class_w_s2812.html | 2 +- docs/3.1/class_w_s2812_b.html | 2 +- docs/3.1/class_w_s2812_controller800_khz.html | 2 +- docs/3.1/classes.html | 81 +- docs/3.1/classq-members.html | 2 +- docs/3.1/classq.html | 2 +- docs/3.1/color_8h.html | 2 +- docs/3.1/color_8h_source.html | 2 +- docs/3.1/colorpalettes_8h.html | 2 +- docs/3.1/colorpalettes_8h_source.html | 2 +- docs/3.1/colorutils_8h.html | 2 +- docs/3.1/colorutils_8h_source.html | 1538 ++++++++++---------- docs/3.1/controller_8h.html | 2 +- docs/3.1/controller_8h_source.html | 837 +++++------ docs/3.1/cpp__compat_8h_source.html | 112 ++ docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html | 2 +- docs/3.1/dmx_8h_source.html | 2 +- docs/3.1/fastled__config_8h.html | 2 +- docs/3.1/fastled__config_8h_source.html | 2 +- docs/3.1/fastled__delay_8h.html | 2 +- docs/3.1/fastled__delay_8h_source.html | 2 +- docs/3.1/fastled__progmem_8h.html | 2 +- docs/3.1/fastled__progmem_8h_source.html | 2 +- docs/3.1/fastpin_8h.html | 5 +- docs/3.1/fastpin_8h_source.html | 391 ++--- docs/3.1/fastspi_8h_source.html | 180 +-- docs/3.1/fastspi__bitbang_8h_source.html | 8 +- docs/3.1/fastspi__dma_8h_source.html | 2 +- docs/3.1/fastspi__nop_8h_source.html | 51 +- docs/3.1/fastspi__ref_8h_source.html | 52 +- docs/3.1/fastspi__types_8h_source.html | 4 +- docs/3.1/files.html | 41 +- docs/3.1/functions.html | 58 +- docs/3.1/functions_enum.html | 2 +- docs/3.1/functions_func.html | 58 +- docs/3.1/globals.html | 2 +- docs/3.1/globals_enum.html | 2 +- docs/3.1/globals_eval.html | 2 +- docs/3.1/globals_func.html | 2 +- docs/3.1/globals_vars.html | 2 +- docs/3.1/graph_legend.html | 2 +- docs/3.1/group___bitswap.html | 2 +- docs/3.1/group___color_enums.html | 2 +- docs/3.1/group___colorpalletes.html | 2 +- docs/3.1/group___colorutils.html | 2 +- docs/3.1/group___dimming.html | 2 +- docs/3.1/group___math.html | 2 +- docs/3.1/group___noise.html | 2 +- docs/3.1/group___pixeltypes.html | 2 +- docs/3.1/group___power.html | 2 +- docs/3.1/group___random.html | 2 +- docs/3.1/group___scaling.html | 2 +- docs/3.1/group___trig.html | 2 +- docs/3.1/group__chipsets.html | 6 +- docs/3.1/group__lib8tion.html | 2 +- docs/3.1/hierarchy.html | 110 +- docs/3.1/hsv2rgb_8h_source.html | 2 +- docs/3.1/index.html | 2 +- docs/3.1/inherit_graph_0.map | 5 +- docs/3.1/inherit_graph_0.md5 | 2 +- docs/3.1/inherit_graph_0.png | Bin 19481 -> 5269 bytes docs/3.1/inherit_graph_1.map | 2 +- docs/3.1/inherit_graph_1.md5 | 2 +- docs/3.1/inherit_graph_1.png | Bin 5269 -> 1742 bytes docs/3.1/inherit_graph_10.map | 2 +- docs/3.1/inherit_graph_10.md5 | 2 +- docs/3.1/inherit_graph_10.png | Bin 2280 -> 1112 bytes docs/3.1/inherit_graph_11.map | 2 +- docs/3.1/inherit_graph_11.md5 | 2 +- docs/3.1/inherit_graph_11.png | Bin 1112 -> 2032 bytes docs/3.1/inherit_graph_12.map | 2 +- docs/3.1/inherit_graph_12.md5 | 2 +- docs/3.1/inherit_graph_12.png | Bin 2032 -> 2240 bytes docs/3.1/inherit_graph_13.map | 2 +- docs/3.1/inherit_graph_13.md5 | 2 +- docs/3.1/inherit_graph_13.png | Bin 2240 -> 1321 bytes docs/3.1/inherit_graph_14.map | 2 +- docs/3.1/inherit_graph_14.md5 | 2 +- docs/3.1/inherit_graph_14.png | Bin 1321 -> 2327 bytes docs/3.1/inherit_graph_15.map | 3 +- docs/3.1/inherit_graph_15.md5 | 2 +- docs/3.1/inherit_graph_15.png | Bin 2327 -> 2402 bytes docs/3.1/inherit_graph_16.map | 37 +- docs/3.1/inherit_graph_16.md5 | 2 +- docs/3.1/inherit_graph_16.png | Bin 2402 -> 181249 bytes docs/3.1/inherit_graph_17.map | 31 +- docs/3.1/inherit_graph_17.md5 | 2 +- docs/3.1/inherit_graph_17.png | Bin 143288 -> 2189 bytes docs/3.1/inherit_graph_18.map | 2 +- docs/3.1/inherit_graph_18.md5 | 2 +- docs/3.1/inherit_graph_18.png | Bin 2189 -> 1344 bytes docs/3.1/inherit_graph_19.map | 2 +- docs/3.1/inherit_graph_19.md5 | 2 +- docs/3.1/inherit_graph_19.png | Bin 1344 -> 4886 bytes docs/3.1/inherit_graph_2.map | 2 +- docs/3.1/inherit_graph_2.md5 | 2 +- docs/3.1/inherit_graph_2.png | Bin 1742 -> 3958 bytes docs/3.1/inherit_graph_20.map | 2 +- docs/3.1/inherit_graph_20.md5 | 2 +- docs/3.1/inherit_graph_20.png | Bin 4886 -> 4513 bytes docs/3.1/inherit_graph_23.map | 5 +- docs/3.1/inherit_graph_23.md5 | 2 +- docs/3.1/inherit_graph_23.png | Bin 5086 -> 5714 bytes docs/3.1/inherit_graph_24.map | 8 +- docs/3.1/inherit_graph_24.md5 | 2 +- docs/3.1/inherit_graph_24.png | Bin 26334 -> 5086 bytes docs/3.1/inherit_graph_25.map | 5 +- docs/3.1/inherit_graph_25.md5 | 2 +- docs/3.1/inherit_graph_25.png | Bin 6339 -> 23961 bytes docs/3.1/inherit_graph_26.map | 5 +- docs/3.1/inherit_graph_26.md5 | 2 +- docs/3.1/inherit_graph_26.png | Bin 6168 -> 26334 bytes docs/3.1/inherit_graph_27.map | 2 +- docs/3.1/inherit_graph_27.md5 | 2 +- docs/3.1/inherit_graph_27.png | Bin 857 -> 6339 bytes docs/3.1/inherit_graph_28.map | 2 +- docs/3.1/inherit_graph_28.md5 | 2 +- docs/3.1/inherit_graph_28.png | Bin 1762 -> 6168 bytes docs/3.1/inherit_graph_29.map | 2 +- docs/3.1/inherit_graph_29.md5 | 2 +- docs/3.1/inherit_graph_29.png | Bin 3149 -> 857 bytes docs/3.1/inherit_graph_3.map | 2 +- docs/3.1/inherit_graph_3.md5 | 2 +- docs/3.1/inherit_graph_3.png | Bin 3958 -> 1384 bytes docs/3.1/inherit_graph_31.map | 3 + docs/3.1/inherit_graph_31.md5 | 1 + docs/3.1/inherit_graph_31.png | Bin 0 -> 3149 bytes docs/3.1/inherit_graph_4.map | 2 +- docs/3.1/inherit_graph_4.md5 | 2 +- docs/3.1/inherit_graph_4.png | Bin 1384 -> 1060 bytes docs/3.1/inherit_graph_5.map | 2 +- docs/3.1/inherit_graph_5.md5 | 2 +- docs/3.1/inherit_graph_5.png | Bin 1060 -> 1985 bytes docs/3.1/inherit_graph_6.map | 2 +- docs/3.1/inherit_graph_6.md5 | 2 +- docs/3.1/inherit_graph_6.png | Bin 1985 -> 2157 bytes docs/3.1/inherit_graph_7.map | 12 +- docs/3.1/inherit_graph_7.md5 | 2 +- docs/3.1/inherit_graph_7.png | Bin 2157 -> 64958 bytes docs/3.1/inherit_graph_8.map | 12 +- docs/3.1/inherit_graph_8.md5 | 2 +- docs/3.1/inherit_graph_8.png | Bin 64958 -> 2059 bytes docs/3.1/inherit_graph_9.map | 2 +- docs/3.1/inherit_graph_9.md5 | 2 +- docs/3.1/inherit_graph_9.png | Bin 2059 -> 2280 bytes docs/3.1/inherits.html | 74 +- docs/3.1/led__sysdefs_8h_source.html | 2 +- docs/3.1/lib8tion_8h_source.html | 11 +- docs/3.1/math8_8h_source.html | 2 +- docs/3.1/md__p_o_r_t_i_n_g.html | 2 +- docs/3.1/md__r_e_a_d_m_e.html | 8 +- docs/3.1/md_release_notes.html | 37 +- docs/3.1/modules.html | 2 +- docs/3.1/noise_8h.html | 2 +- docs/3.1/noise_8h_source.html | 2 +- docs/3.1/pages.html | 4 +- docs/3.1/pixeltypes_8h_source.html | 962 ++++++------ docs/3.1/platforms_8h_source.html | 2 +- docs/3.1/power__mgt_8h_source.html | 64 +- docs/3.1/random8_8h_source.html | 2 +- docs/3.1/scale8_8h_source.html | 2 +- docs/3.1/search/all_11.js | 4 +- docs/3.1/search/all_12.js | 8 +- docs/3.1/search/all_13.js | 1 + docs/3.1/search/all_15.js | 8 + docs/3.1/search/all_6.js | 2 +- docs/3.1/search/all_9.js | 2 +- docs/3.1/search/all_d.js | 1 + docs/3.1/search/all_f.js | 2 + docs/3.1/search/classes_10.js | 17 +- docs/3.1/search/classes_11.js | 16 +- docs/3.1/search/classes_a.js | 3 +- docs/3.1/search/classes_c.js | 4 +- docs/3.1/search/classes_e.js | 13 +- docs/3.1/search/classes_f.js | 24 +- docs/3.1/search/functions_10.js | 3 +- docs/3.1/search/functions_11.js | 6 +- docs/3.1/search/functions_13.html | 26 + docs/3.1/search/functions_13.js | 11 + docs/3.1/search/functions_9.js | 2 +- docs/3.1/search/pages_0.js | 2 +- docs/3.1/search/searchdata.js | 4 +- docs/3.1/struct_c_h_s_v-members.html | 2 +- docs/3.1/struct_c_h_s_v.html | 2 +- docs/3.1/struct_c_r_g_b-members.html | 102 +- docs/3.1/struct_c_r_g_b.html | 20 +- .../3.1/struct_multi_pixel_controller-members.html | 2 +- docs/3.1/struct_multi_pixel_controller.html | 2 +- docs/3.1/struct_pixel_controller-members.html | 2 +- docs/3.1/struct_pixel_controller.html | 2 +- docs/3.1/structsub4-members.html | 2 +- docs/3.1/structsub4.html | 2 +- docs/3.1/todo.html | 2 +- docs/3.1/trig8_8h_source.html | 2 +- docs/3.1/union_i_e_e_e754binary32__t-members.html | 2 +- docs/3.1/union_i_e_e_e754binary32__t.html | 2 +- ...r_g_b_gradient_palette_entry_union-members.html | 2 +- ...union_t_r_g_b_gradient_palette_entry_union.html | 2 +- docs/3.1/unionbitswap__type-members.html | 2 +- docs/3.1/unionbitswap__type.html | 2 +- docs/3.1/unionjust8bits-members.html | 2 +- docs/3.1/unionjust8bits.html | 2 +- docs/3.1/uniont_bytes_for_long-members.html | 2 +- docs/3.1/uniont_bytes_for_long.html | 2 +- 347 files changed, 5746 insertions(+), 3718 deletions(-) create mode 100644 docs/3.1/class_n_o_p_s_p_i_output-members.html create mode 100644 docs/3.1/class_n_o_p_s_p_i_output.html create mode 100644 docs/3.1/class_p_l9823.html create mode 100644 docs/3.1/class_p_l9823__coll__graph.map create mode 100644 docs/3.1/class_p_l9823__coll__graph.md5 create mode 100644 docs/3.1/class_p_l9823__coll__graph.png create mode 100644 docs/3.1/class_p_l9823__inherit__graph.map create mode 100644 docs/3.1/class_p_l9823__inherit__graph.md5 create mode 100644 docs/3.1/class_p_l9823__inherit__graph.png create mode 100644 docs/3.1/class_p_l9823_controller.html create mode 100644 docs/3.1/class_p_l9823_controller__coll__graph.map create mode 100644 docs/3.1/class_p_l9823_controller__coll__graph.md5 create mode 100644 docs/3.1/class_p_l9823_controller__coll__graph.png create mode 100644 docs/3.1/class_p_l9823_controller__inherit__graph.map create mode 100644 docs/3.1/class_p_l9823_controller__inherit__graph.md5 create mode 100644 docs/3.1/class_p_l9823_controller__inherit__graph.png create mode 100644 docs/3.1/class_r_e_f_hardware_s_p_i_output-members.html create mode 100644 docs/3.1/class_r_e_f_hardware_s_p_i_output.html create mode 100644 docs/3.1/class_s_k6812.html create mode 100644 docs/3.1/class_s_k6812__coll__graph.map create mode 100644 docs/3.1/class_s_k6812__coll__graph.md5 create mode 100644 docs/3.1/class_s_k6812__coll__graph.png create mode 100644 docs/3.1/class_s_k6812__inherit__graph.map create mode 100644 docs/3.1/class_s_k6812__inherit__graph.md5 create mode 100644 docs/3.1/class_s_k6812__inherit__graph.png create mode 100644 docs/3.1/class_s_k6812_controller.html create mode 100644 docs/3.1/class_s_k6812_controller__coll__graph.map create mode 100644 docs/3.1/class_s_k6812_controller__coll__graph.md5 create mode 100644 docs/3.1/class_s_k6812_controller__coll__graph.png create mode 100644 docs/3.1/class_s_k6812_controller__inherit__graph.map create mode 100644 docs/3.1/class_s_k6812_controller__inherit__graph.md5 create mode 100644 docs/3.1/class_s_k6812_controller__inherit__graph.png create mode 100644 docs/3.1/class_t_m1812.html create mode 100644 docs/3.1/class_t_m1812__coll__graph.map create mode 100644 docs/3.1/class_t_m1812__coll__graph.md5 create mode 100644 docs/3.1/class_t_m1812__coll__graph.png create mode 100644 docs/3.1/class_t_m1812__inherit__graph.map create mode 100644 docs/3.1/class_t_m1812__inherit__graph.md5 create mode 100644 docs/3.1/class_t_m1812__inherit__graph.png create mode 100644 docs/3.1/cpp__compat_8h_source.html create mode 100644 docs/3.1/inherit_graph_31.map create mode 100644 docs/3.1/inherit_graph_31.md5 create mode 100644 docs/3.1/inherit_graph_31.png create mode 100644 docs/3.1/search/functions_13.html create mode 100644 docs/3.1/search/functions_13.js diff --git a/docs/3.1/_fast_l_e_d_8h.html b/docs/3.1/_fast_l_e_d_8h.html index a8a7bafa..82b9a3a6 100644 --- a/docs/3.1/_fast_l_e_d_8h.html +++ b/docs/3.1/_fast_l_e_d_8h.html @@ -85,6 +85,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
@@ -103,6 +104,8 @@ Classes   class  TM1829< DATA_PIN, RGB_ORDER >   +class  TM1812< DATA_PIN, RGB_ORDER > +  class  TM1809< DATA_PIN, RGB_ORDER >   class  TM1804< DATA_PIN, RGB_ORDER > @@ -119,6 +122,10 @@ Classes   class  WS2812B< DATA_PIN, RGB_ORDER >   +class  SK6812< DATA_PIN, RGB_ORDER > +  +class  PL9823< DATA_PIN, RGB_ORDER > +  class  WS2811< DATA_PIN, RGB_ORDER >   class  APA104< DATA_PIN, RGB_ORDER > @@ -139,6 +146,12 @@ Classes  High level controller interface for FastLED. More...
  + + + +

+Typedefs

+typedef uint8_t(* power_func) (uint8_t scale, uint32_t data)
 
diff --git a/docs/3.1/_fast_l_e_d_8h_source.html b/docs/3.1/_fast_l_e_d_8h_source.html index 9a80adee..87871813 100644 --- a/docs/3.1/_fast_l_e_d_8h_source.html +++ b/docs/3.1/_fast_l_e_d_8h_source.html @@ -94,9 +94,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
7 #define xstr(s) str(s)
8 #define str(s) #s
9 
-
10 #define FASTLED_VERSION 3001000
+
10 #define FASTLED_VERSION 3001001
11 #ifndef FASTLED_INTERNAL
-
12 #warning FastLED version 3001000 (Not really a warning, just telling you here.)
+
12 #warning FastLED version 3.001.001 (Not really a warning, just telling you here.)
13 #endif
14 
15 #ifndef __PROG_TYPES_COMPAT__
@@ -117,405 +117,426 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
30 
31 #include <stdint.h>
32 
-
33 #include "fastled_config.h"
-
34 #include "led_sysdefs.h"
-
35 
-
36 #include "bitswap.h"
-
37 #include "controller.h"
-
38 #include "fastpin.h"
-
39 #include "fastspi_types.h"
-
40 #include "./dmx.h"
-
41 
-
42 #include "platforms.h"
-
43 #include "fastled_progmem.h"
-
44 
-
45 #include "lib8tion.h"
-
46 #include "hsv2rgb.h"
-
47 #include "colorutils.h"
-
48 #include "colorpalettes.h"
-
49 
-
50 #include "noise.h"
-
51 #include "power_mgt.h"
-
52 
-
53 #include "fastspi.h"
-
54 #include "chipsets.h"
-
55 
-
56 FASTLED_NAMESPACE_BEGIN
+
33 #include "cpp_compat.h"
+
34 
+
35 #include "fastled_config.h"
+
36 #include "led_sysdefs.h"
+
37 
+
38 #include "bitswap.h"
+
39 #include "controller.h"
+
40 #include "fastpin.h"
+
41 #include "fastspi_types.h"
+
42 #include "./dmx.h"
+
43 
+
44 #include "platforms.h"
+
45 #include "fastled_progmem.h"
+
46 
+
47 #include "lib8tion.h"
+
48 #include "hsv2rgb.h"
+
49 #include "colorutils.h"
+
50 #include "colorpalettes.h"
+
51 
+
52 #include "noise.h"
+
53 #include "power_mgt.h"
+
54 
+
55 #include "fastspi.h"
+
56 #include "chipsets.h"
57 
- -
60  LPD8806,
-
61  WS2801,
-
62  WS2803,
-
63  SM16716,
-
64  P9813,
-
65  APA102,
-
66  DOTSTAR
-
67 };
-
68 
-
69 enum ESM { SMART_MATRIX };
-
70 enum OWS2811 { OCTOWS2811,OCTOWS2811_400 };
-
71 
-
72 #ifdef FASTLED_HAS_CLOCKLESS
-
73 template<uint8_t DATA_PIN> class NEOPIXEL : public WS2812Controller800Khz<DATA_PIN, GRB> {};
-
74 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1829 : public TM1829Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
75 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1809 : public TM1809Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
76 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1804 : public TM1809Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
77 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1803 : public TM1803Controller400Khz<DATA_PIN, RGB_ORDER> {};
-
78 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1903 : public UCS1903Controller400Khz<DATA_PIN, RGB_ORDER> {};
-
79 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1903B : public UCS1903BController800Khz<DATA_PIN, RGB_ORDER> {};
-
80 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1904 : public UCS1904Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
81 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2812 : public WS2812Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
82 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2812B : public WS2812Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
83 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2811 : public WS2811Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
84 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class APA104 : public WS2811Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
85 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2811_400 : public WS2811Controller400Khz<DATA_PIN, RGB_ORDER> {};
-
86 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class GW6205 : public GW6205Controller800Khz<DATA_PIN, RGB_ORDER> {};
-
87 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class GW6205_400 : public GW6205Controller400Khz<DATA_PIN, RGB_ORDER> {};
-
88 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class LPD1886 : public LPD1886Controller1250Khz<DATA_PIN, RGB_ORDER> {};
-
89 #ifdef DmxSimple_h
-
90 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class DMXSIMPLE : public DMXSimpleController<DATA_PIN, RGB_ORDER> {};
-
91 #endif
-
92 #ifdef DmxSerial_h
-
93 template<EOrder RGB_ORDER> class DMXSERIAL : public DMXSerialController<RGB_ORDER> {};
-
94 #endif
-
95 #endif
-
96 
-
97 enum EBlockChipsets {
-
98 #ifdef PORTA_FIRST_PIN
-
99  WS2811_PORTA,
-
100  WS2811_400_PORTA,
-
101 #endif
-
102 #ifdef PORTB_FIRST_PIN
-
103  WS2811_PORTB,
-
104  WS2811_400_PORTB,
-
105 #endif
-
106 #ifdef PORTC_FIRST_PIN
-
107  WS2811_PORTC,
-
108  WS2811_400_PORTC,
-
109 #endif
-
110 #ifdef PORTD_FIRST_PIN
-
111  WS2811_PORTD,
-
112  WS2811_400_PORTD,
-
113 #endif
-
114 #ifdef HAS_PORTDC
-
115  WS2811_PORTDC,
-
116  WS2811_400_PORTDC,
-
117 #endif
-
118 };
-
119 
-
120 #if defined(LIB8_ATTINY)
-
121 #define NUM_CONTROLLERS 2
-
122 #else
-
123 #define NUM_CONTROLLERS 8
-
124 #endif
-
125 
-
130 class CFastLED {
-
131  // int m_nControllers;
-
132  uint8_t m_Scale;
-
133  uint16_t m_nFPS;
-
134  uint32_t m_nMinMicros;
-
135 public:
-
136  CFastLED();
-
137 
-
138 
-
150  static CLEDController &addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0);
-
151 
-
153 
-
154  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER, uint8_t SPI_DATA_RATE > CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
173  switch(CHIPSET) {
-
174  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
175  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
176  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
177  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
178  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
179  case DOTSTAR:
-
180  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
181  }
-
182  }
-
183 
-
184  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN > static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
185  switch(CHIPSET) {
-
186  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
187  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
188  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
189  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
190  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
191  case DOTSTAR:
-
192  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
193  }
-
194  }
-
195 
-
196  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER > static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
197  switch(CHIPSET) {
-
198  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
199  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
200  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
201  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
202  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
203  case DOTSTAR:
-
204  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
-
205  }
-
206  }
-
207 
-
208 #ifdef SPI_DATA
-
209  template<ESPIChipsets CHIPSET> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
210  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB>(data, nLedsOrOffset, nLedsIfOffset);
-
211  }
-
212 
-
213  template<ESPIChipsets CHIPSET, EOrder RGB_ORDER> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
214  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB_ORDER>(data, nLedsOrOffset, nLedsIfOffset);
-
215  }
-
216 
-
217  template<ESPIChipsets CHIPSET, EOrder RGB_ORDER, uint8_t SPI_DATA_RATE> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
218  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB_ORDER, SPI_DATA_RATE>(data, nLedsOrOffset, nLedsIfOffset);
-
219  }
-
220 
-
221 #endif
+
58 FASTLED_NAMESPACE_BEGIN
+
59 
+ +
62  LPD8806,
+
63  WS2801,
+
64  WS2803,
+
65  SM16716,
+
66  P9813,
+
67  APA102,
+
68  DOTSTAR
+
69 };
+
70 
+
71 enum ESM { SMART_MATRIX };
+
72 enum OWS2811 { OCTOWS2811,OCTOWS2811_400 };
+
73 
+
74 #ifdef FASTLED_HAS_CLOCKLESS
+
75 template<uint8_t DATA_PIN> class NEOPIXEL : public WS2812Controller800Khz<DATA_PIN, GRB> {};
+
76 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1829 : public TM1829Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
77 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1812 : public TM1809Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
78 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1809 : public TM1809Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
79 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1804 : public TM1809Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
80 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class TM1803 : public TM1803Controller400Khz<DATA_PIN, RGB_ORDER> {};
+
81 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1903 : public UCS1903Controller400Khz<DATA_PIN, RGB_ORDER> {};
+
82 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1903B : public UCS1903BController800Khz<DATA_PIN, RGB_ORDER> {};
+
83 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class UCS1904 : public UCS1904Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
84 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2812 : public WS2812Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
85 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2812B : public WS2812Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
86 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class SK6812 : public SK6812Controller<DATA_PIN, RGB_ORDER> {};
+
87 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class PL9823 : public PL9823Controller<DATA_PIN, RGB_ORDER> {};
+
88 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2811 : public WS2811Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
89 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class APA104 : public WS2811Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
90 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class WS2811_400 : public WS2811Controller400Khz<DATA_PIN, RGB_ORDER> {};
+
91 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class GW6205 : public GW6205Controller800Khz<DATA_PIN, RGB_ORDER> {};
+
92 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class GW6205_400 : public GW6205Controller400Khz<DATA_PIN, RGB_ORDER> {};
+
93 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class LPD1886 : public LPD1886Controller1250Khz<DATA_PIN, RGB_ORDER> {};
+
94 #ifdef DmxSimple_h
+
95 template<uint8_t DATA_PIN, EOrder RGB_ORDER> class DMXSIMPLE : public DMXSimpleController<DATA_PIN, RGB_ORDER> {};
+
96 #endif
+
97 #ifdef DmxSerial_h
+
98 template<EOrder RGB_ORDER> class DMXSERIAL : public DMXSerialController<RGB_ORDER> {};
+
99 #endif
+
100 #endif
+
101 
+
102 enum EBlockChipsets {
+
103 #ifdef PORTA_FIRST_PIN
+
104  WS2811_PORTA,
+
105  WS2811_400_PORTA,
+
106 #endif
+
107 #ifdef PORTB_FIRST_PIN
+
108  WS2811_PORTB,
+
109  WS2811_400_PORTB,
+
110 #endif
+
111 #ifdef PORTC_FIRST_PIN
+
112  WS2811_PORTC,
+
113  WS2811_400_PORTC,
+
114 #endif
+
115 #ifdef PORTD_FIRST_PIN
+
116  WS2811_PORTD,
+
117  WS2811_400_PORTD,
+
118 #endif
+
119 #ifdef HAS_PORTDC
+
120  WS2811_PORTDC,
+
121  WS2811_400_PORTDC,
+
122 #endif
+
123 };
+
124 
+
125 #if defined(LIB8_ATTINY)
+
126 #define NUM_CONTROLLERS 2
+
127 #else
+
128 #define NUM_CONTROLLERS 8
+
129 #endif
+
130 
+
131 typedef uint8_t (*power_func)(uint8_t scale, uint32_t data);
+
132 
+
137 class CFastLED {
+
138  // int m_nControllers;
+
139  uint8_t m_Scale;
+
140  uint16_t m_nFPS;
+
141  uint32_t m_nMinMicros;
+
142  uint32_t m_nPowerData;
+
143  power_func m_pPowerFunc;
+
144 
+
145 public:
+
146  CFastLED();
+
147 
+
148 
+
160  static CLEDController &addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0);
+
161 
+
163 
+
164  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER, uint8_t SPI_DATA_RATE > CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
183  switch(CHIPSET) {
+
184  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
185  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
186  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
187  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
188  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
189  case DOTSTAR:
+
190  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_DATA_RATE> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
191  }
+
192  }
+
193 
+
194  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN > static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
195  switch(CHIPSET) {
+
196  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
197  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
198  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
199  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
200  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
201  case DOTSTAR:
+
202  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
203  }
+
204  }
+
205 
+
206  template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER > static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
207  switch(CHIPSET) {
+
208  case LPD8806: { static LPD8806Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
209  case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
210  case WS2803: { static WS2803Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
211  case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
212  case P9813: { static P9813Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
213  case DOTSTAR:
+
214  case APA102: { static APA102Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
+
215  }
+
216  }
+
217 
+
218 #ifdef SPI_DATA
+
219  template<ESPIChipsets CHIPSET> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
220  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB>(data, nLedsOrOffset, nLedsIfOffset);
+
221  }
222 
-
223 
-
224 #ifdef FASTLED_HAS_CLOCKLESS
-
225 
-
227  template<template<uint8_t DATA_PIN, EOrder RGB_ORDER> class CHIPSET, uint8_t DATA_PIN, EOrder RGB_ORDER>
-
244  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
245  static CHIPSET<DATA_PIN, RGB_ORDER> c;
-
246  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
-
247  }
-
248 
-
249  template<template<uint8_t DATA_PIN, EOrder RGB_ORDER> class CHIPSET, uint8_t DATA_PIN>
-
250  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
251  static CHIPSET<DATA_PIN, RGB> c;
-
252  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
-
253  }
-
254 
-
255  template<template<uint8_t DATA_PIN> class CHIPSET, uint8_t DATA_PIN>
-
256  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
257  static CHIPSET<DATA_PIN> c;
-
258  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
-
259  }
-
260 
-
261  #ifdef FASTSPI_USE_DMX_SIMPLE
-
262  template<EClocklessChipsets CHIPSET, uint8_t DATA_PIN, EOrder RGB_ORDER=RGB>
-
263  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
-
264  {
-
265  switch(CHIPSET) {
-
266  case DMX: { static DMXController<DATA_PIN> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
-
267  }
-
268  }
-
269  #endif
+
223  template<ESPIChipsets CHIPSET, EOrder RGB_ORDER> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
224  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB_ORDER>(data, nLedsOrOffset, nLedsIfOffset);
+
225  }
+
226 
+
227  template<ESPIChipsets CHIPSET, EOrder RGB_ORDER, uint8_t SPI_DATA_RATE> static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
228  return addLeds<CHIPSET, SPI_DATA, SPI_CLOCK, RGB_ORDER, SPI_DATA_RATE>(data, nLedsOrOffset, nLedsIfOffset);
+
229  }
+
230 
+
231 #endif
+
232 
+
233 
+
234 #ifdef FASTLED_HAS_CLOCKLESS
+
235 
+
237  template<template<uint8_t DATA_PIN, EOrder RGB_ORDER> class CHIPSET, uint8_t DATA_PIN, EOrder RGB_ORDER>
+
254  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
255  static CHIPSET<DATA_PIN, RGB_ORDER> c;
+
256  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
+
257  }
+
258 
+
259  template<template<uint8_t DATA_PIN, EOrder RGB_ORDER> class CHIPSET, uint8_t DATA_PIN>
+
260  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
261  static CHIPSET<DATA_PIN, RGB> c;
+
262  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
+
263  }
+
264 
+
265  template<template<uint8_t DATA_PIN> class CHIPSET, uint8_t DATA_PIN>
+
266  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
267  static CHIPSET<DATA_PIN> c;
+
268  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
+
269  }
270 
-
271 #endif
-
272 
-
274 
-
275  template<template<EOrder RGB_ORDER> class CHIPSET, EOrder RGB_ORDER>
-
292  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
293  static CHIPSET<RGB_ORDER> c;
-
294  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
-
295  }
-
296 
-
297  template<template<EOrder RGB_ORDER> class CHIPSET>
-
298  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
299  static CHIPSET<RGB> c;
-
300  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
-
301  }
-
302 
-
303 #ifdef USE_OCTOWS2811
-
304  template<OWS2811 CHIPSET, EOrder RGB_ORDER>
-
305  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
-
306  {
-
307  switch(CHIPSET) {
-
308  case OCTOWS2811: { static COctoWS2811Controller<RGB_ORDER> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
-
309  case OCTOWS2811_400: { static COctoWS2811Controller<RGB_ORDER,true> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
-
310  }
+
271  #ifdef FASTSPI_USE_DMX_SIMPLE
+
272  template<EClocklessChipsets CHIPSET, uint8_t DATA_PIN, EOrder RGB_ORDER=RGB>
+
273  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
+
274  {
+
275  switch(CHIPSET) {
+
276  case DMX: { static DMXController<DATA_PIN> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
+
277  }
+
278  }
+
279  #endif
+
280 
+
281 #endif
+
282 
+
284 
+
285  template<template<EOrder RGB_ORDER> class CHIPSET, EOrder RGB_ORDER>
+
302  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
303  static CHIPSET<RGB_ORDER> c;
+
304  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
+
305  }
+
306 
+
307  template<template<EOrder RGB_ORDER> class CHIPSET>
+
308  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
309  static CHIPSET<RGB> c;
+
310  return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset);
311  }
312 
-
313  template<OWS2811 CHIPSET>
-
314  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
-
315  {
-
316  return addLeds<CHIPSET,GRB>(data,nLedsOrOffset,nLedsIfOffset);
-
317  }
-
318 
-
319 #endif
-
320 
-
321 #ifdef SmartMatrix_h
-
322  template<ESM CHIPSET>
-
323  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
-
324  {
-
325  switch(CHIPSET) {
-
326  case SMART_MATRIX: { static CSmartMatrixController controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
-
327  }
-
328  }
+
313 #ifdef USE_OCTOWS2811
+
314  template<OWS2811 CHIPSET, EOrder RGB_ORDER>
+
315  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
+
316  {
+
317  switch(CHIPSET) {
+
318  case OCTOWS2811: { static COctoWS2811Controller<RGB_ORDER> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
+
319  case OCTOWS2811_400: { static COctoWS2811Controller<RGB_ORDER,true> controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
+
320  }
+
321  }
+
322 
+
323  template<OWS2811 CHIPSET>
+
324  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
+
325  {
+
326  return addLeds<CHIPSET,GRB>(data,nLedsOrOffset,nLedsIfOffset);
+
327  }
+
328 
329 #endif
330 
-
331 
-
332 
-
333 #ifdef FASTLED_HAS_BLOCKLESS
-
334 
-
336 
-
337  template<EBlockChipsets CHIPSET, int NUM_LANES, EOrder RGB_ORDER>
-
354  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
355  switch(CHIPSET) {
-
356  #ifdef PORTA_FIRST_PIN
-
357  case WS2811_PORTA: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTA_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
358  case WS2811_400_PORTA: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTA_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
359  #endif
-
360  #ifdef PORTB_FIRST_PIN
-
361  case WS2811_PORTB: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTB_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
362  case WS2811_400_PORTB: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTB_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
363  #endif
-
364  #ifdef PORTC_FIRST_PIN
-
365  case WS2811_PORTC: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTC_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
366  case WS2811_400_PORTC: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTC_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
367  #endif
-
368  #ifdef PORTD_FIRST_PIN
-
369  case WS2811_PORTD: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTD_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
370  case WS2811_400_PORTD: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTD_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
371  #endif
-
372  #ifdef HAS_PORTDC
-
373  case WS2811_PORTDC: return addLeds(new SixteenWayInlineBlockClocklessController<16,NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
374  case WS2811_400_PORTDC: return addLeds(new SixteenWayInlineBlockClocklessController<16,NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
-
375  #endif
-
376  }
-
377  }
-
378 
-
379  template<EBlockChipsets CHIPSET, int NUM_LANES>
-
380  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
-
381  return addLeds<CHIPSET,NUM_LANES,GRB>(data,nLedsOrOffset,nLedsIfOffset);
-
382  }
-
384 #endif
-
385 
-
388  void setBrightness(uint8_t scale) { m_Scale = scale; }
-
389 
-
392  uint8_t getBrightness() { return m_Scale; }
-
393 
-
396  void show(uint8_t scale);
-
397 
-
399  void show() { show(m_Scale); }
-
400 
-
403  void clear(boolean writeData = false);
-
404 
-
406  void clearData();
-
407 
-
411  void showColor(const struct CRGB & color, uint8_t scale);
+
331 #ifdef SmartMatrix_h
+
332  template<ESM CHIPSET>
+
333  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0)
+
334  {
+
335  switch(CHIPSET) {
+
336  case SMART_MATRIX: { static CSmartMatrixController controller; return addLeds(&controller, data, nLedsOrOffset, nLedsIfOffset); }
+
337  }
+
338  }
+
339 #endif
+
340 
+
341 
+
342 
+
343 #ifdef FASTLED_HAS_BLOCKLESS
+
344 
+
346 
+
347  template<EBlockChipsets CHIPSET, int NUM_LANES, EOrder RGB_ORDER>
+
364  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
365  switch(CHIPSET) {
+
366  #ifdef PORTA_FIRST_PIN
+
367  case WS2811_PORTA: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTA_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
368  case WS2811_400_PORTA: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTA_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
369  #endif
+
370  #ifdef PORTB_FIRST_PIN
+
371  case WS2811_PORTB: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTB_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
372  case WS2811_400_PORTB: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTB_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
373  #endif
+
374  #ifdef PORTC_FIRST_PIN
+
375  case WS2811_PORTC: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTC_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
376  case WS2811_400_PORTC: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTC_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
377  #endif
+
378  #ifdef PORTD_FIRST_PIN
+
379  case WS2811_PORTD: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTD_FIRST_PIN, NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
380  case WS2811_400_PORTD: return addLeds(new InlineBlockClocklessController<NUM_LANES, PORTD_FIRST_PIN, NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
381  #endif
+
382  #ifdef HAS_PORTDC
+
383  case WS2811_PORTDC: return addLeds(new SixteenWayInlineBlockClocklessController<16,NS(320), NS(320), NS(640), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
384  case WS2811_400_PORTDC: return addLeds(new SixteenWayInlineBlockClocklessController<16,NS(800), NS(800), NS(900), RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset);
+
385  #endif
+
386  }
+
387  }
+
388 
+
389  template<EBlockChipsets CHIPSET, int NUM_LANES>
+
390  static CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
+
391  return addLeds<CHIPSET,NUM_LANES,GRB>(data,nLedsOrOffset,nLedsIfOffset);
+
392  }
+
394 #endif
+
395 
+
398  void setBrightness(uint8_t scale) { m_Scale = scale; }
+
399 
+
402  uint8_t getBrightness() { return m_Scale; }
+
403 
+
407  inline void setMaxPowerInVoltsAndMilliamps(uint8_t volts, uint32_t milliamps) { setMaxPowerInMilliWatts(volts * milliamps); }
+
408 
+
411  inline void setMaxPowerInMilliWatts(uint32_t milliwatts) { m_pPowerFunc = &calculate_max_brightness_for_power_mW; m_nPowerData = milliwatts; }
412 
-
415  void showColor(const struct CRGB & color) { showColor(color, m_Scale); }
+
415  void show(uint8_t scale);
416 
-
420  void delay(unsigned long ms);
-
421 
-
425  void setTemperature(const struct CRGB & temp);
+
418  void show() { show(m_Scale); }
+
419 
+
422  void clear(boolean writeData = false);
+
423 
+
425  void clearData();
426 
-
430  void setCorrection(const struct CRGB & correction);
+
430  void showColor(const struct CRGB & color, uint8_t scale);
431 
-
435  void setDither(uint8_t ditherMode = BINARY_DITHER);
-
436 
-
444  void setMaxRefreshRate(uint16_t refresh, bool constrain=false);
+
434  void showColor(const struct CRGB & color) { showColor(color, m_Scale); }
+
435 
+
439  void delay(unsigned long ms);
+
440 
+
444  void setTemperature(const struct CRGB & temp);
445 
-
450  void countFPS(int nFrames=25);
-
451 
-
454  uint16_t getFPS() { return m_nFPS; }
+
449  void setCorrection(const struct CRGB & correction);
+
450 
+
454  void setDither(uint8_t ditherMode = BINARY_DITHER);
455 
-
458  int count();
-
459 
-
462  CLEDController & operator[](int x);
-
463 
-
466  int size() { return (*this)[0].size(); }
-
467 
-
470  CRGB *leds() { return (*this)[0].leds(); }
-
471 };
-
472 
-
473 #define FastSPI_LED FastLED
-
474 #define FastSPI_LED2 FastLED
-
475 #ifndef LEDS
-
476 #define LEDS FastLED
-
477 #endif
+
463  void setMaxRefreshRate(uint16_t refresh, bool constrain=false);
+
464 
+
469  void countFPS(int nFrames=25);
+
470 
+
473  uint16_t getFPS() { return m_nFPS; }
+
474 
+
477  int count();
478 
-
479 extern CFastLED FastLED;
-
480 
-
481 // Warnings for undefined things
-
482 #ifndef HAS_HARDWARE_PIN_SUPPORT
-
483 #warning "No pin/port mappings found, pin access will be slightly slower. See fastpin.h for info."
-
484 #define NO_HARDWARE_PIN_SUPPORT
-
485 #endif
+
481  CLEDController & operator[](int x);
+
482 
+
485  int size() { return (*this)[0].size(); }
486 
-
487 
-
488 FASTLED_NAMESPACE_END
-
489 
-
490 #endif
+
489  CRGB *leds() { return (*this)[0].leds(); }
+
490 };
+
491 
+
492 #define FastSPI_LED FastLED
+
493 #define FastSPI_LED2 FastLED
+
494 #ifndef LEDS
+
495 #define LEDS FastLED
+
496 #endif
+
497 
+
498 extern CFastLED FastLED;
+
499 
+
500 // Warnings for undefined things
+
501 #ifndef HAS_HARDWARE_PIN_SUPPORT
+
502 #warning "No pin/port mappings found, pin access will be slightly slower. See fastpin.h for info."
+
503 #define NO_HARDWARE_PIN_SUPPORT
+
504 #endif
+
505 
+
506 
+
507 FASTLED_NAMESPACE_END
+
508 
+
509 #endif
Functions for rotating bits/bytes.
-
Definition: chipsets.h:440
-
static CLEDController & addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a 3rd party library based CLEDController instance to the world.
Definition: FastLED.h:292
-
Definition: FastLED.h:81
+
Definition: chipsets.h:457
+
static CLEDController & addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a 3rd party library based CLEDController instance to the world.
Definition: FastLED.h:302
+
Definition: FastLED.h:84
Representation of an RGB pixel (Red, Green, Blue)
Definition: pixeltypes.h:88
-
CLEDController & operator[](int x)
Get a reference to a registered controller.
Definition: FastLED.cpp:66
-
Definition: FastLED.h:88
-
Definition: chipsets.h:446
-
Definition: FastLED.h:86
+
CLEDController & operator[](int x)
Get a reference to a registered controller.
Definition: FastLED.cpp:73
+
Definition: FastLED.h:93
+
Definition: chipsets.h:463
+
Definition: FastLED.h:91
Base definition for an LED controller.
Definition: controller.h:37
-
int size()
Get the number of leds in the first controller.
Definition: FastLED.h:466
+
int size()
Get the number of leds in the first controller.
Definition: FastLED.h:485
+
Definition: FastLED.h:86
contains definitions that can be used to configure FastLED at compile time
-
Definition: chipsets.h:434
-
uint8_t getBrightness()
Get the current global brightness setting.
Definition: FastLED.h:392
+
Definition: chipsets.h:448
+
uint8_t getBrightness()
Get the current global brightness setting.
Definition: FastLED.h:402
contains definitions for the predefined color palettes supplied by FastLED.
LPD8806 controller class.
Definition: chipsets.h:29
Class base definitions for defining fast pin access.
-
Definition: chipsets.h:443
-
Definition: chipsets.h:461
-
int count()
Get how many controllers have been registered.
Definition: FastLED.cpp:56
-
High level controller interface for FastLED.
Definition: FastLED.h:130
+
Definition: chipsets.h:460
+
Definition: chipsets.h:478
+
void setMaxPowerInVoltsAndMilliamps(uint8_t volts, uint32_t milliamps)
Set the maximum power to be used, given in volts and milliamps.
Definition: FastLED.h:407
+
int count()
Get how many controllers have been registered.
Definition: FastLED.cpp:63
+
High level controller interface for FastLED.
Definition: FastLED.h:137
Definition: dmx.h:14
-
static CLEDController & addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a clockless (aka 3wire, also DMX) based CLEDController instance to the world. ...
Definition: FastLED.h:244
-
Definition: chipsets.h:431
-
Definition: chipsets.h:452
-
Definition: FastLED.h:78
-
Definition: chipsets.h:449
-
Definition: FastLED.h:75
+
static CLEDController & addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a clockless (aka 3wire, also DMX) based CLEDController instance to the world. ...
Definition: FastLED.h:254
+
Definition: chipsets.h:445
+
Definition: chipsets.h:469
+
Definition: FastLED.h:81
+
Definition: chipsets.h:466
+
Definition: FastLED.h:78
WS2801 controller class.
Definition: chipsets.h:103
-
void setDither(uint8_t ditherMode=BINARY_DITHER)
Set the dithering mode.
Definition: FastLED.cpp:136
-
void setTemperature(const struct CRGB &temp)
Set a global color temperature.
Definition: FastLED.cpp:120
-
uint16_t getFPS()
Get the number of frames/second being written out.
Definition: FastLED.h:454
-
Definition: FastLED.h:90
-
Definition: chipsets.h:427
-
CRGB * leds()
Get a pointer to led data for the first controller.
Definition: FastLED.h:470
+
void setDither(uint8_t ditherMode=BINARY_DITHER)
Set the dithering mode.
Definition: FastLED.cpp:143
+
void setTemperature(const struct CRGB &temp)
Set a global color temperature.
Definition: FastLED.cpp:127
+
uint16_t getFPS()
Get the number of frames/second being written out.
Definition: FastLED.h:473
+
void setMaxPowerInMilliWatts(uint32_t milliwatts)
Set the maximum power to be used, given in milliwatts.
Definition: FastLED.h:411
+
Definition: FastLED.h:95
+
Definition: chipsets.h:441
+
Definition: FastLED.h:77
+
CRGB * leds()
Get a pointer to led data for the first controller.
Definition: FastLED.h:489
contains the bulk of the definitions for the various LED chipsets supported.
-
Definition: chipsets.h:455
-
Definition: FastLED.h:74
-
Definition: FastLED.h:73
-
void show()
Update all our controllers with the current led colors.
Definition: FastLED.h:399
-
void setCorrection(const struct CRGB &correction)
Set a global color correction.
Definition: FastLED.cpp:128
-
void showColor(const struct CRGB &color, uint8_t scale)
Set all leds on all controllers to the given color/scale.
Definition: FastLED.cpp:78
-
Definition: FastLED.h:82
-
Definition: FastLED.h:80
+
Definition: chipsets.h:472
+
Definition: FastLED.h:76
+
Definition: FastLED.h:75
+
void show()
Update all our controllers with the current led colors.
Definition: FastLED.h:418
+
void setCorrection(const struct CRGB &correction)
Set a global color correction.
Definition: FastLED.cpp:135
+
void showColor(const struct CRGB &color, uint8_t scale)
Set all leds on all controllers to the given color/scale.
Definition: FastLED.cpp:85
+
Definition: FastLED.h:85
+
Definition: FastLED.h:83
base definitions used by led controllers for writing out led data
-
P9813 controller class.
Definition: chipsets.h:258
-
static CLEDController & addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a CLEDController instance to the world.
Definition: FastLED.cpp:28
-
Definition: FastLED.h:93
+
P9813 controller class.
Definition: chipsets.h:272
+
Definition: chipsets.h:454
+
static CLEDController & addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)
Add a CLEDController instance to the world.
Definition: FastLED.cpp:30
+
Definition: FastLED.h:98
Definition: dmx.h:65
-
void setBrightness(uint8_t scale)
Set the global brightness scaling.
Definition: FastLED.h:388
-
Definition: chipsets.h:458
+
void setBrightness(uint8_t scale)
Set the global brightness scaling.
Definition: FastLED.h:398
+
Definition: chipsets.h:475
Noise functions provided by the library.
functions for color fill, paletters, blending, and more
-
Definition: chipsets.h:437
-
void showColor(const struct CRGB &color)
Set all leds on all controllers to the given color.
Definition: FastLED.h:415
-
Definition: FastLED.h:76
-
Definition: FastLED.h:79
+
Definition: chipsets.h:451
+
void showColor(const struct CRGB &color)
Set all leds on all controllers to the given color.
Definition: FastLED.h:434
+
Definition: FastLED.h:79
+
Definition: FastLED.h:82
APA102 controller class.
Definition: chipsets.h:159
-
void countFPS(int nFrames=25)
for debugging, will keep track of time between calls to countFPS, and every nFrames calls...
Definition: FastLED.cpp:189
+
void countFPS(int nFrames=25)
for debugging, will keep track of time between calls to countFPS, and every nFrames calls...
Definition: FastLED.cpp:196
Definition: chipsets.h:145
-
ESPIChipsets
definitions for the spi chipset constants
Definition: FastLED.h:59
-
void clear(boolean writeData=false)
clear the leds, optionally wiping the local array of data as well
Definition: FastLED.cpp:93
-
Definition: FastLED.h:83
-
Definition: FastLED.h:85
-
Definition: FastLED.h:84
-
void clearData()
clear out the local data array
Definition: FastLED.cpp:100
+
ESPIChipsets
definitions for the spi chipset constants
Definition: FastLED.h:61
+
void clear(boolean writeData=false)
clear the leds, optionally wiping the local array of data as well
Definition: FastLED.cpp:100
+
Definition: FastLED.h:88
+
Definition: FastLED.h:90
+
Definition: FastLED.h:89
+
void clearData()
clear out the local data array
Definition: FastLED.cpp:107
wrapper definitions to allow seamless use of PROGMEM in environmens that have it
-
void setMaxRefreshRate(uint16_t refresh, bool constrain=false)
Set the maximum refresh rate.
Definition: FastLED.cpp:202
-
void delay(unsigned long ms)
Delay for the given number of milliseconds.
Definition: FastLED.cpp:108
-
SM16716 controller class.
Definition: chipsets.h:348
-
Definition: FastLED.h:77
-
Definition: FastLED.h:87
+
Definition: chipsets.h:481
+
void setMaxRefreshRate(uint16_t refresh, bool constrain=false)
Set the maximum refresh rate.
Definition: FastLED.cpp:209
+
void delay(unsigned long ms)
Delay for the given number of milliseconds.
Definition: FastLED.cpp:115
+
Definition: FastLED.h:87
+
SM16716 controller class.
Definition: chipsets.h:362
+
Definition: FastLED.h:80
+
Definition: FastLED.h:92
diff --git a/docs/3.1/annotated.html b/docs/3.1/annotated.html index 2ec50015..a9da1aa7 100644 --- a/docs/3.1/annotated.html +++ b/docs/3.1/annotated.html @@ -124,53 +124,60 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  ESPIChipsets {
@@ -189,7 +202,7 @@ Variables
 CLPD8806ControllerLPD8806 controller class
 CMultiPixelController
 CNEOPIXEL
 COutputPin
 CP9813ControllerP9813 controller class
 CPin
 CPixelControllerPixel controller class
 CqTemplate class for represneting fractional ints
 CSelectable
 CSM16716ControllerSM16716 controller class
 CSoftwareSPIOutput
 CSPIOutput
 CSPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >
 CSPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >
 Csub4Structure representing 32 bits of access
 CtBytesForLong
 CTM1803
 CTM1803Controller400Khz
 CTM1804
 CTM1809
 CTM1809Controller800Khz
 CTM1829
 CTM1829Controller1600Khz
 CTM1829Controller800Khz
 CTRGBGradientPaletteEntryUnion
 CUCS1903
 CUCS1903B
 CUCS1903BController800Khz
 CUCS1903Controller400Khz
 CUCS1904
 CUCS1904Controller800Khz
 CWS2801ControllerWS2801 controller class
 CWS2803Controller
 CWS2811
 CWS2811_400
 CWS2811Controller400Khz
 CWS2811Controller800Khz
 CWS2812
 CWS2812B
 CWS2812Controller800Khz
 CNOPSPIOutputA nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset implementations
 COutputPin
 CP9813ControllerP9813 controller class
 CPin
 CPixelControllerPixel controller class
 CPL9823
 CPL9823Controller
 CqTemplate class for represneting fractional ints
 CREFHardwareSPIOutput
 CSelectable
 CSK6812
 CSK6812Controller
 CSM16716ControllerSM16716 controller class
 CSoftwareSPIOutput
 CSPIOutput
 CSPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >
 CSPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >
 CSPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >
 Csub4Structure representing 32 bits of access
 CtBytesForLong
 CTM1803
 CTM1803Controller400Khz
 CTM1804
 CTM1809
 CTM1809Controller800Khz
 CTM1812
 CTM1829
 CTM1829Controller1600Khz
 CTM1829Controller800Khz
 CTRGBGradientPaletteEntryUnion
 CUCS1903
 CUCS1903B
 CUCS1903BController800Khz
 CUCS1903Controller400Khz
 CUCS1904
 CUCS1904Controller800Khz
 CWS2801ControllerWS2801 controller class
 CWS2803Controller
 CWS2811
 CWS2811_400
 CWS2811Controller400Khz
 CWS2811Controller800Khz
 CWS2812
 CWS2812B
 CWS2812Controller800Khz
diff --git a/docs/3.1/bitswap_8h.html b/docs/3.1/bitswap_8h.html index e5fc573c..4eb934e9 100644 --- a/docs/3.1/bitswap_8h.html +++ b/docs/3.1/bitswap_8h.html @@ -120,7 +120,7 @@ Functions diff --git a/docs/3.1/bitswap_8h_source.html b/docs/3.1/bitswap_8h_source.html index f216bd49..e53e20e1 100644 --- a/docs/3.1/bitswap_8h_source.html +++ b/docs/3.1/bitswap_8h_source.html @@ -351,7 +351,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/chipsets_8h.html b/docs/3.1/chipsets_8h.html index 3c4fcc47..761e8b47 100644 --- a/docs/3.1/chipsets_8h.html +++ b/docs/3.1/chipsets_8h.html @@ -122,6 +122,8 @@ Classes   class  WS2811Controller400Khz< DATA_PIN, RGB_ORDER >   +class  SK6812Controller< DATA_PIN, RGB_ORDER > +  class  UCS1903Controller400Khz< DATA_PIN, RGB_ORDER >   class  UCS1903BController800Khz< DATA_PIN, RGB_ORDER > @@ -138,6 +140,8 @@ Classes   class  GW6205Controller800Khz< DATA_PIN, RGB_ORDER >   +class  PL9823Controller< DATA_PIN, RGB_ORDER > +  class  GW6205Controller400Khz< DATA_PIN, RGB_ORDER >   class  GW6205Controller800Khz< DATA_PIN, RGB_ORDER > @@ -164,13 +168,17 @@ Classes   class  LPD1886Controller1250Khz< DATA_PIN, RGB_ORDER >   +class  SK6812Controller< DATA_PIN, RGB_ORDER > +  +class  PL9823Controller< DATA_PIN, RGB_ORDER >

Detailed Description

contains the bulk of the definitions for the various LED chipsets supported.

diff --git a/docs/3.1/chipsets_8h_source.html b/docs/3.1/chipsets_8h_source.html index 760db1a2..8136edb6 100644 --- a/docs/3.1/chipsets_8h_source.html +++ b/docs/3.1/chipsets_8h_source.html @@ -247,401 +247,392 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
187 
188  startBoundary();
189  for(int i = 0; i < nLeds; i++) {
-
190  uint8_t b = pixels.loadAndScale0();
-
191  mSPI.writeWord(0xFF00 | b);
-
192  uint16_t w = pixels.loadAndScale1() << 8;
-
193  w |= pixels.loadAndScale2();
-
194  mSPI.writeWord(w);
-
195  pixels.stepDithering();
-
196  }
-
197  endBoundary(nLeds);
-
198 
-
199  mSPI.waitFully();
-
200  mSPI.release();
-
201  }
-
202 
-
203  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
-
204  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
+
190 #ifdef FASTLED_SPI_BYTE_ONLY
+
191  mSPI.writeByte(0xFF);
+
192  mSPI.writeByte(pixels.loadAndScale0());
+
193  mSPI.writeByte(pixels.loadAndScale1());
+
194  mSPI.writeByte(pixels.loadAndScale2());
+
195 #else
+
196  uint16_t b = 0xFF00 | (uint16_t)pixels.loadAndScale0();
+
197  mSPI.writeWord(b);
+
198  uint16_t w = pixels.loadAndScale1() << 8;
+
199  w |= pixels.loadAndScale2();
+
200  mSPI.writeWord(w);
+
201 #endif
+
202  pixels.stepDithering();
+
203  }
+
204  endBoundary(nLeds);
205 
-
206  mSPI.select();
-
207 
-
208  startBoundary();
-
209  for(int i = 0; i < nLeds; i++) {
-
210  uint16_t b = 0xFF00 | (uint16_t)pixels.loadAndScale0();
-
211  mSPI.writeWord(b);
-
212  uint16_t w = pixels.loadAndScale1() << 8;
-
213  w |= pixels.loadAndScale2();
-
214  mSPI.writeWord(w);
-
215  pixels.advanceData();
-
216  pixels.stepDithering();
-
217  }
-
218  endBoundary(nLeds);
-
219  mSPI.waitFully();
-
220  mSPI.release();
-
221  }
-
222 
-
223 #ifdef SUPPORT_ARGB
-
224  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
-
225  PixelController<RGB_ORDER> pixels(data, nLeds,, scale, getDither());
-
226 
-
227  mSPI.select();
-
228 
-
229  startBoundary();
-
230  for(int i = 0; i < nLeds; i++) {
-
231  mSPI.writeByte(0xFF);
-
232  uint8_t b = pixels.loadAndScale0(); mSPI.writeByte(b);
-
233  b = pixels.loadAndScale1(); mSPI.writeByte(b);
-
234  b = pixels.loadAndScale2(); mSPI.writeByte(b);
-
235  pixels.advanceData();
-
236  pixels.stepDithering();
-
237  }
-
238  endBoundary(nLeds);
-
239  mSPI.waitFully();
-
240  mSPI.release();
-
241  }
-
242 #endif
-
243 };
-
244 
-
245 
-
247 //
-
248 // P9813 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)
-
249 //
-
251 
-
257 template <uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t SPI_SPEED = DATA_RATE_MHZ(10)>
-
258 class P9813Controller : public CLEDController {
-
259  typedef SPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED> SPI;
-
260  SPI mSPI;
-
261 
-
262  void writeBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }
-
263 
-
264  inline void writeLed(uint8_t r, uint8_t g, uint8_t b) __attribute__((always_inline)) {
-
265  register uint8_t top = 0xC0 | ((~b & 0xC0) >> 2) | ((~g & 0xC0) >> 4) | ((~r & 0xC0) >> 6);
-
266  mSPI.writeByte(top); mSPI.writeByte(b); mSPI.writeByte(g); mSPI.writeByte(r);
-
267  }
-
268 
-
269 public:
-
270  P9813Controller() {}
-
271 
-
272  virtual void init() {
-
273  mSPI.init();
-
274  }
+
206  mSPI.waitFully();
+
207  mSPI.release();
+
208  }
+
209 
+
210  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
+
211  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
+
212 
+
213  mSPI.select();
+
214 
+
215  startBoundary();
+
216  for(int i = 0; i < nLeds; i++) {
+
217 #ifdef FASTLED_SPI_BYTE_ONLY
+
218  mSPI.writeByte(0xFF);
+
219  mSPI.writeByte(pixels.loadAndScale0());
+
220  mSPI.writeByte(pixels.loadAndScale1());
+
221  mSPI.writeByte(pixels.loadAndScale2());
+
222 #else
+
223  uint16_t b = 0xFF00 | (uint16_t)pixels.loadAndScale0();
+
224  mSPI.writeWord(b);
+
225  uint16_t w = pixels.loadAndScale1() << 8;
+
226  w |= pixels.loadAndScale2();
+
227  mSPI.writeWord(w);
+
228 #endif
+
229  pixels.stepDithering();
+
230  pixels.advanceData();
+
231  }
+
232  endBoundary(nLeds);
+
233  mSPI.waitFully();
+
234  mSPI.release();
+
235  }
+
236 
+
237 #ifdef SUPPORT_ARGB
+
238  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
+
239  PixelController<RGB_ORDER> pixels(data, nLeds,, scale, getDither());
+
240 
+
241  mSPI.select();
+
242 
+
243  startBoundary();
+
244  for(int i = 0; i < nLeds; i++) {
+
245  mSPI.writeByte(0xFF);
+
246  uint8_t b = pixels.loadAndScale0(); mSPI.writeByte(b);
+
247  b = pixels.loadAndScale1(); mSPI.writeByte(b);
+
248  b = pixels.loadAndScale2(); mSPI.writeByte(b);
+
249  pixels.advanceData();
+
250  pixels.stepDithering();
+
251  }
+
252  endBoundary(nLeds);
+
253  mSPI.waitFully();
+
254  mSPI.release();
+
255  }
+
256 #endif
+
257 };
+
258 
+
259 
+
261 //
+
262 // P9813 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)
+
263 //
+
265 
+
271 template <uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t SPI_SPEED = DATA_RATE_MHZ(10)>
+
272 class P9813Controller : public CLEDController {
+
273  typedef SPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED> SPI;
+
274  SPI mSPI;
275 
-
276  virtual void clearLeds(int nLeds) {
-
277  showColor(CRGB(0,0,0), nLeds, CRGB(0,0,0));
-
278  }
-
279 
-
280 protected:
-
281 
-
282  virtual void showColor(const struct CRGB & data, int nLeds, CRGB scale) {
-
283  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
-
284 
-
285  mSPI.select();
-
286 
-
287  writeBoundary();
-
288  while(nLeds--) {
-
289  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
-
290  pixels.stepDithering();
-
291  }
-
292  writeBoundary();
+
276  void writeBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }
+
277 
+
278  inline void writeLed(uint8_t r, uint8_t g, uint8_t b) __attribute__((always_inline)) {
+
279  register uint8_t top = 0xC0 | ((~b & 0xC0) >> 2) | ((~g & 0xC0) >> 4) | ((~r & 0xC0) >> 6);
+
280  mSPI.writeByte(top); mSPI.writeByte(b); mSPI.writeByte(g); mSPI.writeByte(r);
+
281  }
+
282 
+
283 public:
+
284  P9813Controller() {}
+
285 
+
286  virtual void init() {
+
287  mSPI.init();
+
288  }
+
289 
+
290  virtual void clearLeds(int nLeds) {
+
291  showColor(CRGB(0,0,0), nLeds, CRGB(0,0,0));
+
292  }
293 
-
294  mSPI.waitFully();
-
295  mSPI.release();
-
296  }
-
297 
-
298  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
-
299  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
+
294 protected:
+
295 
+
296  virtual void showColor(const struct CRGB & data, int nLeds, CRGB scale) {
+
297  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
+
298 
+
299  mSPI.select();
300 
-
301  mSPI.select();
-
302 
-
303  writeBoundary();
-
304  for(int i = 0; i < nLeds; i++) {
-
305  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
-
306  pixels.advanceData();
-
307  pixels.stepDithering();
-
308  }
-
309  writeBoundary();
-
310  mSPI.waitFully();
+
301  writeBoundary();
+
302  while(nLeds--) {
+
303  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
+
304  pixels.stepDithering();
+
305  }
+
306  writeBoundary();
+
307 
+
308  mSPI.waitFully();
+
309  mSPI.release();
+
310  }
311 
-
312  mSPI.release();
-
313  }
+
312  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
+
313  PixelController<RGB_ORDER> pixels(data, nLeds, scale, getDither());
314 
-
315 #ifdef SUPPORT_ARGB
-
316  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
-
317  PixelController<RGB_ORDER> pixels(data, nLeds,, scale, getDither());
-
318 
-
319  mSPI.select();
-
320 
-
321  writeBoundary();
-
322  for(int i = 0; i < nLeds; i++) {
-
323  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
-
324  pixels.advanceData();
-
325  pixels.stepDithering();
-
326  }
-
327  writeBoundary();
-
328  mSPI.waitFully();
-
329 
-
330  mSPI.release();
-
331  }
-
332 #endif
-
333 };
+
315  mSPI.select();
+
316 
+
317  writeBoundary();
+
318  for(int i = 0; i < nLeds; i++) {
+
319  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
+
320  pixels.advanceData();
+
321  pixels.stepDithering();
+
322  }
+
323  writeBoundary();
+
324  mSPI.waitFully();
+
325 
+
326  mSPI.release();
+
327  }
+
328 
+
329 #ifdef SUPPORT_ARGB
+
330  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
+
331  PixelController<RGB_ORDER> pixels(data, nLeds,, scale, getDither());
+
332 
+
333  mSPI.select();
334 
-
335 
-
337 //
-
338 // SM16716 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)
-
339 //
-
341 
-
347 template <uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t SPI_SPEED = DATA_RATE_MHZ(16)>
-
348 class SM16716Controller : public CLEDController {
-
349  typedef SPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED> SPI;
-
350  SPI mSPI;
-
351 
-
352  void writeHeader() {
-
353  // Write out 50 zeros to the spi line (6 blocks of 8 followed by two single bit writes)
-
354  mSPI.select();
-
355  mSPI.writeBytesValueRaw(0, 6);
-
356  mSPI.waitFully();
-
357  mSPI.template writeBit<0>(0);
-
358  mSPI.template writeBit<0>(0);
-
359  mSPI.release();
-
360  }
-
361 
-
362 public:
-
363  SM16716Controller() {}
-
364 
-
365  virtual void init() {
-
366  mSPI.init();
-
367  }
-
368 
-
369  virtual void clearLeds(int nLeds) {
-
370  mSPI.select();
-
371  while(nLeds--) {
-
372  mSPI.template writeBit<0>(1);
-
373  mSPI.writeByte(0);
-
374  mSPI.writeByte(0);
-
375  mSPI.writeByte(0);
-
376  }
-
377  mSPI.waitFully();
-
378  mSPI.release();
-
379  writeHeader();
-
380  }
-
381 
-
382 protected:
-
383 
-
384  virtual void showColor(const struct CRGB & data, int nLeds, CRGB scale) {
-
385  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>(PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
-
386  writeHeader();
-
387  }
-
388 
-
389  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
-
390  // Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start
-
391  // of each triplet of bytes for rgb data
-
392  // writeHeader();
-
393  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>( PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
-
394  writeHeader();
-
395  }
-
396 
-
397 #ifdef SUPPORT_ARGB
-
398  virtual void show(const struct CARGB *data, int nLeds, CRGB scale) {
-
399  mSPI.writeBytesValue(0, 6);
-
400  mSPI.template writeBit<0>(0);
-
401  mSPI.template writeBit<0>(0);
+
335  writeBoundary();
+
336  for(int i = 0; i < nLeds; i++) {
+
337  writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());
+
338  pixels.advanceData();
+
339  pixels.stepDithering();
+
340  }
+
341  writeBoundary();
+
342  mSPI.waitFully();
+
343 
+
344  mSPI.release();
+
345  }
+
346 #endif
+
347 };
+
348 
+
349 
+
351 //
+
352 // SM16716 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)
+
353 //
+
355 
+
361 template <uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t SPI_SPEED = DATA_RATE_MHZ(16)>
+
362 class SM16716Controller : public CLEDController {
+
363  typedef SPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED> SPI;
+
364  SPI mSPI;
+
365 
+
366  void writeHeader() {
+
367  // Write out 50 zeros to the spi line (6 blocks of 8 followed by two single bit writes)
+
368  mSPI.select();
+
369  mSPI.writeBytesValueRaw(0, 6);
+
370  mSPI.waitFully();
+
371  mSPI.template writeBit<0>(0);
+
372  mSPI.template writeBit<0>(0);
+
373  mSPI.release();
+
374  }
+
375 
+
376 public:
+
377  SM16716Controller() {}
+
378 
+
379  virtual void init() {
+
380  mSPI.init();
+
381  }
+
382 
+
383  virtual void clearLeds(int nLeds) {
+
384  mSPI.select();
+
385  while(nLeds--) {
+
386  mSPI.template writeBit<0>(1);
+
387  mSPI.writeByte(0);
+
388  mSPI.writeByte(0);
+
389  mSPI.writeByte(0);
+
390  }
+
391  mSPI.waitFully();
+
392  mSPI.release();
+
393  writeHeader();
+
394  }
+
395 
+
396 protected:
+
397 
+
398  virtual void showColor(const struct CRGB & data, int nLeds, CRGB scale) {
+
399  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>(PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
+
400  writeHeader();
+
401  }
402 
-
403  // Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start
-
404  // of each triplet of bytes for rgb data
-
405  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>(PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
-
406  }
-
407 #endif
-
408 };
-
411 //
-
412 // Clockless template instantiations - see clockless.h for how the timing values are used
-
413 //
-
415 
-
416 #ifdef FASTLED_HAS_CLOCKLESS
-
417 
-
421 // We want to force all avr's to use the Trinket controller when running at 8Mhz, because even the 328's at 8Mhz
-
422 // need the more tightly defined timeframes.
-
423 #if (F_CPU == 8000000 || F_CPU == 16000000 || F_CPU == 24000000) // || F_CPU == 48000000 || F_CPU == 96000000) // 125ns/clock
-
424 #define FMUL (F_CPU/8000000)
-
425 // LPD1886
-
426 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
427 class LPD1886Controller1250Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 3 * FMUL, 2 * FMUL, RGB_ORDER, 4> {};
-
428 
-
429 // WS2811@800khz 2 clocks, 5 clocks, 3 clocks
-
430 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
431 class WS2812Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
-
432 
-
433 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
434 class WS2811Controller800Khz : public ClocklessController<DATA_PIN, 3 * FMUL, 4 * FMUL, 3 * FMUL, RGB_ORDER> {};
-
435 
-
436 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
437 class WS2811Controller400Khz : public ClocklessController<DATA_PIN, 4 * FMUL, 10 * FMUL, 6 * FMUL, RGB_ORDER> {};
-
438 
-
439 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
440 class UCS1903Controller400Khz : public ClocklessController<DATA_PIN, 4 * FMUL, 12 * FMUL, 4 * FMUL, RGB_ORDER> {};
-
441 
-
442 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
443 class UCS1903BController800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER> {};
-
444 
-
445 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
446 class UCS1904Controller800Khz : public ClocklessController<DATA_PIN, 3 * FMUL, 3 * FMUL, 4 * FMUL, RGB_ORDER> {};
-
447 
-
448 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
449 class TM1809Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
-
450 
-
451 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
452 class TM1803Controller400Khz : public ClocklessController<DATA_PIN, 6 * FMUL, 9 * FMUL, 6 * FMUL, RGB_ORDER> {};
-
453 
-
454 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
455 class TM1829Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
-
456 
-
457 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
458 class GW6205Controller400Khz : public ClocklessController<DATA_PIN, 6 * FMUL, 7 * FMUL, 6 * FMUL, RGB_ORDER, 4> {};
-
459 
-
460 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
461 class GW6205Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER, 4> {};
-
462 
-
463 #else
-
464 // GW6205@400khz - 800ns, 800ns, 800ns
+
403  virtual void show(const struct CRGB *data, int nLeds, CRGB scale) {
+
404  // Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start
+
405  // of each triplet of bytes for rgb data
+
406  // writeHeader();
+
407  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>( PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
+
408  writeHeader();
+
409  }
+
410 
+
411 #ifdef SUPPORT_ARGB
+
412  virtual void show(const struct CARGB *data, int nLeds, CRGB scale) {
+
413  mSPI.writeBytesValue(0, 6);
+
414  mSPI.template writeBit<0>(0);
+
415  mSPI.template writeBit<0>(0);
+
416 
+
417  // Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start
+
418  // of each triplet of bytes for rgb data
+
419  mSPI.template writePixels<FLAG_START_BIT, DATA_NOP, RGB_ORDER>(PixelController<RGB_ORDER>(data, nLeds, scale, getDither()));
+
420  }
+
421 #endif
+
422 };
+
425 //
+
426 // Clockless template instantiations - see clockless.h for how the timing values are used
+
427 //
+
429 
+
430 #ifdef FASTLED_HAS_CLOCKLESS
+
431 
+
435 // We want to force all avr's to use the Trinket controller when running at 8Mhz, because even the 328's at 8Mhz
+
436 // need the more tightly defined timeframes.
+
437 #if (F_CPU == 8000000 || F_CPU == 16000000 || F_CPU == 24000000) // || F_CPU == 48000000 || F_CPU == 96000000) // 125ns/clock
+
438 #define FMUL (F_CPU/8000000)
+
439 // LPD1886
+
440 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
441 class LPD1886Controller1250Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 3 * FMUL, 2 * FMUL, RGB_ORDER, 4> {};
+
442 
+
443 // WS2811@800khz 2 clocks, 5 clocks, 3 clocks
+
444 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
445 class WS2812Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
+
446 
+
447 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
448 class WS2811Controller800Khz : public ClocklessController<DATA_PIN, 3 * FMUL, 4 * FMUL, 3 * FMUL, RGB_ORDER> {};
+
449 
+
450 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
451 class WS2811Controller400Khz : public ClocklessController<DATA_PIN, 4 * FMUL, 10 * FMUL, 6 * FMUL, RGB_ORDER> {};
+
452 
+
453 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
454 class SK6812Controller : public ClocklessController<DATA_PIN, 3 * FMUL, 3 * FMUL, 4 * FMUL, RGB_ORDER> {};
+
455 
+
456 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
457 class UCS1903Controller400Khz : public ClocklessController<DATA_PIN, 4 * FMUL, 12 * FMUL, 4 * FMUL, RGB_ORDER> {};
+
458 
+
459 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
460 class UCS1903BController800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER> {};
+
461 
+
462 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
463 class UCS1904Controller800Khz : public ClocklessController<DATA_PIN, 3 * FMUL, 3 * FMUL, 4 * FMUL, RGB_ORDER> {};
+
464 
465 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
466 class GW6205Controller400Khz : public ClocklessController<DATA_PIN, NS(800), NS(800), NS(800), RGB_ORDER, 4> {};
-
467 #if NO_TIME(800, 800, 800)
-
468 #warning "Not enough clock cycles available for the GW6205@400khz"
-
469 #endif
+
466 class TM1809Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
+
467 
+
468 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
469 class TM1803Controller400Khz : public ClocklessController<DATA_PIN, 6 * FMUL, 9 * FMUL, 6 * FMUL, RGB_ORDER> {};
470 
-
471 // GW6205@400khz - 400ns, 400ns, 400ns
-
472 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
473 class GW6205Controller800Khz : public ClocklessController<DATA_PIN, NS(400), NS(400), NS(400), RGB_ORDER, 4> {};
-
474 #if NO_TIME(400, 400, 400)
-
475 #warning "Not enough clock cycles available for the GW6205@400khz"
-
476 #endif
-
477 
-
478 // UCS1903 - 500ns, 1500ns, 500ns
-
479 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
480 class UCS1903Controller400Khz : public ClocklessController<DATA_PIN, NS(500), NS(1500), NS(500), RGB_ORDER> {};
-
481 #if NO_TIME(500, 1500, 500)
-
482 #warning "Not enough clock cycles available for the UCS1903@400khz"
-
483 #endif
-
484 
-
485 // UCS1903B - 400ns, 450ns, 450ns
-
486 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
487 class UCS1903BController800Khz : public ClocklessController<DATA_PIN, NS(400), NS(450), NS(450), RGB_ORDER> {};
-
488 #if NO_TIME(400, 450, 450)
-
489 #warning "Not enough clock cycles available for the UCS1903B@800khz"
-
490 #endif
+
471 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
472 class TM1829Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {};
+
473 
+
474 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
475 class GW6205Controller400Khz : public ClocklessController<DATA_PIN, 6 * FMUL, 7 * FMUL, 6 * FMUL, RGB_ORDER, 4> {};
+
476 
+
477 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
478 class GW6205Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER, 4> {};
+
479 
+
480 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
481 class PL9823Controller : public ClocklessController<DATA_PIN, 3 * FMUL, 8 * FMUL, 3 * FMUL, RGB_ORDER> {};
+
482 
+
483 #else
+
484 // GW6205@400khz - 800ns, 800ns, 800ns
+
485 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
486 class GW6205Controller400Khz : public ClocklessController<DATA_PIN, NS(800), NS(800), NS(800), RGB_ORDER, 4> {};
+
487 
+
488 // GW6205@400khz - 400ns, 400ns, 400ns
+
489 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
490 class GW6205Controller800Khz : public ClocklessController<DATA_PIN, NS(400), NS(400), NS(400), RGB_ORDER, 4> {};
491 
-
492 // UCS1904 - 400ns, 400ns, 450ns
+
492 // UCS1903 - 500ns, 1500ns, 500ns
493 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
494 class UCS1904Controller800Khz : public ClocklessController<DATA_PIN, NS(400), NS(400), NS(450), RGB_ORDER> {};
-
495 #if NO_TIME(400, 400, 450)
-
496 #warning "Not enough clock cycles available for the UCS1904@800khz"
-
497 #endif
-
498 
-
499 // TM1809 - 350ns, 350ns, 550ns
-
500 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
501 class TM1809Controller800Khz : public ClocklessController<DATA_PIN, NS(350), NS(350), NS(450), RGB_ORDER> {};
-
502 #if NO_TIME(350, 350, 550)
-
503 #warning "Not enough clock cycles available for the TM1809"
-
504 #endif
-
505 
-
506 // WS2811 - 320ns, 320ns, 640ns
-
507 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
508 class WS2811Controller800Khz : public ClocklessController<DATA_PIN, NS(320), NS(320), NS(640), RGB_ORDER> {};
-
509 #if NO_TIME(320, 320, 640)
-
510 #warning "Not enough clock cycles available for the WS2811 (800khz)"
-
511 #endif
-
512 
-
513 // WS2812 - 250ns, 625ns, 375ns
-
514 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
515 class WS2812Controller800Khz : public ClocklessController<DATA_PIN, NS(250), NS(625), NS(375), RGB_ORDER> {};
-
516 #if NO_TIME(250, 625, 375)
-
517 #warning "Not enough clock cycles available for the WS2812 (800khz)"
-
518 #endif
+
494 class UCS1903Controller400Khz : public ClocklessController<DATA_PIN, NS(500), NS(1500), NS(500), RGB_ORDER> {};
+
495 
+
496 // UCS1903B - 400ns, 450ns, 450ns
+
497 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
498 class UCS1903BController800Khz : public ClocklessController<DATA_PIN, NS(400), NS(450), NS(450), RGB_ORDER> {};
+
499 
+
500 // UCS1904 - 400ns, 400ns, 450ns
+
501 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
502 class UCS1904Controller800Khz : public ClocklessController<DATA_PIN, NS(400), NS(400), NS(450), RGB_ORDER> {};
+
503 
+
504 // TM1809 - 350ns, 350ns, 550ns
+
505 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
506 class TM1809Controller800Khz : public ClocklessController<DATA_PIN, NS(350), NS(350), NS(450), RGB_ORDER> {};
+
507 
+
508 // WS2811 - 320ns, 320ns, 640ns
+
509 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
510 class WS2811Controller800Khz : public ClocklessController<DATA_PIN, NS(320), NS(320), NS(640), RGB_ORDER> {};
+
511 
+
512 // WS2812 - 250ns, 625ns, 375ns
+
513 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
514 class WS2812Controller800Khz : public ClocklessController<DATA_PIN, NS(250), NS(625), NS(375), RGB_ORDER> {};
+
515 
+
516 // WS2811@400khz - 800ns, 800ns, 900ns
+
517 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
518 class WS2811Controller400Khz : public ClocklessController<DATA_PIN, NS(800), NS(800), NS(900), RGB_ORDER> {};
519 
-
520 // WS2811@400khz - 800ns, 800ns, 900ns
+
520 // 750NS, 750NS, 750NS
521 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
522 class WS2811Controller400Khz : public ClocklessController<DATA_PIN, NS(800), NS(800), NS(900), RGB_ORDER> {};
-
523 #if NO_TIME(800, 800, 900)
-
524 #warning "Not enough clock cycles available for the WS2811 (400Khz)"
-
525 #endif
+
522 class TM1803Controller400Khz : public ClocklessController<DATA_PIN, NS(700), NS(1100), NS(700), RGB_ORDER> {};
+
523 
+
524 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
525 class TM1829Controller800Khz : public ClocklessController<DATA_PIN, NS(340), NS(340), NS(550), RGB_ORDER, 0, true, 500> {};
526 
-
527 // 750NS, 750NS, 750NS
-
528 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
529 class TM1803Controller400Khz : public ClocklessController<DATA_PIN, NS(700), NS(1100), NS(700), RGB_ORDER> {};
-
530 #if NO_TIME(750, 750, 750)
-
531 #warning "Not enough clock cycles available for the TM1803"
-
532 #endif
-
533 
-
534 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
535 class TM1829Controller800Khz : public ClocklessController<DATA_PIN, NS(340), NS(340), NS(550), RGB_ORDER, 0, true, 500> {};
-
536 
-
537 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
538 class TM1829Controller1600Khz : public ClocklessController<DATA_PIN, NS(100), NS(300), NS(200), RGB_ORDER, 0, true, 500> {};
-
539 #if NO_TIME(100, 300, 200)
-
540 #warning "Not enough clock cycles available for TM1829@1.6Mhz"
+
527 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
528 class TM1829Controller1600Khz : public ClocklessController<DATA_PIN, NS(100), NS(300), NS(200), RGB_ORDER, 0, true, 500> {};
+
529 
+
530 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
531 class LPD1886Controller1250Khz : public ClocklessController<DATA_PIN, NS(200), NS(400), NS(200), RGB_ORDER, 4> {};
+
532 
+
533 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
534 class SK6812Controller : public ClocklessController<DATA_PIN, NS(300), NS(300), NS(600), RGB_ORDER> {};
+
535 
+
536 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
+
537 class PL9823Controller : public ClocklessController<DATA_PIN, NS(350), NS(1010), NS(350), RGB_ORDER> {};
+
538 #endif
+
539 
541 #endif
-
542 
-
543 template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB>
-
544 class LPD1886Controller1250Khz : public ClocklessController<DATA_PIN, NS(200), NS(400), NS(200), RGB_ORDER, 4> {};
-
545 #if NO_TIME(200,400,200)
-
546 #warning "Not enough clock cycles for LPD1886"
-
547 #endif
-
548 
-
549 #endif
-
550 
-
552 #endif
-
553 FASTLED_NAMESPACE_END
-
555 
-
556 #endif
+
542 FASTLED_NAMESPACE_END
+
544 
+
545 #endif
-
Definition: chipsets.h:440
+
Definition: chipsets.h:457
Representation of an RGB pixel (Red, Green, Blue)
Definition: pixeltypes.h:88
-
Definition: chipsets.h:446
+
Definition: chipsets.h:463
Base definition for an LED controller.
Definition: controller.h:37
virtual void init()
initialize the LED controller
Definition: chipsets.h:110
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:73
-
Definition: chipsets.h:434
-
Definition: chipsets.h:538
+
Definition: chipsets.h:448
+
Definition: chipsets.h:528
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:63
LPD8806 controller class.
Definition: chipsets.h:29
-
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:203
-
Definition: chipsets.h:443
-
virtual void init()
initialize the LED controller
Definition: chipsets.h:272
-
virtual void init()
initialize the LED controller
Definition: chipsets.h:365
-
Definition: chipsets.h:461
+
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:210
+
Definition: chipsets.h:460
+
virtual void init()
initialize the LED controller
Definition: chipsets.h:286
+
virtual void init()
initialize the LED controller
Definition: chipsets.h:379
+
Definition: chipsets.h:478
virtual void init()
initialize the LED controller
Definition: chipsets.h:173
virtual void init()
initialize the LED controller
Definition: chipsets.h:58
-
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:282
-
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:369
-
Pixel controller class.
Definition: controller.h:184
-
Definition: chipsets.h:431
-
Definition: chipsets.h:452
-
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:298
-
Definition: chipsets.h:449
+
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:296
+
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:383
+
Pixel controller class.
Definition: controller.h:187
+
Definition: chipsets.h:445
+
Definition: chipsets.h:469
+
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:312
+
Definition: chipsets.h:466
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:177
WS2801 controller class.
Definition: chipsets.h:103
-
Definition: chipsets.h:427
+
Definition: chipsets.h:441
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:115
-
Definition: chipsets.h:455
+
Definition: chipsets.h:472
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:77
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:123
-
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:276
-
P9813 controller class.
Definition: chipsets.h:258
-
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:389
+
virtual void clearLeds(int nLeds)
clear out/zero out the given number of leds.
Definition: chipsets.h:290
+
P9813 controller class.
Definition: chipsets.h:272
+
Definition: chipsets.h:454
+
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:403
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:183
-
Definition: chipsets.h:458
-
Definition: chipsets.h:437
+
Definition: chipsets.h:475
+
Definition: chipsets.h:451
uint8_t getDither()
get the dithering option currently set for this controller
Definition: controller.h:138
APA102 controller class.
Definition: chipsets.h:159
Definition: chipsets.h:145
__attribute__((always_inline)) inline void swapbits8(bitswap_type in
Do an 8byte by 8bit rotation.
Definition: fastled_delay.h:85
-
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:384
-
SM16716 controller class.
Definition: chipsets.h:348
+
Definition: chipsets.h:481
+
virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)
set all the leds on the controller to a given color
Definition: chipsets.h:398
+
SM16716 controller class.
Definition: chipsets.h:362
virtual void show(const struct CRGB *data, int nLeds, CRGB scale)
write the passed in rgb data out to the leds managed by this controller
Definition: chipsets.h:129
diff --git a/docs/3.1/class_a_p_a102_controller-members.html b/docs/3.1/class_a_p_a102_controller-members.html index e9eb8dab..ee9a6886 100644 --- a/docs/3.1/class_a_p_a102_controller-members.html +++ b/docs/3.1/class_a_p_a102_controller-members.html @@ -96,44 +96,45 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline show(const struct CRGB *data, int nLeds, CRGB scale)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)APA102Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_a_p_a102_controller.html b/docs/3.1/class_a_p_a102_controller.html index 55d31abc..adf9aea0 100644 --- a/docs/3.1/class_a_p_a102_controller.html +++ b/docs/3.1/class_a_p_a102_controller.html @@ -159,10 +159,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -234,6 +234,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -444,7 +447,7 @@ template<uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = BGR, uint8_t diff --git a/docs/3.1/class_a_p_a104.html b/docs/3.1/class_a_p_a104.html index 2fafaa1e..626a454e 100644 --- a/docs/3.1/class_a_p_a104.html +++ b/docs/3.1/class_a_p_a104.html @@ -109,7 +109,7 @@ Collaboration diagram for APA104< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_a_v_r_software_s_p_i_output-members.html b/docs/3.1/class_a_v_r_software_s_p_i_output-members.html index 2ec62dc0..bde37efc 100644 --- a/docs/3.1/class_a_v_r_software_s_p_i_output-members.html +++ b/docs/3.1/class_a_v_r_software_s_p_i_output-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_a_v_r_software_s_p_i_output.html b/docs/3.1/class_a_v_r_software_s_p_i_output.html index 4d0137ec..87462115 100644 --- a/docs/3.1/class_a_v_r_software_s_p_i_output.html +++ b/docs/3.1/class_a_v_r_software_s_p_i_output.html @@ -140,7 +140,7 @@ static void writeByte diff --git a/docs/3.1/class_c_every_n_time_periods-members.html b/docs/3.1/class_c_every_n_time_periods-members.html index efe600ea..91e2cc9a 100644 --- a/docs/3.1/class_c_every_n_time_periods-members.html +++ b/docs/3.1/class_c_every_n_time_periods-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_every_n_time_periods.html b/docs/3.1/class_c_every_n_time_periods.html index 47de0658..485d1fbe 100644 --- a/docs/3.1/class_c_every_n_time_periods.html +++ b/docs/3.1/class_c_every_n_time_periods.html @@ -145,7 +145,7 @@ timeType mPeriod< diff --git a/docs/3.1/class_c_fast_l_e_d-members.html b/docs/3.1/class_c_fast_l_e_d-members.html index 5d0897ea..7b6cdb30 100644 --- a/docs/3.1/class_c_fast_l_e_d-members.html +++ b/docs/3.1/class_c_fast_l_e_d-members.html @@ -123,6 +123,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); setBrightness(uint8_t scale)CFastLEDinline setCorrection(const struct CRGB &correction)CFastLED setDither(uint8_t ditherMode=BINARY_DITHER)CFastLED + setMaxPowerInMilliWatts(uint32_t milliwatts)CFastLEDinline + setMaxPowerInVoltsAndMilliamps(uint8_t volts, uint32_t milliamps)CFastLEDinline setMaxRefreshRate(uint16_t refresh, bool constrain=false)CFastLED setTemperature(const struct CRGB &temp)CFastLED show(uint8_t scale)CFastLED @@ -133,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_fast_l_e_d.html b/docs/3.1/class_c_fast_l_e_d.html index 66050259..ea294a6d 100644 --- a/docs/3.1/class_c_fast_l_e_d.html +++ b/docs/3.1/class_c_fast_l_e_d.html @@ -107,6 +107,12 @@ Public Member Functions uint8_t getBrightness ()  Get the current global brightness setting. More...
  +void setMaxPowerInVoltsAndMilliamps (uint8_t volts, uint32_t milliamps) + Set the maximum power to be used, given in volts and milliamps. More...
+  +void setMaxPowerInMilliWatts (uint32_t milliwatts) + Set the maximum power to be used, given in milliwatts. More...
+  void show (uint8_t scale)  Update all our controllers with the current led colors, using the passed in brightness. More...
  @@ -824,6 +830,81 @@ template<EBlockChipsets CHIPSET, int NUM_LANES, EOrder RGB_ORDER> + + + +
+
+ + + + + +
+ + + + + + + + +
void CFastLED::setMaxPowerInMilliWatts (uint32_t milliwatts)
+
+inline
+
+ +

Set the maximum power to be used, given in milliwatts.

+
Parameters
+ + +
milliwatts- the max power draw desired, in milliwatts
+
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CFastLED::setMaxPowerInVoltsAndMilliamps (uint8_t volts,
uint32_t milliamps 
)
+
+inline
+
+ +

Set the maximum power to be used, given in volts and milliamps.

+
Parameters
+ + + +
volts- how many volts the leds are being driven at (usually 5 or 12)
milliamps- the maximum milliamps of power draw you want
+
+
+
@@ -1009,7 +1090,7 @@ template<EBlockChipsets CHIPSET, int NUM_LANES, EOrder RGB_ORDER> diff --git a/docs/3.1/class_c_h_s_v_palette16-members.html b/docs/3.1/class_c_h_s_v_palette16-members.html index 0f6f578b..57c75716 100644 --- a/docs/3.1/class_c_h_s_v_palette16-members.html +++ b/docs/3.1/class_c_h_s_v_palette16-members.html @@ -102,8 +102,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); CHSVPalette16(const CHSV &c1, const CHSV &c2, const CHSV &c3, const CHSV &c4) (defined in CHSVPalette16)CHSVPalette16inline entries (defined in CHSVPalette16)CHSVPalette16 operator CHSV *() (defined in CHSVPalette16)CHSVPalette16inline - operator=(const CHSVPalette16 &rhs) (defined in CHSVPalette16)CHSVPalette16inline - operator=(const TProgmemHSVPalette16 &rhs) (defined in CHSVPalette16)CHSVPalette16inline + operator!=(const CHSVPalette16 rhs) (defined in CHSVPalette16)CHSVPalette16inline + operator=(const CHSVPalette16 &rhs) (defined in CHSVPalette16)CHSVPalette16inline + operator=(const TProgmemHSVPalette16 &rhs) (defined in CHSVPalette16)CHSVPalette16inline + operator==(const CHSVPalette16 rhs) (defined in CHSVPalette16)CHSVPalette16inline operator[](uint8_t x) __attribute__((always_inline)) (defined in CHSVPalette16)CHSVPalette16inline operator[](uint8_t x) const __attribute__((always_inline)) (defined in CHSVPalette16)CHSVPalette16inline operator[](int x) __attribute__((always_inline)) (defined in CHSVPalette16)CHSVPalette16inline @@ -111,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_h_s_v_palette16.html b/docs/3.1/class_c_h_s_v_palette16.html index b6a94aa7..60d32b84 100644 --- a/docs/3.1/class_c_h_s_v_palette16.html +++ b/docs/3.1/class_c_h_s_v_palette16.html @@ -133,6 +133,12 @@ const CHSV  operator CHSV * ()   + +bool operator== (const CHSVPalette16 rhs) +  + +bool operator!= (const CHSVPalette16 rhs) +   CHSVPalette16 (const CHSV &c1)   @@ -158,7 +164,7 @@ Public Attributes diff --git a/docs/3.1/class_c_h_s_v_palette256-members.html b/docs/3.1/class_c_h_s_v_palette256-members.html index 231d9014..0740a46a 100644 --- a/docs/3.1/class_c_h_s_v_palette256-members.html +++ b/docs/3.1/class_c_h_s_v_palette256-members.html @@ -103,9 +103,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); CHSVPalette256(const CHSV &c1, const CHSV &c2, const CHSV &c3, const CHSV &c4) (defined in CHSVPalette256)CHSVPalette256inline entries (defined in CHSVPalette256)CHSVPalette256 operator CHSV *() (defined in CHSVPalette256)CHSVPalette256inline - operator=(const CHSVPalette256 &rhs) (defined in CHSVPalette256)CHSVPalette256inline - operator=(const CHSVPalette16 &rhs16) (defined in CHSVPalette256)CHSVPalette256inline - operator=(const TProgmemRGBPalette16 &rhs) (defined in CHSVPalette256)CHSVPalette256inline + operator!=(const CHSVPalette256 rhs) (defined in CHSVPalette256)CHSVPalette256inline + operator=(const CHSVPalette256 &rhs) (defined in CHSVPalette256)CHSVPalette256inline + operator=(const CHSVPalette16 &rhs16) (defined in CHSVPalette256)CHSVPalette256inline + operator=(const TProgmemRGBPalette16 &rhs) (defined in CHSVPalette256)CHSVPalette256inline + operator==(const CHSVPalette256 rhs) (defined in CHSVPalette256)CHSVPalette256inline operator[](uint8_t x) __attribute__((always_inline)) (defined in CHSVPalette256)CHSVPalette256inline operator[](uint8_t x) const __attribute__((always_inline)) (defined in CHSVPalette256)CHSVPalette256inline operator[](int x) __attribute__((always_inline)) (defined in CHSVPalette256)CHSVPalette256inline @@ -113,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_h_s_v_palette256.html b/docs/3.1/class_c_h_s_v_palette256.html index a7de285d..bf605003 100644 --- a/docs/3.1/class_c_h_s_v_palette256.html +++ b/docs/3.1/class_c_h_s_v_palette256.html @@ -139,6 +139,12 @@ const CHSV  operator CHSV * ()   + +bool operator== (const CHSVPalette256 rhs) +  + +bool operator!= (const CHSVPalette256 rhs) +   CHSVPalette256 (const CHSV &c1)   @@ -164,7 +170,7 @@ Public Attributes diff --git a/docs/3.1/class_c_l_e_d_controller-members.html b/docs/3.1/class_c_l_e_d_controller-members.html index 7fd34565..2fbc5cb1 100644 --- a/docs/3.1/class_c_l_e_d_controller-members.html +++ b/docs/3.1/class_c_l_e_d_controller-members.html @@ -96,43 +96,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)=0CLEDControllerpure virtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()=0CLEDControllerpure virtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)=0CLEDControllerprotectedpure virtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)=0CLEDControllerprotectedpure virtual - showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()=0CLEDControllerpure virtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)=0CLEDControllerprotectedpure virtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)=0CLEDControllerprotectedpure virtual + showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_c_l_e_d_controller.html b/docs/3.1/class_c_l_e_d_controller.html index 069070df..09bb6b59 100644 --- a/docs/3.1/class_c_l_e_d_controller.html +++ b/docs/3.1/class_c_l_e_d_controller.html @@ -162,10 +162,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -220,6 +220,9 @@ Static Public Member Functions static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  @@ -384,7 +387,7 @@ class  diff --git a/docs/3.1/class_c_min_wait-members.html b/docs/3.1/class_c_min_wait-members.html index 14100d43..68ebfa1b 100644 --- a/docs/3.1/class_c_min_wait-members.html +++ b/docs/3.1/class_c_min_wait-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Protected Member Functions

CFastLED
diff --git a/docs/3.1/class_c_min_wait.html b/docs/3.1/class_c_min_wait.html index 218f890e..26c9dca3 100644 --- a/docs/3.1/class_c_min_wait.html +++ b/docs/3.1/class_c_min_wait.html @@ -118,7 +118,7 @@ class CMinWait< WAIT > diff --git a/docs/3.1/class_c_r_g_b_palette16-members.html b/docs/3.1/class_c_r_g_b_palette16-members.html index a80ba747..9e1fc48e 100644 --- a/docs/3.1/class_c_r_g_b_palette16-members.html +++ b/docs/3.1/class_c_r_g_b_palette16-members.html @@ -109,10 +109,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); entries (defined in CRGBPalette16)CRGBPalette16 loadDynamicGradientPalette(TDynamicRGBGradientPalette_bytes gpal) (defined in CRGBPalette16)CRGBPalette16inline operator CRGB *() (defined in CRGBPalette16)CRGBPalette16inline - operator=(const CRGBPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline - operator=(const CHSVPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline - operator=(const TProgmemRGBPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline - operator=(TProgmemRGBGradientPalette_bytes progpal) (defined in CRGBPalette16)CRGBPalette16inline + operator!=(const CRGBPalette16 rhs) (defined in CRGBPalette16)CRGBPalette16inline + operator=(const CRGBPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline + operator=(const CHSVPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline + operator=(const TProgmemRGBPalette16 &rhs) (defined in CRGBPalette16)CRGBPalette16inline + operator=(TProgmemRGBGradientPalette_bytes progpal) (defined in CRGBPalette16)CRGBPalette16inline + operator==(const CRGBPalette16 rhs) (defined in CRGBPalette16)CRGBPalette16inline operator[](uint8_t x) __attribute__((always_inline)) (defined in CRGBPalette16)CRGBPalette16inline operator[](uint8_t x) const __attribute__((always_inline)) (defined in CRGBPalette16)CRGBPalette16inline operator[](int x) __attribute__((always_inline)) (defined in CRGBPalette16)CRGBPalette16inline @@ -120,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_r_g_b_palette16.html b/docs/3.1/class_c_r_g_b_palette16.html index 01cb0ad8..b2998c4e 100644 --- a/docs/3.1/class_c_r_g_b_palette16.html +++ b/docs/3.1/class_c_r_g_b_palette16.html @@ -124,6 +124,12 @@ Public Member Functions CRGBPalette16operator= (const TProgmemRGBPalette16 &rhs)   + +bool operator== (const CRGBPalette16 rhs) +  + +bool operator!= (const CRGBPalette16 rhs) +  CRGBoperator[] (uint8_t x) __attribute__((always_inline))   @@ -185,7 +191,7 @@ Public Attributes diff --git a/docs/3.1/class_c_r_g_b_palette256-members.html b/docs/3.1/class_c_r_g_b_palette256-members.html index 296c81d3..412f8e8c 100644 --- a/docs/3.1/class_c_r_g_b_palette256-members.html +++ b/docs/3.1/class_c_r_g_b_palette256-members.html @@ -110,11 +110,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); entries (defined in CRGBPalette256)CRGBPalette256 loadDynamicGradientPalette(TDynamicRGBGradientPalette_bytes gpal) (defined in CRGBPalette256)CRGBPalette256inline operator CRGB *() (defined in CRGBPalette256)CRGBPalette256inline - operator=(const CRGBPalette256 &rhs) (defined in CRGBPalette256)CRGBPalette256inline - operator=(const CHSVPalette256 &rhs) (defined in CRGBPalette256)CRGBPalette256inline - operator=(const CRGBPalette16 &rhs16) (defined in CRGBPalette256)CRGBPalette256inline - operator=(const TProgmemRGBPalette16 &rhs) (defined in CRGBPalette256)CRGBPalette256inline - operator=(TProgmemRGBGradientPalette_bytes progpal) (defined in CRGBPalette256)CRGBPalette256inline + operator!=(const CRGBPalette256 rhs) (defined in CRGBPalette256)CRGBPalette256inline + operator=(const CRGBPalette256 &rhs) (defined in CRGBPalette256)CRGBPalette256inline + operator=(const CHSVPalette256 &rhs) (defined in CRGBPalette256)CRGBPalette256inline + operator=(const CRGBPalette16 &rhs16) (defined in CRGBPalette256)CRGBPalette256inline + operator=(const TProgmemRGBPalette16 &rhs) (defined in CRGBPalette256)CRGBPalette256inline + operator=(TProgmemRGBGradientPalette_bytes progpal) (defined in CRGBPalette256)CRGBPalette256inline + operator==(const CRGBPalette256 rhs) (defined in CRGBPalette256)CRGBPalette256inline operator[](uint8_t x) __attribute__((always_inline)) (defined in CRGBPalette256)CRGBPalette256inline operator[](uint8_t x) const __attribute__((always_inline)) (defined in CRGBPalette256)CRGBPalette256inline operator[](int x) __attribute__((always_inline)) (defined in CRGBPalette256)CRGBPalette256inline @@ -122,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_c_r_g_b_palette256.html b/docs/3.1/class_c_r_g_b_palette256.html index 75451875..e5e371d1 100644 --- a/docs/3.1/class_c_r_g_b_palette256.html +++ b/docs/3.1/class_c_r_g_b_palette256.html @@ -130,6 +130,12 @@ Public Member Functions CRGBPalette256operator= (const TProgmemRGBPalette16 &rhs)   + +bool operator== (const CRGBPalette256 rhs) +  + +bool operator!= (const CRGBPalette256 rhs) +  CRGBoperator[] (uint8_t x) __attribute__((always_inline))   @@ -191,7 +197,7 @@ Public Attributes diff --git a/docs/3.1/class_d_a_t_a___n_o_p-members.html b/docs/3.1/class_d_a_t_a___n_o_p-members.html index cb89a9f2..1d7e381e 100644 --- a/docs/3.1/class_d_a_t_a___n_o_p-members.html +++ b/docs/3.1/class_d_a_t_a___n_o_p-members.html @@ -94,12 +94,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - +
__attribute__((always_inline)) inline uint8_t adjust(register uint8_t data) (defined in DATA_NOP)DATA_NOPinlinestatic
__attribute__((always_inline)) inline uint8_t adjust(register uint8_t data (defined in DATA_NOP)DATA_NOPstatic
__attribute__((always_inline)) inline void postBlock(int len) (defined in DATA_NOP)DATA_NOPinlinestatic
__attribute__((always_inline)) inline void postBlock(int) (defined in DATA_NOP)DATA_NOPinlinestatic
scale (defined in DATA_NOP)DATA_NOP
diff --git a/docs/3.1/class_d_a_t_a___n_o_p.html b/docs/3.1/class_d_a_t_a___n_o_p.html index de8dd253..9ea34513 100644 --- a/docs/3.1/class_d_a_t_a___n_o_p.html +++ b/docs/3.1/class_d_a_t_a___n_o_p.html @@ -107,9 +107,9 @@ static __attribute__ ( static __attribute__ ((always_inline)) inline uint8_t adjust(register uint8_t data   - -static __attribute__ ((always_inline)) inline void postBlock(int len) -  + +static __attribute__ ((always_inline)) inline void postBlock(int) +  @@ -127,7 +127,7 @@ static register uint8_t  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

sc diff --git a/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html b/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html index 38e02bbb..1acfce48 100644 --- a/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html +++ b/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html @@ -95,43 +95,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
clearLedData()CLEDControllerinline
clearLeds(int nLeds)DMXSerialController< RGB_ORDER >inlinevirtual
CLEDController()CLEDControllerinline
getAdjustment(uint8_t scale)CLEDControllerinline
getCorrection()CLEDControllerinline
getDither()CLEDControllerinline
getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual
getTemperature()CLEDControllerinline
head()CLEDControllerinlinestatic
init()DMXSerialController< RGB_ORDER >inlinevirtual
leds()CLEDControllerinline
m_ColorCorrection (defined in CLEDController)CLEDControllerprotected
m_ColorTemperature (defined in CLEDController)CLEDControllerprotected
m_Data (defined in CLEDController)CLEDControllerprotected
m_DitherMode (defined in CLEDController)CLEDControllerprotected
m_nLeds (defined in CLEDController)CLEDControllerprotected
m_pHead (defined in CLEDController)CLEDControllerprotectedstatic
m_pNext (defined in CLEDController)CLEDControllerprotected
m_pTail (defined in CLEDController)CLEDControllerprotectedstatic
next()CLEDControllerinline
operator[](int x)CLEDControllerinline
setCorrection(CRGB correction)CLEDControllerinline
setCorrection(LEDColorCorrection correction)CLEDControllerinline
setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline
setLeds(CRGB *data, int nLeds)CLEDControllerinline
setTemperature(CRGB temperature)CLEDControllerinline
setTemperature(ColorTemperature temperature)CLEDControllerinline
show(const struct CRGB *data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual
show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSerialController< RGB_ORDER >)DMXSerialController< RGB_ORDER >pure virtual
show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual
CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline
showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual
CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline
CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline
showLeds(uint8_t brightness=255)CLEDControllerinline
size()CLEDControllerinline
computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic
getAdjustment(uint8_t scale)CLEDControllerinline
getCorrection()CLEDControllerinline
getDither()CLEDControllerinline
getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual
getTemperature()CLEDControllerinline
head()CLEDControllerinlinestatic
init()DMXSerialController< RGB_ORDER >inlinevirtual
leds()CLEDControllerinline
m_ColorCorrection (defined in CLEDController)CLEDControllerprotected
m_ColorTemperature (defined in CLEDController)CLEDControllerprotected
m_Data (defined in CLEDController)CLEDControllerprotected
m_DitherMode (defined in CLEDController)CLEDControllerprotected
m_nLeds (defined in CLEDController)CLEDControllerprotected
m_pHead (defined in CLEDController)CLEDControllerprotectedstatic
m_pNext (defined in CLEDController)CLEDControllerprotected
m_pTail (defined in CLEDController)CLEDControllerprotectedstatic
next()CLEDControllerinline
operator[](int x)CLEDControllerinline
setCorrection(CRGB correction)CLEDControllerinline
setCorrection(LEDColorCorrection correction)CLEDControllerinline
setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline
setLeds(CRGB *data, int nLeds)CLEDControllerinline
setTemperature(CRGB temperature)CLEDControllerinline
setTemperature(ColorTemperature temperature)CLEDControllerinline
show(const struct CRGB *data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual
show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSerialController< RGB_ORDER >)DMXSerialController< RGB_ORDER >pure virtual
show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual
CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline
showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual
CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline
CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline
showLeds(uint8_t brightness=255)CLEDControllerinline
size()CLEDControllerinlinevirtual
diff --git a/docs/3.1/class_d_m_x_s_e_r_i_a_l.html b/docs/3.1/class_d_m_x_s_e_r_i_a_l.html index cbac3d59..bca51522 100644 --- a/docs/3.1/class_d_m_x_s_e_r_i_a_l.html +++ b/docs/3.1/class_d_m_x_s_e_r_i_a_l.html @@ -162,10 +162,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -218,6 +218,9 @@ virtual uint16_t getMaxRef static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Member Functions inherited from CLEDController virtual void show (const struct CARGB *data, int nLeds, CRGB scale)=0 @@ -255,7 +258,7 @@ static CLEDController *&# diff --git a/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html b/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html index 253f00e6..72940c0d 100644 --- a/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html +++ b/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html @@ -95,43 +95,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSimpleController< DATA_PIN, RGB_ORDER >)DMXSimpleController< DATA_PIN, RGB_ORDER >protectedpure virtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSimpleController< DATA_PIN, RGB_ORDER >)DMXSimpleController< DATA_PIN, RGB_ORDER >protectedpure virtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_d_m_x_s_i_m_p_l_e.html b/docs/3.1/class_d_m_x_s_i_m_p_l_e.html index 8b924721..14f4fdb2 100644 --- a/docs/3.1/class_d_m_x_s_i_m_p_l_e.html +++ b/docs/3.1/class_d_m_x_s_i_m_p_l_e.html @@ -153,10 +153,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -209,6 +209,9 @@ virtual uint16_t getMaxRef static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Member Functions inherited from DMXSimpleController< DATA_PIN, RGB_ORDER > virtual void showColor (const struct CRGB &data, int nLeds, CRGB scale)  set all the leds on the controller to a given color More...
@@ -256,7 +259,7 @@ static CLEDController *&# diff --git a/docs/3.1/class_d_m_x_serial_controller-members.html b/docs/3.1/class_d_m_x_serial_controller-members.html index f2776859..fc1318f6 100644 --- a/docs/3.1/class_d_m_x_serial_controller-members.html +++ b/docs/3.1/class_d_m_x_serial_controller-members.html @@ -95,43 +95,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)DMXSerialController< RGB_ORDER >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()DMXSerialController< RGB_ORDER >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual - show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSerialController< RGB_ORDER >)DMXSerialController< RGB_ORDER >pure virtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()DMXSerialController< RGB_ORDER >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual + show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSerialController< RGB_ORDER >)DMXSerialController< RGB_ORDER >pure virtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSerialController< RGB_ORDER >inlinevirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_d_m_x_serial_controller.html b/docs/3.1/class_d_m_x_serial_controller.html index 8ff7befb..b3efd354 100644 --- a/docs/3.1/class_d_m_x_serial_controller.html +++ b/docs/3.1/class_d_m_x_serial_controller.html @@ -162,10 +162,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -221,6 +221,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Member Functions inherited from CLEDController virtual void show (const struct CARGB *data, int nLeds, CRGB scale)=0 @@ -367,7 +370,7 @@ template<EOrder RGB_ORDER = RGB> diff --git a/docs/3.1/class_d_m_x_simple_controller-members.html b/docs/3.1/class_d_m_x_simple_controller-members.html index a8890fb2..0c83ebe6 100644 --- a/docs/3.1/class_d_m_x_simple_controller-members.html +++ b/docs/3.1/class_d_m_x_simple_controller-members.html @@ -95,43 +95,44 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSimpleController< DATA_PIN, RGB_ORDER >)DMXSimpleController< DATA_PIN, RGB_ORDER >protectedpure virtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()DMXSimpleController< DATA_PIN, RGB_ORDER >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, uint8_t scale=255)=0 (defined in DMXSimpleController< DATA_PIN, RGB_ORDER >)DMXSimpleController< DATA_PIN, RGB_ORDER >protectedpure virtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)DMXSimpleController< DATA_PIN, RGB_ORDER >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_d_m_x_simple_controller.html b/docs/3.1/class_d_m_x_simple_controller.html index 50ef2f1a..b468ddc1 100644 --- a/docs/3.1/class_d_m_x_simple_controller.html +++ b/docs/3.1/class_d_m_x_simple_controller.html @@ -154,10 +154,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
  - -int size () - How many leds does this controller manage?
-  + +virtual int size () + How many leds does this controller manage?
CRGBleds ()  Pointer to the CRGB array for this controller.
@@ -229,6 +229,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
  + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -371,7 +374,7 @@ template<uint8_t DATA_PIN, EOrder RGB_ORDER = RGB> diff --git a/docs/3.1/class_fast_pin-members.html b/docs/3.1/class_fast_pin-members.html index d9856a42..ba8ab475 100644 --- a/docs/3.1/class_fast_pin-members.html +++ b/docs/3.1/class_fast_pin-members.html @@ -93,25 +93,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

This is the complete list of members for FastPin< PIN >, including all inherited members.

- - + + + + + + + + + + + + + + + + + +
fastset(register port_ptr_t port, register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
fastset(register port_ptr_t port, register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hival() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hival() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
loval() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
loval() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
mask() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
mask() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port_ptr_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_ptr_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_t typedef (defined in FastPin< PIN >)FastPin< PIN >
set(register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
set(register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setInput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setInput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setOutput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setOutput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
strobe() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
strobe() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
toggle() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
toggle() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
diff --git a/docs/3.1/class_fast_pin.html b/docs/3.1/class_fast_pin.html index 51cc1a3d..81d0d4c6 100644 --- a/docs/3.1/class_fast_pin.html +++ b/docs/3.1/class_fast_pin.html @@ -114,6 +114,12 @@ typedef volatile RwReg * p typedef RwReg port_t   + +typedef volatile RwReg * port_ptr_t +  + +typedef RwReg port_t +  @@ -159,6 +165,48 @@ static port_ptr_t  + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Static Public Member Functions

port
static port_t mask () __attribute__((always_inline))
 
+static void setOutput ()
 
+static void setInput ()
 
+static void hi () __attribute__((always_inline))
 
+static void lo () __attribute__((always_inline))
 
+static void strobe () __attribute__((always_inline))
 
+static void toggle () __attribute__((always_inline))
 
+static void hi (register port_ptr_t port) __attribute__((always_inline))
 
+static void lo (register port_ptr_t port) __attribute__((always_inline))
 
+static void set (register port_t val) __attribute__((always_inline))
 
+static void fastset (register port_ptr_t port, register port_t val) __attribute__((always_inline))
 
+static port_t hival () __attribute__((always_inline))
 
+static port_t loval () __attribute__((always_inline))
 
+static port_ptr_t port () __attribute__((always_inline))
 
+static port_t mask () __attribute__((always_inline))
 

Detailed Description

template<uint8_t PIN>
@@ -175,7 +223,7 @@ class FastPin< PIN >

diff --git a/docs/3.1/class_fast_pin_b_b-members.html b/docs/3.1/class_fast_pin_b_b-members.html index 4e903d65..7f4ed843 100644 --- a/docs/3.1/class_fast_pin_b_b-members.html +++ b/docs/3.1/class_fast_pin_b_b-members.html @@ -93,25 +93,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

This is the complete list of members for FastPinBB< PIN >, including all inherited members.

- - + + + + + + + + + + + + + + + + + +
fastset(register port_ptr_t port, register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
fastset(register port_ptr_t port, register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hi(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hival() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
hival() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
lo(register port_ptr_t port) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
loval() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
loval() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
mask() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
mask() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
port_ptr_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_ptr_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_t typedef (defined in FastPin< PIN >)FastPin< PIN >
port_t typedef (defined in FastPin< PIN >)FastPin< PIN >
set(register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
set(register port_t val) __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setInput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setInput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setOutput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
setOutput() (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
strobe() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
strobe() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
toggle() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
toggle() __attribute__((always_inline)) (defined in FastPin< PIN >)FastPin< PIN >inlinestatic
diff --git a/docs/3.1/class_fast_pin_b_b.html b/docs/3.1/class_fast_pin_b_b.html index 57f807d2..a014222d 100644 --- a/docs/3.1/class_fast_pin_b_b.html +++ b/docs/3.1/class_fast_pin_b_b.html @@ -115,6 +115,12 @@ typedef volatile RwReg * p typedef RwReg port_t   + +typedef volatile RwReg * port_ptr_t +  + +typedef RwReg port_t- Static Public Member Functions inherited from FastPin< PIN > static void setOutput () @@ -158,6 +164,48 @@ static port_ptr_t port static port_t mask () __attribute__((always_inline))   + +static void setOutput () +  + +static void setInput () +  + +static void hi () __attribute__((always_inline)) +  + +static void lo () __attribute__((always_inline)) +  + +static void strobe () __attribute__((always_inline)) +  + +static void toggle () __attribute__((always_inline)) +  + +static void hi (register port_ptr_t port) __attribute__((always_inline)) +  + +static void lo (register port_ptr_t port) __attribute__((always_inline)) +  + +static void set (register port_t val) __attribute__((always_inline)) +  + +static void fastset (register port_ptr_t port, register port_t val) __attribute__((always_inline)) +  + +static port_t hival () __attribute__((always_inline)) +  + +static port_t loval () __attribute__((always_inline)) +  + +static port_ptr_t port () __attribute__((always_inline)) +  + +static port_t mask () __attribute__((always_inline)) + 
The documentation for this class was generated from the following file:
  • fastpin.h
  • @@ -165,7 +213,7 @@ static port_t mask () diff --git a/docs/3.1/class_g_w6205.html b/docs/3.1/class_g_w6205.html index ef618652..baf7a920 100644 --- a/docs/3.1/class_g_w6205.html +++ b/docs/3.1/class_g_w6205.html @@ -109,7 +109,7 @@ Collaboration diagram for GW6205< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_g_w6205__400.html b/docs/3.1/class_g_w6205__400.html index edacd5e4..5e1bbf4e 100644 --- a/docs/3.1/class_g_w6205__400.html +++ b/docs/3.1/class_g_w6205__400.html @@ -109,7 +109,7 @@ Collaboration diagram for GW6205_400< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_g_w6205_controller400_khz.html b/docs/3.1/class_g_w6205_controller400_khz.html index 2eb30178..3e269454 100644 --- a/docs/3.1/class_g_w6205_controller400_khz.html +++ b/docs/3.1/class_g_w6205_controller400_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for GW6205Controller400Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_g_w6205_controller800_khz.html b/docs/3.1/class_g_w6205_controller800_khz.html index cb122a24..698890d4 100644 --- a/docs/3.1/class_g_w6205_controller800_khz.html +++ b/docs/3.1/class_g_w6205_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for GW6205Controller800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_input_pin-members.html b/docs/3.1/class_input_pin-members.html index ea93039c..5fbef845 100644 --- a/docs/3.1/class_input_pin-members.html +++ b/docs/3.1/class_input_pin-members.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_input_pin.html b/docs/3.1/class_input_pin.html index f40f51fc..968963df 100644 --- a/docs/3.1/class_input_pin.html +++ b/docs/3.1/class_input_pin.html @@ -250,7 +250,7 @@ typedef RwReg port_t diff --git a/docs/3.1/class_l_p_d1886.html b/docs/3.1/class_l_p_d1886.html index 831365ed..fd6b2293 100644 --- a/docs/3.1/class_l_p_d1886.html +++ b/docs/3.1/class_l_p_d1886.html @@ -109,7 +109,7 @@ Collaboration diagram for LPD1886< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_l_p_d1886_controller1250_khz.html b/docs/3.1/class_l_p_d1886_controller1250_khz.html index 2ecca73d..2e43687f 100644 --- a/docs/3.1/class_l_p_d1886_controller1250_khz.html +++ b/docs/3.1/class_l_p_d1886_controller1250_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for LPD1886Controller1250Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_l_p_d8806_controller-members.html b/docs/3.1/class_l_p_d8806_controller-members.html index c719e758..8dece079 100644 --- a/docs/3.1/class_l_p_d8806_controller-members.html +++ b/docs/3.1/class_l_p_d8806_controller-members.html @@ -95,44 +95,45 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - LPD8806Controller() (defined in LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, uint8_t scale) (defined in LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + LPD8806Controller() (defined in LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, uint8_t scale) (defined in LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_l_p_d8806_controller.html b/docs/3.1/class_l_p_d8806_controller.html index 1248ebfe..31217d36 100644 --- a/docs/3.1/class_l_p_d8806_controller.html +++ b/docs/3.1/class_l_p_d8806_controller.html @@ -160,10 +160,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
      - -int size () - How many leds does this controller manage?
    -  + +virtual int size () + How many leds does this controller manage?
    CRGBleds ()  Pointer to the CRGB array for this controller.
    @@ -235,6 +235,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
      + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -391,7 +394,7 @@ template<uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t diff --git a/docs/3.1/class_n_e_o_p_i_x_e_l.html b/docs/3.1/class_n_e_o_p_i_x_e_l.html index e60912f5..fbdd6abc 100644 --- a/docs/3.1/class_n_e_o_p_i_x_e_l.html +++ b/docs/3.1/class_n_e_o_p_i_x_e_l.html @@ -109,7 +109,7 @@ Collaboration diagram for NEOPIXEL< DATA_PIN >: diff --git a/docs/3.1/class_n_o_p_s_p_i_output-members.html b/docs/3.1/class_n_o_p_s_p_i_output-members.html new file mode 100644 index 00000000..988ce9a4 --- /dev/null +++ b/docs/3.1/class_n_o_p_s_p_i_output-members.html @@ -0,0 +1,118 @@ + + + + + + +FastLED: Member List + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Member List
    +
    +
    + +

    This is the complete list of members for NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >, including all inherited members.

    + + + + + + + + + + + + + + + + +
    init()NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    NOPSPIOutput() (defined in NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    NOPSPIOutput(Selectable *pSelect) (defined in NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    release()NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    select()NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    setSelect(Selectable *pSelect)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    waitFully()NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >
    writeBit(uint8_t b)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writeBit(uint8_t b)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writeByte(uint8_t b)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytes(uint8_t *data, int len)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytesValue(uint8_t value, int len)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytesValueRaw(uint8_t value, int len)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writePixels(PixelController< RGB_ORDER > pixels)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeWord(uint16_t w)NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    + + + + diff --git a/docs/3.1/class_n_o_p_s_p_i_output.html b/docs/3.1/class_n_o_p_s_p_i_output.html new file mode 100644 index 00000000..d51e111d --- /dev/null +++ b/docs/3.1/class_n_o_p_s_p_i_output.html @@ -0,0 +1,183 @@ + + + + + + +FastLED: NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Class Template Reference
    +
    +
    + +

    A nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset implementations. + More...

    + +

    #include <fastspi_nop.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    NOPSPIOutput (Selectable *pSelect)
     
    +void setSelect (Selectable *pSelect)
     set the object representing the selectable
     
    +void init ()
     initialize the SPI subssytem
     
    +void select ()
     latch the CS select
     
    +void release ()
     release the CS select
     
    +void waitFully ()
     wait until all queued up data has been written
     
    +void writeByte (uint8_t b)
     write a byte out via SPI (returns immediately on writing register)
     
    +void writeWord (uint16_t w)
     write a word out via SPI (returns immediately on writing register)
     
    +void writeBytesValue (uint8_t value, int len)
     A full cycle of writing a value for len bytes, including select, release, and waiting.
     
    +void writeBytes (uint8_t *data, int len)
     A full cycle of writing a raw block of data out, including select, release, and waiting.
     
    +template<uint8_t FLAGS, class D , EOrder RGB_ORDER>
    void writePixels (PixelController< RGB_ORDER > pixels)
     write out pixel data from the given PixelController object
     
    + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<uint8_t BIT>
    static void writeBit (uint8_t b)
     not the most efficient mechanism in the world - but should be enough for sm16716 and friends
     
    +static void writeBytesValueRaw (uint8_t value, int len)
     A raw set of writing byte values, assumes setup/init/waiting done elsewhere (static for use by adjustment classes)
     
    +template<uint8_t BIT>
    static void writeBit (uint8_t b)
     write a single bit out, which bit from the passed in byte is determined by template parameter
     
    +

    Detailed Description

    +

    template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    +class NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >

    + +

    A nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset implementations.

    +

    Should be used as a definition for the set of methods that the spi implementation classes should use (since C++ doesn't support the idea of interfaces - it's possible this could be done with virtual classes, need to decide if i want that overhead)

    +

    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_output_pin-members.html b/docs/3.1/class_output_pin-members.html index 655015d2..4bb9e7aa 100644 --- a/docs/3.1/class_output_pin-members.html +++ b/docs/3.1/class_output_pin-members.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_output_pin.html b/docs/3.1/class_output_pin.html index 594a0720..ddaa4e8e 100644 --- a/docs/3.1/class_output_pin.html +++ b/docs/3.1/class_output_pin.html @@ -250,7 +250,7 @@ typedef RwReg port_t diff --git a/docs/3.1/class_p9813_controller-members.html b/docs/3.1/class_p9813_controller-members.html index 3b6865c1..9f7b02aa 100644 --- a/docs/3.1/class_p9813_controller-members.html +++ b/docs/3.1/class_p9813_controller-members.html @@ -95,45 +95,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - P9813Controller() (defined in P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + P9813Controller() (defined in P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline show(const struct CRGB *data, int nLeds, CRGB scale)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual diff --git a/docs/3.1/class_p9813_controller.html b/docs/3.1/class_p9813_controller.html index 8526fe5d..3610e324 100644 --- a/docs/3.1/class_p9813_controller.html +++ b/docs/3.1/class_p9813_controller.html @@ -159,10 +159,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
      - -int size () - How many leds does this controller manage?
    -  + +virtual int size () + How many leds does this controller manage?
    CRGBleds ()  Pointer to the CRGB array for this controller.
    @@ -234,6 +234,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
      + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -444,7 +447,7 @@ template<uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t diff --git a/docs/3.1/class_p_l9823.html b/docs/3.1/class_p_l9823.html new file mode 100644 index 00000000..69335f32 --- /dev/null +++ b/docs/3.1/class_p_l9823.html @@ -0,0 +1,117 @@ + + + + + + +FastLED: PL9823< DATA_PIN, RGB_ORDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    PL9823< DATA_PIN, RGB_ORDER > Class Template Reference
    +
    +
    +
    +Inheritance diagram for PL9823< DATA_PIN, RGB_ORDER >:
    +
    +
    Inheritance graph
    + + +
    [legend]
    +
    +Collaboration diagram for PL9823< DATA_PIN, RGB_ORDER >:
    +
    +
    Collaboration graph
    + + +
    [legend]
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_p_l9823__coll__graph.map b/docs/3.1/class_p_l9823__coll__graph.map new file mode 100644 index 00000000..458eb2d2 --- /dev/null +++ b/docs/3.1/class_p_l9823__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_p_l9823__coll__graph.md5 b/docs/3.1/class_p_l9823__coll__graph.md5 new file mode 100644 index 00000000..fab9970f --- /dev/null +++ b/docs/3.1/class_p_l9823__coll__graph.md5 @@ -0,0 +1 @@ +e57b80649c7811691e7ab14e3974e793 \ No newline at end of file diff --git a/docs/3.1/class_p_l9823__coll__graph.png b/docs/3.1/class_p_l9823__coll__graph.png new file mode 100644 index 00000000..a78e5a53 Binary files /dev/null and b/docs/3.1/class_p_l9823__coll__graph.png differ diff --git a/docs/3.1/class_p_l9823__inherit__graph.map b/docs/3.1/class_p_l9823__inherit__graph.map new file mode 100644 index 00000000..458eb2d2 --- /dev/null +++ b/docs/3.1/class_p_l9823__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_p_l9823__inherit__graph.md5 b/docs/3.1/class_p_l9823__inherit__graph.md5 new file mode 100644 index 00000000..fab9970f --- /dev/null +++ b/docs/3.1/class_p_l9823__inherit__graph.md5 @@ -0,0 +1 @@ +e57b80649c7811691e7ab14e3974e793 \ No newline at end of file diff --git a/docs/3.1/class_p_l9823__inherit__graph.png b/docs/3.1/class_p_l9823__inherit__graph.png new file mode 100644 index 00000000..a78e5a53 Binary files /dev/null and b/docs/3.1/class_p_l9823__inherit__graph.png differ diff --git a/docs/3.1/class_p_l9823_controller.html b/docs/3.1/class_p_l9823_controller.html new file mode 100644 index 00000000..453ea96a --- /dev/null +++ b/docs/3.1/class_p_l9823_controller.html @@ -0,0 +1,117 @@ + + + + + + +FastLED: PL9823Controller< DATA_PIN, RGB_ORDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    PL9823Controller< DATA_PIN, RGB_ORDER > Class Template Reference
    +
    +
    +
    +Inheritance diagram for PL9823Controller< DATA_PIN, RGB_ORDER >:
    +
    +
    Inheritance graph
    + + +
    [legend]
    +
    +Collaboration diagram for PL9823Controller< DATA_PIN, RGB_ORDER >:
    +
    +
    Collaboration graph
    + + +
    [legend]
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_p_l9823_controller__coll__graph.map b/docs/3.1/class_p_l9823_controller__coll__graph.map new file mode 100644 index 00000000..577c2bb5 --- /dev/null +++ b/docs/3.1/class_p_l9823_controller__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/docs/3.1/class_p_l9823_controller__coll__graph.md5 b/docs/3.1/class_p_l9823_controller__coll__graph.md5 new file mode 100644 index 00000000..99654555 --- /dev/null +++ b/docs/3.1/class_p_l9823_controller__coll__graph.md5 @@ -0,0 +1 @@ +c0ffdef01b685337798dba8f3a729ceb \ No newline at end of file diff --git a/docs/3.1/class_p_l9823_controller__coll__graph.png b/docs/3.1/class_p_l9823_controller__coll__graph.png new file mode 100644 index 00000000..364c4b65 Binary files /dev/null and b/docs/3.1/class_p_l9823_controller__coll__graph.png differ diff --git a/docs/3.1/class_p_l9823_controller__inherit__graph.map b/docs/3.1/class_p_l9823_controller__inherit__graph.map new file mode 100644 index 00000000..87653f51 --- /dev/null +++ b/docs/3.1/class_p_l9823_controller__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_p_l9823_controller__inherit__graph.md5 b/docs/3.1/class_p_l9823_controller__inherit__graph.md5 new file mode 100644 index 00000000..95c75917 --- /dev/null +++ b/docs/3.1/class_p_l9823_controller__inherit__graph.md5 @@ -0,0 +1 @@ +14c8d354fe87d3e7e009590fa421e9e6 \ No newline at end of file diff --git a/docs/3.1/class_p_l9823_controller__inherit__graph.png b/docs/3.1/class_p_l9823_controller__inherit__graph.png new file mode 100644 index 00000000..aca1980c Binary files /dev/null and b/docs/3.1/class_p_l9823_controller__inherit__graph.png differ diff --git a/docs/3.1/class_pin-members.html b/docs/3.1/class_pin-members.html index a20e73ab..1a2950ec 100644 --- a/docs/3.1/class_pin-members.html +++ b/docs/3.1/class_pin-members.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_pin.html b/docs/3.1/class_pin.html index 4d6e3b92..0ade9d94 100644 --- a/docs/3.1/class_pin.html +++ b/docs/3.1/class_pin.html @@ -243,7 +243,7 @@ virtual bool isSelected diff --git a/docs/3.1/class_r_e_f_hardware_s_p_i_output-members.html b/docs/3.1/class_r_e_f_hardware_s_p_i_output-members.html new file mode 100644 index 00000000..7e57b03f --- /dev/null +++ b/docs/3.1/class_r_e_f_hardware_s_p_i_output-members.html @@ -0,0 +1,118 @@ + + + + + + +FastLED: Member List + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Member List
    +
    +
    + +

    This is the complete list of members for REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >, including all inherited members.

    + + + + + + + + + + + + + + + + +
    init() (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    release() __attribute__((always_inline)) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    SAMHardwareSPIOutput() (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    SAMHArdwareSPIOutput(Selectable *pSelect) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    select() __attribute__((always_inline)) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    setSelect(Selectable *pSelect) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    waitFully() (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writeBit(uint8_t b) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writeByte(uint8_t b) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writeBytes(register uint8_t *data, int len) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytes(register uint8_t *data, int len) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytesValue(uint8_t value, int len) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeBytesValueRaw(uint8_t value, int len) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    writePixels(PixelController< RGB_ORDER > pixels) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inline
    writeWord(uint16_t w) (defined in REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >)REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >inlinestatic
    + + + + diff --git a/docs/3.1/class_r_e_f_hardware_s_p_i_output.html b/docs/3.1/class_r_e_f_hardware_s_p_i_output.html new file mode 100644 index 00000000..21790d50 --- /dev/null +++ b/docs/3.1/class_r_e_f_hardware_s_p_i_output.html @@ -0,0 +1,162 @@ + + + + + + +FastLED: REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    REFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > Class Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    SAMHardwareSPIOutput ()
     
    SAMHArdwareSPIOutput (Selectable *pSelect)
     
    +void setSelect (Selectable *pSelect)
     
    +void init ()
     
    +void select () __attribute__((always_inline))
     
    +void release () __attribute__((always_inline))
     
    +void writeBytesValue (uint8_t value, int len)
     
    +template<class D >
    void writeBytes (register uint8_t *data, int len)
     
    +void writeBytes (register uint8_t *data, int len)
     
    +template<uint8_t FLAGS, class D , EOrder RGB_ORDER>
    void writePixels (PixelController< RGB_ORDER > pixels)
     
    + + + + + + + + + + + + +

    +Static Public Member Functions

    +static void waitFully ()
     
    +static void writeByte (uint8_t b)
     
    +static void writeWord (uint16_t w)
     
    +static void writeBytesValueRaw (uint8_t value, int len)
     
    +template<uint8_t BIT>
    static void writeBit (uint8_t b)
     
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_s_k6812.html b/docs/3.1/class_s_k6812.html new file mode 100644 index 00000000..2b2b1504 --- /dev/null +++ b/docs/3.1/class_s_k6812.html @@ -0,0 +1,117 @@ + + + + + + +FastLED: SK6812< DATA_PIN, RGB_ORDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SK6812< DATA_PIN, RGB_ORDER > Class Template Reference
    +
    +
    +
    +Inheritance diagram for SK6812< DATA_PIN, RGB_ORDER >:
    +
    +
    Inheritance graph
    + + +
    [legend]
    +
    +Collaboration diagram for SK6812< DATA_PIN, RGB_ORDER >:
    +
    +
    Collaboration graph
    + + +
    [legend]
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_s_k6812__coll__graph.map b/docs/3.1/class_s_k6812__coll__graph.map new file mode 100644 index 00000000..16ae72d0 --- /dev/null +++ b/docs/3.1/class_s_k6812__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_s_k6812__coll__graph.md5 b/docs/3.1/class_s_k6812__coll__graph.md5 new file mode 100644 index 00000000..f159f7b8 --- /dev/null +++ b/docs/3.1/class_s_k6812__coll__graph.md5 @@ -0,0 +1 @@ +f42a8a5eacc690a9dd300a1729b98c35 \ No newline at end of file diff --git a/docs/3.1/class_s_k6812__coll__graph.png b/docs/3.1/class_s_k6812__coll__graph.png new file mode 100644 index 00000000..daa09d8c Binary files /dev/null and b/docs/3.1/class_s_k6812__coll__graph.png differ diff --git a/docs/3.1/class_s_k6812__inherit__graph.map b/docs/3.1/class_s_k6812__inherit__graph.map new file mode 100644 index 00000000..16ae72d0 --- /dev/null +++ b/docs/3.1/class_s_k6812__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_s_k6812__inherit__graph.md5 b/docs/3.1/class_s_k6812__inherit__graph.md5 new file mode 100644 index 00000000..f159f7b8 --- /dev/null +++ b/docs/3.1/class_s_k6812__inherit__graph.md5 @@ -0,0 +1 @@ +f42a8a5eacc690a9dd300a1729b98c35 \ No newline at end of file diff --git a/docs/3.1/class_s_k6812__inherit__graph.png b/docs/3.1/class_s_k6812__inherit__graph.png new file mode 100644 index 00000000..daa09d8c Binary files /dev/null and b/docs/3.1/class_s_k6812__inherit__graph.png differ diff --git a/docs/3.1/class_s_k6812_controller.html b/docs/3.1/class_s_k6812_controller.html new file mode 100644 index 00000000..0ae8fb49 --- /dev/null +++ b/docs/3.1/class_s_k6812_controller.html @@ -0,0 +1,117 @@ + + + + + + +FastLED: SK6812Controller< DATA_PIN, RGB_ORDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SK6812Controller< DATA_PIN, RGB_ORDER > Class Template Reference
    +
    +
    +
    +Inheritance diagram for SK6812Controller< DATA_PIN, RGB_ORDER >:
    +
    +
    Inheritance graph
    + + +
    [legend]
    +
    +Collaboration diagram for SK6812Controller< DATA_PIN, RGB_ORDER >:
    +
    +
    Collaboration graph
    + + +
    [legend]
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_s_k6812_controller__coll__graph.map b/docs/3.1/class_s_k6812_controller__coll__graph.map new file mode 100644 index 00000000..9c318e52 --- /dev/null +++ b/docs/3.1/class_s_k6812_controller__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/docs/3.1/class_s_k6812_controller__coll__graph.md5 b/docs/3.1/class_s_k6812_controller__coll__graph.md5 new file mode 100644 index 00000000..9f4fc3a4 --- /dev/null +++ b/docs/3.1/class_s_k6812_controller__coll__graph.md5 @@ -0,0 +1 @@ +0b26e0203c942f065d308d6a80b94e17 \ No newline at end of file diff --git a/docs/3.1/class_s_k6812_controller__coll__graph.png b/docs/3.1/class_s_k6812_controller__coll__graph.png new file mode 100644 index 00000000..fa195a33 Binary files /dev/null and b/docs/3.1/class_s_k6812_controller__coll__graph.png differ diff --git a/docs/3.1/class_s_k6812_controller__inherit__graph.map b/docs/3.1/class_s_k6812_controller__inherit__graph.map new file mode 100644 index 00000000..7ed3fb42 --- /dev/null +++ b/docs/3.1/class_s_k6812_controller__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_s_k6812_controller__inherit__graph.md5 b/docs/3.1/class_s_k6812_controller__inherit__graph.md5 new file mode 100644 index 00000000..9eaadb68 --- /dev/null +++ b/docs/3.1/class_s_k6812_controller__inherit__graph.md5 @@ -0,0 +1 @@ +26dd2b76ec2a2d1435ae53b96a19d106 \ No newline at end of file diff --git a/docs/3.1/class_s_k6812_controller__inherit__graph.png b/docs/3.1/class_s_k6812_controller__inherit__graph.png new file mode 100644 index 00000000..a59e0175 Binary files /dev/null and b/docs/3.1/class_s_k6812_controller__inherit__graph.png differ diff --git a/docs/3.1/class_s_m16716_controller-members.html b/docs/3.1/class_s_m16716_controller-members.html index 541bb55d..6b34a8d1 100644 --- a/docs/3.1/class_s_m16716_controller-members.html +++ b/docs/3.1/class_s_m16716_controller-members.html @@ -95,44 +95,45 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale) (defined in SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline - SM16716Controller() (defined in SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline + show(const struct CRGB *data, int nLeds, CRGB scale)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale) (defined in SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual + SM16716Controller() (defined in SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline diff --git a/docs/3.1/class_s_m16716_controller.html b/docs/3.1/class_s_m16716_controller.html index d7b8cb62..b28d4bab 100644 --- a/docs/3.1/class_s_m16716_controller.html +++ b/docs/3.1/class_s_m16716_controller.html @@ -159,10 +159,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
      - -int size () - How many leds does this controller manage?
    -  + +virtual int size () + How many leds does this controller manage?
    CRGBleds ()  Pointer to the CRGB array for this controller.
    @@ -230,6 +230,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
      + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -386,7 +389,7 @@ template<uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t diff --git a/docs/3.1/class_s_p_i_output-members.html b/docs/3.1/class_s_p_i_output-members.html index 70e32ff2..00807d5a 100644 --- a/docs/3.1/class_s_p_i_output-members.html +++ b/docs/3.1/class_s_p_i_output-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_s_p_i_output.html b/docs/3.1/class_s_p_i_output.html index 60586125..ed5e8990 100644 --- a/docs/3.1/class_s_p_i_output.html +++ b/docs/3.1/class_s_p_i_output.html @@ -96,14 +96,14 @@ Inheritance diagram for SPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER
    Inheritance graph
    - +
    [legend]
    Collaboration diagram for SPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >:
    Collaboration graph
    - +
    [legend]

    @@ -150,7 +150,7 @@ static void 

    writeByte diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index 9150529b..8def952c 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >: diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index 1c84b63a..1a6ef149 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >: diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index 45e9fdf9..9180f4df 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >: diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index e015ee5a..7676d730 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >: diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index 039a99e5..32b3a1de 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPE diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html index c1c47eea..eb4ef7c5 100644 --- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html +++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html @@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPE diff --git a/docs/3.1/class_s_p_i_output__coll__graph.map b/docs/3.1/class_s_p_i_output__coll__graph.map index aec067d7..8306a3cd 100644 --- a/docs/3.1/class_s_p_i_output__coll__graph.map +++ b/docs/3.1/class_s_p_i_output__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/class_s_p_i_output__coll__graph.md5 b/docs/3.1/class_s_p_i_output__coll__graph.md5 index 5a4ec375..46f8de64 100644 --- a/docs/3.1/class_s_p_i_output__coll__graph.md5 +++ b/docs/3.1/class_s_p_i_output__coll__graph.md5 @@ -1 +1 @@ -e997dbc42026a264c037737b48759f11 \ No newline at end of file +ba6f1abfa72175f8890b70db67c1d592 \ No newline at end of file diff --git a/docs/3.1/class_s_p_i_output__coll__graph.png b/docs/3.1/class_s_p_i_output__coll__graph.png index 20326a9e..575031cb 100644 Binary files a/docs/3.1/class_s_p_i_output__coll__graph.png and b/docs/3.1/class_s_p_i_output__coll__graph.png differ diff --git a/docs/3.1/class_s_p_i_output__inherit__graph.map b/docs/3.1/class_s_p_i_output__inherit__graph.map index aec067d7..8306a3cd 100644 --- a/docs/3.1/class_s_p_i_output__inherit__graph.map +++ b/docs/3.1/class_s_p_i_output__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/class_s_p_i_output__inherit__graph.md5 b/docs/3.1/class_s_p_i_output__inherit__graph.md5 index 5a4ec375..46f8de64 100644 --- a/docs/3.1/class_s_p_i_output__inherit__graph.md5 +++ b/docs/3.1/class_s_p_i_output__inherit__graph.md5 @@ -1 +1 @@ -e997dbc42026a264c037737b48759f11 \ No newline at end of file +ba6f1abfa72175f8890b70db67c1d592 \ No newline at end of file diff --git a/docs/3.1/class_s_p_i_output__inherit__graph.png b/docs/3.1/class_s_p_i_output__inherit__graph.png index 20326a9e..575031cb 100644 Binary files a/docs/3.1/class_s_p_i_output__inherit__graph.png and b/docs/3.1/class_s_p_i_output__inherit__graph.png differ diff --git a/docs/3.1/class_selectable-members.html b/docs/3.1/class_selectable-members.html index c920a0f4..483c7295 100644 --- a/docs/3.1/class_selectable-members.html +++ b/docs/3.1/class_selectable-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/docs/3.1/class_selectable.html b/docs/3.1/class_selectable.html index fd25fe40..50cbe813 100644 --- a/docs/3.1/class_selectable.html +++ b/docs/3.1/class_selectable.html @@ -118,7 +118,7 @@ virtual bool isSelected diff --git a/docs/3.1/class_software_s_p_i_output-members.html b/docs/3.1/class_software_s_p_i_output-members.html index 0420cf4c..bfa9821d 100644 --- a/docs/3.1/class_software_s_p_i_output-members.html +++ b/docs/3.1/class_software_s_p_i_output-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/class_software_s_p_i_output.html b/docs/3.1/class_software_s_p_i_output.html index 5574413b..4041f096 100644 --- a/docs/3.1/class_software_s_p_i_output.html +++ b/docs/3.1/class_software_s_p_i_output.html @@ -150,7 +150,7 @@ static void writeByte diff --git a/docs/3.1/class_t_m1803.html b/docs/3.1/class_t_m1803.html index 5bd3b86f..1e984d7a 100644 --- a/docs/3.1/class_t_m1803.html +++ b/docs/3.1/class_t_m1803.html @@ -109,7 +109,7 @@ Collaboration diagram for TM1803< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1803_controller400_khz.html b/docs/3.1/class_t_m1803_controller400_khz.html index ba1a7673..f61ca3ce 100644 --- a/docs/3.1/class_t_m1803_controller400_khz.html +++ b/docs/3.1/class_t_m1803_controller400_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for TM1803Controller400Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1804.html b/docs/3.1/class_t_m1804.html index fb2483d4..85b99a88 100644 --- a/docs/3.1/class_t_m1804.html +++ b/docs/3.1/class_t_m1804.html @@ -109,7 +109,7 @@ Collaboration diagram for TM1804< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1809.html b/docs/3.1/class_t_m1809.html index 89065f0f..688baca8 100644 --- a/docs/3.1/class_t_m1809.html +++ b/docs/3.1/class_t_m1809.html @@ -109,7 +109,7 @@ Collaboration diagram for TM1809< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1809_controller800_khz.html b/docs/3.1/class_t_m1809_controller800_khz.html index 7b428c8f..f02a1e27 100644 --- a/docs/3.1/class_t_m1809_controller800_khz.html +++ b/docs/3.1/class_t_m1809_controller800_khz.html @@ -94,7 +94,7 @@ Inheritance diagram for TM1809Controller800Khz< DATA_PIN, RGB_ORDER >:
    Inheritance graph
    - +
    [legend]
    Collaboration diagram for TM1809Controller800Khz< DATA_PIN, RGB_ORDER >:
    @@ -107,7 +107,7 @@ Collaboration diagram for TM1809Controller800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.map b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.map index ba262961..61b1b334 100644 --- a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.map +++ b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.map @@ -1,4 +1,5 @@ - - + + + diff --git a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.md5 b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.md5 index ff07132e..7250dd11 100644 --- a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.md5 +++ b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.md5 @@ -1 +1 @@ -0ce6b55643359d0b95f88ff678d428dc \ No newline at end of file +48e8269e1c3e3a06b3e37300734d8c88 \ No newline at end of file diff --git a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.png b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.png index 9e061e8a..38168a6f 100644 Binary files a/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.png and b/docs/3.1/class_t_m1809_controller800_khz__inherit__graph.png differ diff --git a/docs/3.1/class_t_m1812.html b/docs/3.1/class_t_m1812.html new file mode 100644 index 00000000..60db2802 --- /dev/null +++ b/docs/3.1/class_t_m1812.html @@ -0,0 +1,117 @@ + + + + + + +FastLED: TM1812< DATA_PIN, RGB_ORDER > Class Template Reference + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    TM1812< DATA_PIN, RGB_ORDER > Class Template Reference
    +
    +
    +
    +Inheritance diagram for TM1812< DATA_PIN, RGB_ORDER >:
    +
    +
    Inheritance graph
    + + +
    [legend]
    +
    +Collaboration diagram for TM1812< DATA_PIN, RGB_ORDER >:
    +
    +
    Collaboration graph
    + + +
    [legend]
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/docs/3.1/class_t_m1812__coll__graph.map b/docs/3.1/class_t_m1812__coll__graph.map new file mode 100644 index 00000000..46d6b65a --- /dev/null +++ b/docs/3.1/class_t_m1812__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_t_m1812__coll__graph.md5 b/docs/3.1/class_t_m1812__coll__graph.md5 new file mode 100644 index 00000000..ca5d740f --- /dev/null +++ b/docs/3.1/class_t_m1812__coll__graph.md5 @@ -0,0 +1 @@ +3fe344bd7139d778c4c8eed23bbb20de \ No newline at end of file diff --git a/docs/3.1/class_t_m1812__coll__graph.png b/docs/3.1/class_t_m1812__coll__graph.png new file mode 100644 index 00000000..c21a776c Binary files /dev/null and b/docs/3.1/class_t_m1812__coll__graph.png differ diff --git a/docs/3.1/class_t_m1812__inherit__graph.map b/docs/3.1/class_t_m1812__inherit__graph.map new file mode 100644 index 00000000..46d6b65a --- /dev/null +++ b/docs/3.1/class_t_m1812__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/class_t_m1812__inherit__graph.md5 b/docs/3.1/class_t_m1812__inherit__graph.md5 new file mode 100644 index 00000000..ca5d740f --- /dev/null +++ b/docs/3.1/class_t_m1812__inherit__graph.md5 @@ -0,0 +1 @@ +3fe344bd7139d778c4c8eed23bbb20de \ No newline at end of file diff --git a/docs/3.1/class_t_m1812__inherit__graph.png b/docs/3.1/class_t_m1812__inherit__graph.png new file mode 100644 index 00000000..c21a776c Binary files /dev/null and b/docs/3.1/class_t_m1812__inherit__graph.png differ diff --git a/docs/3.1/class_t_m1829.html b/docs/3.1/class_t_m1829.html index f9dff768..9d41fdfe 100644 --- a/docs/3.1/class_t_m1829.html +++ b/docs/3.1/class_t_m1829.html @@ -109,7 +109,7 @@ Collaboration diagram for TM1829< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_t_m1829_controller1600_khz.html b/docs/3.1/class_t_m1829_controller1600_khz.html index cfc80fe7..a40c0a25 100644 --- a/docs/3.1/class_t_m1829_controller1600_khz.html +++ b/docs/3.1/class_t_m1829_controller1600_khz.html @@ -105,7 +105,7 @@ Collaboration diagram for TM1829Controller1600Khz< DATA_PIN, RGB_ORDER >:< diff --git a/docs/3.1/class_t_m1829_controller800_khz.html b/docs/3.1/class_t_m1829_controller800_khz.html index 7d2d3100..c64fa45b 100644 --- a/docs/3.1/class_t_m1829_controller800_khz.html +++ b/docs/3.1/class_t_m1829_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for TM1829Controller800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_u_c_s1903.html b/docs/3.1/class_u_c_s1903.html index 3400f055..eb5446ae 100644 --- a/docs/3.1/class_u_c_s1903.html +++ b/docs/3.1/class_u_c_s1903.html @@ -109,7 +109,7 @@ Collaboration diagram for UCS1903< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_u_c_s1903_b.html b/docs/3.1/class_u_c_s1903_b.html index e11d5372..c698a095 100644 --- a/docs/3.1/class_u_c_s1903_b.html +++ b/docs/3.1/class_u_c_s1903_b.html @@ -109,7 +109,7 @@ Collaboration diagram for UCS1903B< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_u_c_s1903_b_controller800_khz.html b/docs/3.1/class_u_c_s1903_b_controller800_khz.html index dd87830a..9b4557a4 100644 --- a/docs/3.1/class_u_c_s1903_b_controller800_khz.html +++ b/docs/3.1/class_u_c_s1903_b_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for UCS1903BController800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_u_c_s1903_controller400_khz.html b/docs/3.1/class_u_c_s1903_controller400_khz.html index bd1203d3..e454d2ac 100644 --- a/docs/3.1/class_u_c_s1903_controller400_khz.html +++ b/docs/3.1/class_u_c_s1903_controller400_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for UCS1903Controller400Khz< DATA_PIN, RGB_ORDER >:< diff --git a/docs/3.1/class_u_c_s1904.html b/docs/3.1/class_u_c_s1904.html index 3c245e08..679ee1af 100644 --- a/docs/3.1/class_u_c_s1904.html +++ b/docs/3.1/class_u_c_s1904.html @@ -109,7 +109,7 @@ Collaboration diagram for UCS1904< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_u_c_s1904_controller800_khz.html b/docs/3.1/class_u_c_s1904_controller800_khz.html index 20d1dc65..8a0b7d07 100644 --- a/docs/3.1/class_u_c_s1904_controller800_khz.html +++ b/docs/3.1/class_u_c_s1904_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for UCS1904Controller800Khz< DATA_PIN, RGB_ORDER >:< diff --git a/docs/3.1/class_w_s2801_controller-members.html b/docs/3.1/class_w_s2801_controller-members.html index 84f792bc..e286eac4 100644 --- a/docs/3.1/class_w_s2801_controller-members.html +++ b/docs/3.1/class_w_s2801_controller-members.html @@ -95,45 +95,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline - WS2801Controller() (defined in WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline + show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual + WS2801Controller() (defined in WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline diff --git a/docs/3.1/class_w_s2801_controller.html b/docs/3.1/class_w_s2801_controller.html index b5e151b1..d1ada376 100644 --- a/docs/3.1/class_w_s2801_controller.html +++ b/docs/3.1/class_w_s2801_controller.html @@ -159,10 +159,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
      - -int size () - How many leds does this controller manage?
    -  + +virtual int size () + How many leds does this controller manage?
    CRGBleds ()  Pointer to the CRGB array for this controller.
    @@ -234,6 +234,9 @@ Additional Inherited Members static CLEDControllerhead ()  get the first led controller in the chain of controllers
      + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Attributes inherited from CLEDController CRGBm_Data @@ -444,7 +447,7 @@ template<uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t diff --git a/docs/3.1/class_w_s2803_controller-members.html b/docs/3.1/class_w_s2803_controller-members.html index 047a85ab..a3729af2 100644 --- a/docs/3.1/class_w_s2803_controller-members.html +++ b/docs/3.1/class_w_s2803_controller-members.html @@ -95,45 +95,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); clearLedData()CLEDControllerinline clearLeds(int nLeds)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual CLEDController()CLEDControllerinline - getAdjustment(uint8_t scale)CLEDControllerinline - getCorrection()CLEDControllerinline - getDither()CLEDControllerinline - getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual - getTemperature()CLEDControllerinline - head()CLEDControllerinlinestatic - init()WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual - leds()CLEDControllerinline - m_ColorCorrection (defined in CLEDController)CLEDControllerprotected - m_ColorTemperature (defined in CLEDController)CLEDControllerprotected - m_Data (defined in CLEDController)CLEDControllerprotected - m_DitherMode (defined in CLEDController)CLEDControllerprotected - m_nLeds (defined in CLEDController)CLEDControllerprotected - m_pHead (defined in CLEDController)CLEDControllerprotectedstatic - m_pNext (defined in CLEDController)CLEDControllerprotected - m_pTail (defined in CLEDController)CLEDControllerprotectedstatic - next()CLEDControllerinline - operator[](int x)CLEDControllerinline - setCorrection(CRGB correction)CLEDControllerinline - setCorrection(LEDColorCorrection correction)CLEDControllerinline - setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline - setLeds(CRGB *data, int nLeds)CLEDControllerinline - setTemperature(CRGB temperature)CLEDControllerinline - setTemperature(ColorTemperature temperature)CLEDControllerinline - show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) (defined in CLEDController)CLEDControllerinlinestatic + getAdjustment(uint8_t scale)CLEDControllerinline + getCorrection()CLEDControllerinline + getDither()CLEDControllerinline + getMaxRefreshRate() const (defined in CLEDController)CLEDControllerinlinevirtual + getTemperature()CLEDControllerinline + head()CLEDControllerinlinestatic + init()WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlinevirtual + leds()CLEDControllerinline + m_ColorCorrection (defined in CLEDController)CLEDControllerprotected + m_ColorTemperature (defined in CLEDController)CLEDControllerprotected + m_Data (defined in CLEDController)CLEDControllerprotected + m_DitherMode (defined in CLEDController)CLEDControllerprotected + m_nLeds (defined in CLEDController)CLEDControllerprotected + m_pHead (defined in CLEDController)CLEDControllerprotectedstatic + m_pNext (defined in CLEDController)CLEDControllerprotected + m_pTail (defined in CLEDController)CLEDControllerprotectedstatic + next()CLEDControllerinline + operator[](int x)CLEDControllerinline + setCorrection(CRGB correction)CLEDControllerinline + setCorrection(LEDColorCorrection correction)CLEDControllerinline + setDither(uint8_t ditherMode=BINARY_DITHER)CLEDControllerinline + setLeds(CRGB *data, int nLeds)CLEDControllerinline + setTemperature(CRGB temperature)CLEDControllerinline + setTemperature(ColorTemperature temperature)CLEDControllerinline show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual - CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline - show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline - showColor(const struct CRGB &data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual - CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline - CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline - showLeds(uint8_t brightness=255)CLEDControllerinline - size()CLEDControllerinline - WS2801Controller() (defined in WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline + show(const struct CRGB *data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + show(const struct CARGB *data, int nLeds, CRGB scale)=0 (defined in CLEDController)CLEDControllerprotectedpure virtual + CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)CLEDControllerinline + show(const struct CARGB *data, int nLeds, uint8_t brightness) (defined in CLEDController)CLEDControllerinline + showColor(const struct CRGB &data, int nLeds, CRGB scale)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inlineprotectedvirtual + CLEDController::showColor(const struct CRGB &data, int nLeds, uint8_t brightness)CLEDControllerinline + CLEDController::showColor(const struct CRGB &data, uint8_t brightness=255)CLEDControllerinline + showLeds(uint8_t brightness=255)CLEDControllerinline + size()CLEDControllerinlinevirtual + WS2801Controller() (defined in WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >)WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED >inline diff --git a/docs/3.1/class_w_s2803_controller.html b/docs/3.1/class_w_s2803_controller.html index f23912b7..2450cf0d 100644 --- a/docs/3.1/class_w_s2803_controller.html +++ b/docs/3.1/class_w_s2803_controller.html @@ -153,10 +153,10 @@ void show (const struc void clearLedData ()  zero out the led data managed by this controller
      - -int size () - How many leds does this controller manage?
    -  + +virtual int size () + How many leds does this controller manage?
    CRGBleds ()  Pointer to the CRGB array for this controller.
    @@ -209,6 +209,9 @@ virtual uint16_t getMaxRef static CLEDControllerhead ()  get the first led controller in the chain of controllers
      + +static CRGB computeAdjustment (uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature) +  - Protected Member Functions inherited from WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > virtual void showColor (const struct CRGB &data, int nLeds, CRGB scale)  set all the leds on the controller to a given color More...
    @@ -256,7 +259,7 @@ static CLEDController *&# diff --git a/docs/3.1/class_w_s2811.html b/docs/3.1/class_w_s2811.html index ddd7fab0..d2c03822 100644 --- a/docs/3.1/class_w_s2811.html +++ b/docs/3.1/class_w_s2811.html @@ -109,7 +109,7 @@ Collaboration diagram for WS2811< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2811__400.html b/docs/3.1/class_w_s2811__400.html index 7f6296a3..bd5ba00a 100644 --- a/docs/3.1/class_w_s2811__400.html +++ b/docs/3.1/class_w_s2811__400.html @@ -109,7 +109,7 @@ Collaboration diagram for WS2811_400< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2811_controller400_khz.html b/docs/3.1/class_w_s2811_controller400_khz.html index 6e291e31..8f0065d7 100644 --- a/docs/3.1/class_w_s2811_controller400_khz.html +++ b/docs/3.1/class_w_s2811_controller400_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for WS2811Controller400Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2811_controller800_khz.html b/docs/3.1/class_w_s2811_controller800_khz.html index e1e86d10..5867eb81 100644 --- a/docs/3.1/class_w_s2811_controller800_khz.html +++ b/docs/3.1/class_w_s2811_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for WS2811Controller800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2812.html b/docs/3.1/class_w_s2812.html index 3927b01a..e5225629 100644 --- a/docs/3.1/class_w_s2812.html +++ b/docs/3.1/class_w_s2812.html @@ -109,7 +109,7 @@ Collaboration diagram for WS2812< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2812_b.html b/docs/3.1/class_w_s2812_b.html index fb5e3e8d..d56f7af3 100644 --- a/docs/3.1/class_w_s2812_b.html +++ b/docs/3.1/class_w_s2812_b.html @@ -109,7 +109,7 @@ Collaboration diagram for WS2812B< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/class_w_s2812_controller800_khz.html b/docs/3.1/class_w_s2812_controller800_khz.html index 8358b133..7e13aa2a 100644 --- a/docs/3.1/class_w_s2812_controller800_khz.html +++ b/docs/3.1/class_w_s2812_controller800_khz.html @@ -107,7 +107,7 @@ Collaboration diagram for WS2812Controller800Khz< DATA_PIN, RGB_ORDER >: diff --git a/docs/3.1/classes.html b/docs/3.1/classes.html index 3ac554b8..4a8b2c83 100644 --- a/docs/3.1/classes.html +++ b/docs/3.1/classes.html @@ -89,59 +89,62 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Class Index
    -
    A | B | C | D | F | G | I | J | L | M | N | O | P | Q | S | T | U | W
    +
    A | B | C | D | F | G | I | J | L | M | N | O | P | Q | R | S | T | U | W
    - + + + + - - - - - - + + + + + + - - - + + - - - - - + + + + + - - - + + - - - + +
      A  
    -
    DMXSIMPLE   
      N  
    -
    SPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >   WS2803Controller   
    DMXSimpleController   
      T  
    +
      F  
    +
    NOPSPIOutput   SPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >   
      W  
    +
      O  
    +
    SPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >   
    APA102Controller   FastPin   SPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >   WS2801Controller   
    APA104   FastPinBB   OutputPin   SPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >   WS2803Controller   
    AVRSoftwareSPIOutput   
      G  
    +
      P  
    +
      T  
    WS2811   
    APA102Controller   
      F  
    -
    NEOPIXEL   WS2811_400   
    APA104   
      O  
    -
    TM1803   WS2811Controller400Khz   
    AVRSoftwareSPIOutput   FastPin   TM1803Controller400Khz   WS2811Controller800Khz   
      C  
    -
    FastPinBB   OutputPin   TM1804   WS2812   
      G  
    -
      P  
    -
    TM1809   WS2812B   
    CEveryNTimePeriods   TM1809Controller800Khz   WS2812Controller800Khz   
    CFastLED   GW6205   P9813Controller   TM1829   
      b  
    +
    WS2811_400   
    GW6205   P9813Controller   TM1803   WS2811Controller400Khz   
    CEveryNTimePeriods   GW6205_400   Pin   TM1803Controller400Khz   WS2811Controller800Khz   
    CFastLED   GW6205Controller400Khz   PixelController   TM1804   WS2812   
    CHSV   GW6205Controller800Khz   PL9823   TM1809   WS2812B   
    CHSVPalette16   
      I  
    +
    PL9823Controller   TM1809Controller800Khz   WS2812Controller800Khz   
    CHSVPalette256   
      R  
    +
    TM1812   
      b  
    CHSV   GW6205_400   Pin   TM1829Controller1600Khz   
    CHSVPalette16   GW6205Controller400Khz   PixelController   TM1829Controller800Khz   bitswap_type   
    CHSVPalette256   GW6205Controller800Khz   
      S  
    -
    TRGBGradientPaletteEntryUnion   
      j  
    +
    CLEDController   IEEE754binary32_t   TM1829   
    CMinWait   InputPin   REFHardwareSPIOutput   TM1829Controller1600Khz   bitswap_type   
    CRGB   
      L  
    +
      S  
    +
    TM1829Controller800Khz   
      j  
    CLEDController   
      I  
    -
      U  
    -
    CMinWait   Selectable   just8bits   
    CRGB   IEEE754binary32_t   SM16716Controller   UCS1903   
      q  
    -
    CRGBPalette16   InputPin   SoftwareSPIOutput   UCS1903B   
    CRGBPalette256   
      L  
    -
    SPIOutput   UCS1903BController800Khz   q   
    CRGBPalette16   TRGBGradientPaletteEntryUnion   
    CRGBPalette256   LPD1886   Selectable   
      U  
    +
    just8bits   
      D  
    -
    SPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >   UCS1903Controller400Khz   
      s  
    +
    LPD1886Controller1250Khz   SK6812   
      q  
    +
    LPD8806Controller   SK6812Controller   UCS1903   
    DATA_NOP   
      M  
    +
    SM16716Controller   UCS1903B   q   
    DMXSERIAL   SoftwareSPIOutput   UCS1903BController800Khz   
      s  
    LPD1886   SPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >   UCS1904   
    DATA_NOP   LPD1886Controller1250Khz   SPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >   UCS1904Controller800Khz   sub4   
    DMXSERIAL   LPD8806Controller   SPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >   
      W  
    -
      t  
    +
    DMXSerialController   MultiPixelController   SPIOutput   UCS1903Controller400Khz   
    DMXSIMPLE   
      N  
    +
    SPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >   UCS1904   sub4   
    DMXSimpleController   SPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >   UCS1904Controller800Khz   
      t  
    DMXSerialController   
      M  
    -
    SPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >   
    WS2801Controller   tBytesForLong   
    MultiPixelController   
    NEOPIXEL   
    tBytesForLong   
    -
    A | B | C | D | F | G | I | J | L | M | N | O | P | Q | S | T | U | W
    +
    A | B | C | D | F | G | I | J | L | M | N | O | P | Q | R | S | T | U | W
    diff --git a/docs/3.1/classq-members.html b/docs/3.1/classq-members.html index 22c89b80..fecce565 100644 --- a/docs/3.1/classq-members.html +++ b/docs/3.1/classq-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/classq.html b/docs/3.1/classq.html index f197dd26..6e27863e 100644 --- a/docs/3.1/classq.html +++ b/docs/3.1/classq.html @@ -133,7 +133,7 @@ class q< T, F, I > diff --git a/docs/3.1/color_8h.html b/docs/3.1/color_8h.html index caa1e787..7e7c3f7f 100644 --- a/docs/3.1/color_8h.html +++ b/docs/3.1/color_8h.html @@ -141,7 +141,7 @@ Enumerations diff --git a/docs/3.1/color_8h_source.html b/docs/3.1/color_8h_source.html index 58934197..01d3eb38 100644 --- a/docs/3.1/color_8h_source.html +++ b/docs/3.1/color_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/colorpalettes_8h.html b/docs/3.1/colorpalettes_8h.html index 32f2c8d1..fd53ae18 100644 --- a/docs/3.1/colorpalettes_8h.html +++ b/docs/3.1/colorpalettes_8h.html @@ -113,7 +113,7 @@ Variables diff --git a/docs/3.1/colorpalettes_8h_source.html b/docs/3.1/colorpalettes_8h_source.html index 91052210..c3cd988b 100644 --- a/docs/3.1/colorpalettes_8h_source.html +++ b/docs/3.1/colorpalettes_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/colorutils_8h.html b/docs/3.1/colorutils_8h.html index c3cecab7..80c8c008 100644 --- a/docs/3.1/colorutils_8h.html +++ b/docs/3.1/colorutils_8h.html @@ -316,7 +316,7 @@ void napplyGamma_video diff --git a/docs/3.1/colorutils_8h_source.html b/docs/3.1/colorutils_8h_source.html index 6fdfdbdf..31d67529 100644 --- a/docs/3.1/colorutils_8h_source.html +++ b/docs/3.1/colorutils_8h_source.html @@ -151,10 +151,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    99  if( endpos < startpos ) {
    100  uint16_t t = endpos;
    101  CHSV tc = endcolor;
    -
    102  startpos = t;
    -
    103  startcolor = tc;
    -
    104  endcolor = startcolor;
    -
    105  endpos = startpos;
    +
    102  endcolor = startcolor;
    +
    103  endpos = startpos;
    +
    104  startpos = t;
    +
    105  startcolor = tc;
    106  }
    107 
    108  // If we're fading toward black (val=0) or white (sat=0),
    @@ -468,771 +468,839 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    416 typedef const TDynamicRGBGradientPalette_byte *TDynamicRGBGradientPalette_bytes;
    417 typedef TDynamicRGBGradientPalette_bytes TDynamicRGBGradientPalettePtr;
    418 
    -
    419 
    -
    420 // Convert a 16-entry palette to a 256-entry palette
    -
    421 void UpscalePalette(const struct CRGBPalette16& srcpal16, struct CRGBPalette256& destpal256);
    -
    422 void UpscalePalette(const struct CHSVPalette16& srcpal16, struct CHSVPalette256& destpal256);
    +
    419 // Convert a 16-entry palette to a 256-entry palette
    +
    420 void UpscalePalette(const struct CRGBPalette16& srcpal16, struct CRGBPalette256& destpal256);
    +
    421 void UpscalePalette(const struct CHSVPalette16& srcpal16, struct CHSVPalette256& destpal256);
    +
    422 
    423 
    -
    424 
    - -
    426 public:
    -
    427  CHSV entries[16];
    -
    428  CHSVPalette16() {};
    -
    429  CHSVPalette16( const CHSV& c00,const CHSV& c01,const CHSV& c02,const CHSV& c03,
    -
    430  const CHSV& c04,const CHSV& c05,const CHSV& c06,const CHSV& c07,
    -
    431  const CHSV& c08,const CHSV& c09,const CHSV& c10,const CHSV& c11,
    -
    432  const CHSV& c12,const CHSV& c13,const CHSV& c14,const CHSV& c15 )
    -
    433  {
    -
    434  entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;
    -
    435  entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;
    -
    436  entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;
    -
    437  entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;
    -
    438  };
    -
    439 
    -
    440  CHSVPalette16( const CHSVPalette16& rhs)
    -
    441  {
    -
    442  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    443  }
    -
    444  CHSVPalette16& operator=( const CHSVPalette16& rhs)
    -
    445  {
    -
    446  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    447  return *this;
    -
    448  }
    -
    449 
    -
    450  CHSVPalette16( const TProgmemHSVPalette16& rhs)
    -
    451  {
    -
    452  for( uint8_t i = 0; i < 16; i++) {
    -
    453  CRGB xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);
    -
    454  entries[i].hue = xyz.red;
    -
    455  entries[i].sat = xyz.green;
    -
    456  entries[i].val = xyz.blue;
    -
    457  }
    -
    458  }
    -
    459  CHSVPalette16& operator=( const TProgmemHSVPalette16& rhs)
    -
    460  {
    -
    461  for( uint8_t i = 0; i < 16; i++) {
    -
    462  CRGB xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);
    -
    463  entries[i].hue = xyz.red;
    -
    464  entries[i].sat = xyz.green;
    -
    465  entries[i].val = xyz.blue;
    -
    466  }
    -
    467  return *this;
    -
    468  }
    -
    469 
    -
    470  inline CHSV& operator[] (uint8_t x) __attribute__((always_inline))
    -
    471  {
    -
    472  return entries[x];
    -
    473  }
    -
    474  inline const CHSV& operator[] (uint8_t x) const __attribute__((always_inline))
    -
    475  {
    -
    476  return entries[x];
    -
    477  }
    -
    478 
    -
    479  inline CHSV& operator[] (int x) __attribute__((always_inline))
    -
    480  {
    -
    481  return entries[(uint8_t)x];
    -
    482  }
    -
    483  inline const CHSV& operator[] (int x) const __attribute__((always_inline))
    -
    484  {
    -
    485  return entries[(uint8_t)x];
    -
    486  }
    -
    487 
    -
    488  operator CHSV*()
    -
    489  {
    -
    490  return &(entries[0]);
    -
    491  }
    -
    492 
    -
    493  CHSVPalette16( const CHSV& c1)
    -
    494  {
    -
    495  fill_solid( &(entries[0]), 16, c1);
    -
    496  }
    -
    497  CHSVPalette16( const CHSV& c1, const CHSV& c2)
    -
    498  {
    -
    499  fill_gradient( &(entries[0]), 16, c1, c2);
    -
    500  }
    -
    501  CHSVPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    -
    502  {
    -
    503  fill_gradient( &(entries[0]), 16, c1, c2, c3);
    -
    504  }
    -
    505  CHSVPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    -
    506  {
    -
    507  fill_gradient( &(entries[0]), 16, c1, c2, c3, c4);
    -
    508  }
    -
    509 
    -
    510 };
    -
    511 
    - -
    513 public:
    -
    514  CHSV entries[256];
    -
    515  CHSVPalette256() {};
    -
    516  CHSVPalette256( const CHSV& c00,const CHSV& c01,const CHSV& c02,const CHSV& c03,
    -
    517  const CHSV& c04,const CHSV& c05,const CHSV& c06,const CHSV& c07,
    -
    518  const CHSV& c08,const CHSV& c09,const CHSV& c10,const CHSV& c11,
    -
    519  const CHSV& c12,const CHSV& c13,const CHSV& c14,const CHSV& c15 )
    -
    520  {
    -
    521  CHSVPalette16 p16(c00,c01,c02,c03,c04,c05,c06,c07,
    -
    522  c08,c09,c10,c11,c12,c13,c14,c15);
    -
    523  *this = p16;
    -
    524  };
    + +
    425 public:
    +
    426  CHSV entries[16];
    +
    427  CHSVPalette16() {};
    +
    428  CHSVPalette16( const CHSV& c00,const CHSV& c01,const CHSV& c02,const CHSV& c03,
    +
    429  const CHSV& c04,const CHSV& c05,const CHSV& c06,const CHSV& c07,
    +
    430  const CHSV& c08,const CHSV& c09,const CHSV& c10,const CHSV& c11,
    +
    431  const CHSV& c12,const CHSV& c13,const CHSV& c14,const CHSV& c15 )
    +
    432  {
    +
    433  entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;
    +
    434  entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;
    +
    435  entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;
    +
    436  entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;
    +
    437  };
    +
    438 
    +
    439  CHSVPalette16( const CHSVPalette16& rhs)
    +
    440  {
    +
    441  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    442  }
    +
    443  CHSVPalette16& operator=( const CHSVPalette16& rhs)
    +
    444  {
    +
    445  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    446  return *this;
    +
    447  }
    +
    448 
    +
    449  CHSVPalette16( const TProgmemHSVPalette16& rhs)
    +
    450  {
    +
    451  for( uint8_t i = 0; i < 16; i++) {
    +
    452  CRGB xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);
    +
    453  entries[i].hue = xyz.red;
    +
    454  entries[i].sat = xyz.green;
    +
    455  entries[i].val = xyz.blue;
    +
    456  }
    +
    457  }
    +
    458  CHSVPalette16& operator=( const TProgmemHSVPalette16& rhs)
    +
    459  {
    +
    460  for( uint8_t i = 0; i < 16; i++) {
    +
    461  CRGB xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);
    +
    462  entries[i].hue = xyz.red;
    +
    463  entries[i].sat = xyz.green;
    +
    464  entries[i].val = xyz.blue;
    +
    465  }
    +
    466  return *this;
    +
    467  }
    +
    468 
    +
    469  inline CHSV& operator[] (uint8_t x) __attribute__((always_inline))
    +
    470  {
    +
    471  return entries[x];
    +
    472  }
    +
    473  inline const CHSV& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    474  {
    +
    475  return entries[x];
    +
    476  }
    +
    477 
    +
    478  inline CHSV& operator[] (int x) __attribute__((always_inline))
    +
    479  {
    +
    480  return entries[(uint8_t)x];
    +
    481  }
    +
    482  inline const CHSV& operator[] (int x) const __attribute__((always_inline))
    +
    483  {
    +
    484  return entries[(uint8_t)x];
    +
    485  }
    +
    486 
    +
    487  operator CHSV*()
    +
    488  {
    +
    489  return &(entries[0]);
    +
    490  }
    +
    491 
    +
    492  bool operator==( const CHSVPalette16 rhs)
    +
    493  {
    +
    494  const uint8_t* p = (const uint8_t*)(&(this->entries[0]));
    +
    495  const uint8_t* q = (const uint8_t*)(&(rhs.entries[0]));
    +
    496  if( p == q) return true;
    +
    497  for( uint8_t i = 0; i < (sizeof( entries)); i++) {
    +
    498  if( *p != *q) return false;
    +
    499  p++;
    +
    500  q++;
    +
    501  }
    +
    502  return true;
    +
    503  }
    +
    504  bool operator!=( const CHSVPalette16 rhs)
    +
    505  {
    +
    506  return !( *this == rhs);
    +
    507  }
    +
    508 
    +
    509  CHSVPalette16( const CHSV& c1)
    +
    510  {
    +
    511  fill_solid( &(entries[0]), 16, c1);
    +
    512  }
    +
    513  CHSVPalette16( const CHSV& c1, const CHSV& c2)
    +
    514  {
    +
    515  fill_gradient( &(entries[0]), 16, c1, c2);
    +
    516  }
    +
    517  CHSVPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    +
    518  {
    +
    519  fill_gradient( &(entries[0]), 16, c1, c2, c3);
    +
    520  }
    +
    521  CHSVPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    +
    522  {
    +
    523  fill_gradient( &(entries[0]), 16, c1, c2, c3, c4);
    +
    524  }
    525 
    -
    526  CHSVPalette256( const CHSVPalette256& rhs)
    -
    527  {
    -
    528  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    529  }
    -
    530  CHSVPalette256& operator=( const CHSVPalette256& rhs)
    -
    531  {
    -
    532  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    533  return *this;
    -
    534  }
    -
    535 
    -
    536  CHSVPalette256( const CHSVPalette16& rhs16)
    -
    537  {
    -
    538  UpscalePalette( rhs16, *this);
    -
    539  }
    -
    540  CHSVPalette256& operator=( const CHSVPalette16& rhs16)
    -
    541  {
    -
    542  UpscalePalette( rhs16, *this);
    -
    543  return *this;
    -
    544  }
    -
    545 
    -
    546  CHSVPalette256( const TProgmemRGBPalette16& rhs)
    +
    526 };
    +
    527 
    + +
    529 public:
    +
    530  CHSV entries[256];
    +
    531  CHSVPalette256() {};
    +
    532  CHSVPalette256( const CHSV& c00,const CHSV& c01,const CHSV& c02,const CHSV& c03,
    +
    533  const CHSV& c04,const CHSV& c05,const CHSV& c06,const CHSV& c07,
    +
    534  const CHSV& c08,const CHSV& c09,const CHSV& c10,const CHSV& c11,
    +
    535  const CHSV& c12,const CHSV& c13,const CHSV& c14,const CHSV& c15 )
    +
    536  {
    +
    537  CHSVPalette16 p16(c00,c01,c02,c03,c04,c05,c06,c07,
    +
    538  c08,c09,c10,c11,c12,c13,c14,c15);
    +
    539  *this = p16;
    +
    540  };
    +
    541 
    +
    542  CHSVPalette256( const CHSVPalette256& rhs)
    +
    543  {
    +
    544  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    545  }
    +
    546  CHSVPalette256& operator=( const CHSVPalette256& rhs)
    547  {
    -
    548  CHSVPalette16 p16(rhs);
    -
    549  *this = p16;
    +
    548  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    549  return *this;
    550  }
    -
    551  CHSVPalette256& operator=( const TProgmemRGBPalette16& rhs)
    -
    552  {
    -
    553  CHSVPalette16 p16(rhs);
    -
    554  *this = p16;
    -
    555  return *this;
    -
    556  }
    -
    557 
    -
    558  inline CHSV& operator[] (uint8_t x) __attribute__((always_inline))
    -
    559  {
    -
    560  return entries[x];
    -
    561  }
    -
    562  inline const CHSV& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    551 
    +
    552  CHSVPalette256( const CHSVPalette16& rhs16)
    +
    553  {
    +
    554  UpscalePalette( rhs16, *this);
    +
    555  }
    +
    556  CHSVPalette256& operator=( const CHSVPalette16& rhs16)
    +
    557  {
    +
    558  UpscalePalette( rhs16, *this);
    +
    559  return *this;
    +
    560  }
    +
    561 
    +
    562  CHSVPalette256( const TProgmemRGBPalette16& rhs)
    563  {
    -
    564  return entries[x];
    -
    565  }
    -
    566 
    -
    567  inline CHSV& operator[] (int x) __attribute__((always_inline))
    +
    564  CHSVPalette16 p16(rhs);
    +
    565  *this = p16;
    +
    566  }
    +
    567  CHSVPalette256& operator=( const TProgmemRGBPalette16& rhs)
    568  {
    -
    569  return entries[(uint8_t)x];
    -
    570  }
    -
    571  inline const CHSV& operator[] (int x) const __attribute__((always_inline))
    -
    572  {
    -
    573  return entries[(uint8_t)x];
    -
    574  }
    -
    575 
    -
    576  operator CHSV*()
    -
    577  {
    -
    578  return &(entries[0]);
    -
    579  }
    -
    580 
    -
    581  CHSVPalette256( const CHSV& c1)
    -
    582  {
    -
    583  fill_solid( &(entries[0]), 256, c1);
    -
    584  }
    -
    585  CHSVPalette256( const CHSV& c1, const CHSV& c2)
    -
    586  {
    -
    587  fill_gradient( &(entries[0]), 256, c1, c2);
    -
    588  }
    -
    589  CHSVPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    -
    590  {
    -
    591  fill_gradient( &(entries[0]), 256, c1, c2, c3);
    -
    592  }
    -
    593  CHSVPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    -
    594  {
    -
    595  fill_gradient( &(entries[0]), 256, c1, c2, c3, c4);
    -
    596  }
    -
    597 };
    -
    598 
    - -
    600 public:
    -
    601  CRGB entries[16];
    -
    602  CRGBPalette16() {};
    -
    603  CRGBPalette16( const CRGB& c00,const CRGB& c01,const CRGB& c02,const CRGB& c03,
    -
    604  const CRGB& c04,const CRGB& c05,const CRGB& c06,const CRGB& c07,
    -
    605  const CRGB& c08,const CRGB& c09,const CRGB& c10,const CRGB& c11,
    -
    606  const CRGB& c12,const CRGB& c13,const CRGB& c14,const CRGB& c15 )
    -
    607  {
    -
    608  entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;
    -
    609  entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;
    -
    610  entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;
    -
    611  entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;
    -
    612  };
    -
    613 
    -
    614  CRGBPalette16( const CRGBPalette16& rhs)
    +
    569  CHSVPalette16 p16(rhs);
    +
    570  *this = p16;
    +
    571  return *this;
    +
    572  }
    +
    573 
    +
    574  inline CHSV& operator[] (uint8_t x) __attribute__((always_inline))
    +
    575  {
    +
    576  return entries[x];
    +
    577  }
    +
    578  inline const CHSV& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    579  {
    +
    580  return entries[x];
    +
    581  }
    +
    582 
    +
    583  inline CHSV& operator[] (int x) __attribute__((always_inline))
    +
    584  {
    +
    585  return entries[(uint8_t)x];
    +
    586  }
    +
    587  inline const CHSV& operator[] (int x) const __attribute__((always_inline))
    +
    588  {
    +
    589  return entries[(uint8_t)x];
    +
    590  }
    +
    591 
    +
    592  operator CHSV*()
    +
    593  {
    +
    594  return &(entries[0]);
    +
    595  }
    +
    596 
    +
    597  bool operator==( const CHSVPalette256 rhs)
    +
    598  {
    +
    599  const uint8_t* p = (const uint8_t*)(&(this->entries[0]));
    +
    600  const uint8_t* q = (const uint8_t*)(&(rhs.entries[0]));
    +
    601  if( p == q) return true;
    +
    602  for( uint16_t i = 0; i < (sizeof( entries)); i++) {
    +
    603  if( *p != *q) return false;
    +
    604  p++;
    +
    605  q++;
    +
    606  }
    +
    607  return true;
    +
    608  }
    +
    609  bool operator!=( const CHSVPalette256 rhs)
    +
    610  {
    +
    611  return !( *this == rhs);
    +
    612  }
    +
    613 
    +
    614  CHSVPalette256( const CHSV& c1)
    615  {
    -
    616  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    616  fill_solid( &(entries[0]), 256, c1);
    617  }
    -
    618  CRGBPalette16& operator=( const CRGBPalette16& rhs)
    +
    618  CHSVPalette256( const CHSV& c1, const CHSV& c2)
    619  {
    -
    620  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    621  return *this;
    -
    622  }
    -
    623 
    -
    624  CRGBPalette16( const CHSVPalette16& rhs)
    -
    625  {
    -
    626  for( uint8_t i = 0; i < 16; i++) {
    -
    627  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    -
    628  }
    +
    620  fill_gradient( &(entries[0]), 256, c1, c2);
    +
    621  }
    +
    622  CHSVPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    +
    623  {
    +
    624  fill_gradient( &(entries[0]), 256, c1, c2, c3);
    +
    625  }
    +
    626  CHSVPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    +
    627  {
    +
    628  fill_gradient( &(entries[0]), 256, c1, c2, c3, c4);
    629  }
    -
    630  CRGBPalette16& operator=( const CHSVPalette16& rhs)
    -
    631  {
    -
    632  for( uint8_t i = 0; i < 16; i++) {
    -
    633  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    -
    634  }
    -
    635  return *this;
    -
    636  }
    -
    637 
    -
    638  CRGBPalette16( const TProgmemRGBPalette16& rhs)
    -
    639  {
    -
    640  for( uint8_t i = 0; i < 16; i++) {
    -
    641  entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);
    -
    642  }
    -
    643  }
    -
    644  CRGBPalette16& operator=( const TProgmemRGBPalette16& rhs)
    -
    645  {
    -
    646  for( uint8_t i = 0; i < 16; i++) {
    -
    647  entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);
    -
    648  }
    -
    649  return *this;
    +
    630 };
    +
    631 
    + +
    633 public:
    +
    634  CRGB entries[16];
    +
    635  CRGBPalette16() {};
    +
    636  CRGBPalette16( const CRGB& c00,const CRGB& c01,const CRGB& c02,const CRGB& c03,
    +
    637  const CRGB& c04,const CRGB& c05,const CRGB& c06,const CRGB& c07,
    +
    638  const CRGB& c08,const CRGB& c09,const CRGB& c10,const CRGB& c11,
    +
    639  const CRGB& c12,const CRGB& c13,const CRGB& c14,const CRGB& c15 )
    +
    640  {
    +
    641  entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;
    +
    642  entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;
    +
    643  entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;
    +
    644  entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;
    +
    645  };
    +
    646 
    +
    647  CRGBPalette16( const CRGBPalette16& rhs)
    +
    648  {
    +
    649  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    650  }
    -
    651 
    -
    652  inline CRGB& operator[] (uint8_t x) __attribute__((always_inline))
    -
    653  {
    -
    654  return entries[x];
    +
    651  CRGBPalette16& operator=( const CRGBPalette16& rhs)
    +
    652  {
    +
    653  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    654  return *this;
    655  }
    -
    656  inline const CRGB& operator[] (uint8_t x) const __attribute__((always_inline))
    -
    657  {
    -
    658  return entries[x];
    -
    659  }
    -
    660 
    -
    661  inline CRGB& operator[] (int x) __attribute__((always_inline))
    -
    662  {
    -
    663  return entries[(uint8_t)x];
    -
    664  }
    -
    665  inline const CRGB& operator[] (int x) const __attribute__((always_inline))
    -
    666  {
    -
    667  return entries[(uint8_t)x];
    -
    668  }
    -
    669 
    -
    670  operator CRGB*()
    -
    671  {
    -
    672  return &(entries[0]);
    -
    673  }
    -
    674 
    -
    675  CRGBPalette16( const CHSV& c1)
    -
    676  {
    -
    677  fill_solid( &(entries[0]), 16, c1);
    -
    678  }
    -
    679  CRGBPalette16( const CHSV& c1, const CHSV& c2)
    -
    680  {
    -
    681  fill_gradient( &(entries[0]), 16, c1, c2);
    -
    682  }
    -
    683  CRGBPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    -
    684  {
    -
    685  fill_gradient( &(entries[0]), 16, c1, c2, c3);
    -
    686  }
    -
    687  CRGBPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    -
    688  {
    -
    689  fill_gradient( &(entries[0]), 16, c1, c2, c3, c4);
    -
    690  }
    -
    691 
    -
    692  CRGBPalette16( const CRGB& c1)
    -
    693  {
    -
    694  fill_solid( &(entries[0]), 16, c1);
    -
    695  }
    -
    696  CRGBPalette16( const CRGB& c1, const CRGB& c2)
    -
    697  {
    -
    698  fill_gradient_RGB( &(entries[0]), 16, c1, c2);
    -
    699  }
    -
    700  CRGBPalette16( const CRGB& c1, const CRGB& c2, const CRGB& c3)
    -
    701  {
    -
    702  fill_gradient_RGB( &(entries[0]), 16, c1, c2, c3);
    -
    703  }
    -
    704  CRGBPalette16( const CRGB& c1, const CRGB& c2, const CRGB& c3, const CRGB& c4)
    -
    705  {
    -
    706  fill_gradient_RGB( &(entries[0]), 16, c1, c2, c3, c4);
    -
    707  }
    -
    708 
    -
    709 
    -
    710  // Gradient palettes are loaded into CRGB16Palettes in such a way
    -
    711  // that, if possible, every color represented in the gradient palette
    -
    712  // is also represented in the CRGBPalette16.
    -
    713  // For example, consider a gradient palette that is all black except
    -
    714  // for a single, one-element-wide (1/256th!) spike of red in the middle:
    -
    715  // 0, 0,0,0
    -
    716  // 124, 0,0,0
    -
    717  // 125, 255,0,0 // one 1/256th-palette-wide red stripe
    -
    718  // 126, 0,0,0
    -
    719  // 255, 0,0,0
    -
    720  // A naive conversion of this 256-element palette to a 16-element palette
    -
    721  // might accidentally completely eliminate the red spike, rendering the
    -
    722  // palette completely black.
    -
    723  // However, the conversions provided here would attempt to include a
    -
    724  // the red stripe in the output, more-or-less as faithfully as possible.
    -
    725  // So in this case, the resulting CRGBPalette16 palette would have a red
    -
    726  // stripe in the middle which was 1/16th of a palette wide -- the
    -
    727  // narrowest possible in a CRGBPalette16.
    -
    728  // This means that the relative width of stripes in a CRGBPalette16
    -
    729  // will be, by definition, different from the widths in the gradient
    -
    730  // palette. This code attempts to preserve "all the colors", rather than
    -
    731  // the exact stripe widths at the expense of dropping some colors.
    -
    732  CRGBPalette16( TProgmemRGBGradientPalette_bytes progpal )
    -
    733  {
    -
    734  *this = progpal;
    -
    735  }
    -
    736  CRGBPalette16& operator=( TProgmemRGBGradientPalette_bytes progpal )
    -
    737  {
    - - -
    740 
    -
    741  // Count entries
    -
    742  uint8_t count = 0;
    -
    743  do {
    -
    744  u.dword = FL_PGM_READ_DWORD_NEAR(progent + count);
    -
    745  count++;;
    -
    746  } while ( u.index != 255);
    -
    747 
    -
    748  int8_t lastSlotUsed = -1;
    -
    749 
    -
    750  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    -
    751  CRGB rgbstart( u.r, u.g, u.b);
    -
    752 
    -
    753  int indexstart = 0;
    -
    754  uint8_t istart8 = 0;
    -
    755  uint8_t iend8 = 0;
    -
    756  while( indexstart < 255) {
    -
    757  progent++;
    -
    758  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    -
    759  int indexend = u.index;
    -
    760  CRGB rgbend( u.r, u.g, u.b);
    -
    761  istart8 = indexstart / 16;
    -
    762  iend8 = indexend / 16;
    -
    763  if( count < 16) {
    -
    764  if( (istart8 <= lastSlotUsed) && (lastSlotUsed < 15)) {
    -
    765  istart8 = lastSlotUsed + 1;
    -
    766  if( iend8 < istart8) {
    -
    767  iend8 = istart8;
    -
    768  }
    -
    769  }
    -
    770  lastSlotUsed = iend8;
    -
    771  }
    -
    772  fill_gradient_RGB( &(entries[0]), istart8, rgbstart, iend8, rgbend);
    -
    773  indexstart = indexend;
    -
    774  rgbstart = rgbend;
    -
    775  }
    -
    776  return *this;
    -
    777  }
    -
    778  CRGBPalette16& loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )
    -
    779  {
    - - -
    782 
    -
    783  // Count entries
    -
    784  uint8_t count = 0;
    -
    785  do {
    -
    786  u = *(ent + count);
    -
    787  count++;;
    -
    788  } while ( u.index != 255);
    -
    789 
    -
    790  int8_t lastSlotUsed = -1;
    -
    791 
    -
    792 
    -
    793  u = *ent;
    -
    794  CRGB rgbstart( u.r, u.g, u.b);
    -
    795 
    -
    796  int indexstart = 0;
    -
    797  uint8_t istart8 = 0;
    -
    798  uint8_t iend8 = 0;
    -
    799  while( indexstart < 255) {
    -
    800  ent++;
    -
    801  u = *ent;
    -
    802  int indexend = u.index;
    -
    803  CRGB rgbend( u.r, u.g, u.b);
    -
    804  istart8 = indexstart / 16;
    -
    805  iend8 = indexend / 16;
    -
    806  if( count < 16) {
    -
    807  if( (istart8 <= lastSlotUsed) && (lastSlotUsed < 15)) {
    -
    808  istart8 = lastSlotUsed + 1;
    -
    809  if( iend8 < istart8) {
    -
    810  iend8 = istart8;
    -
    811  }
    -
    812  }
    -
    813  lastSlotUsed = iend8;
    -
    814  }
    -
    815  fill_gradient_RGB( &(entries[0]), istart8, rgbstart, iend8, rgbend);
    -
    816  indexstart = indexend;
    -
    817  rgbstart = rgbend;
    -
    818  }
    -
    819  return *this;
    -
    820  }
    -
    821 
    -
    822 };
    -
    823 
    - -
    825 public:
    -
    826  CRGB entries[256];
    -
    827  CRGBPalette256() {};
    -
    828  CRGBPalette256( const CRGB& c00,const CRGB& c01,const CRGB& c02,const CRGB& c03,
    -
    829  const CRGB& c04,const CRGB& c05,const CRGB& c06,const CRGB& c07,
    -
    830  const CRGB& c08,const CRGB& c09,const CRGB& c10,const CRGB& c11,
    -
    831  const CRGB& c12,const CRGB& c13,const CRGB& c14,const CRGB& c15 )
    -
    832  {
    -
    833  CRGBPalette16 p16(c00,c01,c02,c03,c04,c05,c06,c07,
    -
    834  c08,c09,c10,c11,c12,c13,c14,c15);
    -
    835  *this = p16;
    -
    836  };
    -
    837 
    -
    838  CRGBPalette256( const CRGBPalette256& rhs)
    -
    839  {
    -
    840  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    841  }
    -
    842  CRGBPalette256& operator=( const CRGBPalette256& rhs)
    -
    843  {
    -
    844  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    -
    845  return *this;
    -
    846  }
    -
    847 
    -
    848  CRGBPalette256( const CHSVPalette256& rhs)
    -
    849  {
    -
    850  for( int i = 0; i < 256; i++) {
    -
    851  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    -
    852  }
    -
    853  }
    -
    854  CRGBPalette256& operator=( const CHSVPalette256& rhs)
    -
    855  {
    -
    856  for( int i = 0; i < 256; i++) {
    -
    857  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    -
    858  }
    -
    859  return *this;
    -
    860  }
    -
    861 
    -
    862  CRGBPalette256( const CRGBPalette16& rhs16)
    -
    863  {
    -
    864  UpscalePalette( rhs16, *this);
    -
    865  }
    -
    866  CRGBPalette256& operator=( const CRGBPalette16& rhs16)
    -
    867  {
    -
    868  UpscalePalette( rhs16, *this);
    +
    656 
    +
    657  CRGBPalette16( const CHSVPalette16& rhs)
    +
    658  {
    +
    659  for( uint8_t i = 0; i < 16; i++) {
    +
    660  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    +
    661  }
    +
    662  }
    +
    663  CRGBPalette16& operator=( const CHSVPalette16& rhs)
    +
    664  {
    +
    665  for( uint8_t i = 0; i < 16; i++) {
    +
    666  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    +
    667  }
    +
    668  return *this;
    +
    669  }
    +
    670 
    +
    671  CRGBPalette16( const TProgmemRGBPalette16& rhs)
    +
    672  {
    +
    673  for( uint8_t i = 0; i < 16; i++) {
    +
    674  entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);
    +
    675  }
    +
    676  }
    +
    677  CRGBPalette16& operator=( const TProgmemRGBPalette16& rhs)
    +
    678  {
    +
    679  for( uint8_t i = 0; i < 16; i++) {
    +
    680  entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);
    +
    681  }
    +
    682  return *this;
    +
    683  }
    +
    684 
    +
    685  bool operator==( const CRGBPalette16 rhs)
    +
    686  {
    +
    687  const uint8_t* p = (const uint8_t*)(&(this->entries[0]));
    +
    688  const uint8_t* q = (const uint8_t*)(&(rhs.entries[0]));
    +
    689  if( p == q) return true;
    +
    690  for( uint8_t i = 0; i < (sizeof( entries)); i++) {
    +
    691  if( *p != *q) return false;
    +
    692  p++;
    +
    693  q++;
    +
    694  }
    +
    695  return true;
    +
    696  }
    +
    697  bool operator!=( const CRGBPalette16 rhs)
    +
    698  {
    +
    699  return !( *this == rhs);
    +
    700  }
    +
    701 
    +
    702  inline CRGB& operator[] (uint8_t x) __attribute__((always_inline))
    +
    703  {
    +
    704  return entries[x];
    +
    705  }
    +
    706  inline const CRGB& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    707  {
    +
    708  return entries[x];
    +
    709  }
    +
    710 
    +
    711  inline CRGB& operator[] (int x) __attribute__((always_inline))
    +
    712  {
    +
    713  return entries[(uint8_t)x];
    +
    714  }
    +
    715  inline const CRGB& operator[] (int x) const __attribute__((always_inline))
    +
    716  {
    +
    717  return entries[(uint8_t)x];
    +
    718  }
    +
    719 
    +
    720  operator CRGB*()
    +
    721  {
    +
    722  return &(entries[0]);
    +
    723  }
    +
    724 
    +
    725  CRGBPalette16( const CHSV& c1)
    +
    726  {
    +
    727  fill_solid( &(entries[0]), 16, c1);
    +
    728  }
    +
    729  CRGBPalette16( const CHSV& c1, const CHSV& c2)
    +
    730  {
    +
    731  fill_gradient( &(entries[0]), 16, c1, c2);
    +
    732  }
    +
    733  CRGBPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    +
    734  {
    +
    735  fill_gradient( &(entries[0]), 16, c1, c2, c3);
    +
    736  }
    +
    737  CRGBPalette16( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    +
    738  {
    +
    739  fill_gradient( &(entries[0]), 16, c1, c2, c3, c4);
    +
    740  }
    +
    741 
    +
    742  CRGBPalette16( const CRGB& c1)
    +
    743  {
    +
    744  fill_solid( &(entries[0]), 16, c1);
    +
    745  }
    +
    746  CRGBPalette16( const CRGB& c1, const CRGB& c2)
    +
    747  {
    +
    748  fill_gradient_RGB( &(entries[0]), 16, c1, c2);
    +
    749  }
    +
    750  CRGBPalette16( const CRGB& c1, const CRGB& c2, const CRGB& c3)
    +
    751  {
    +
    752  fill_gradient_RGB( &(entries[0]), 16, c1, c2, c3);
    +
    753  }
    +
    754  CRGBPalette16( const CRGB& c1, const CRGB& c2, const CRGB& c3, const CRGB& c4)
    +
    755  {
    +
    756  fill_gradient_RGB( &(entries[0]), 16, c1, c2, c3, c4);
    +
    757  }
    +
    758 
    +
    759 
    +
    760  // Gradient palettes are loaded into CRGB16Palettes in such a way
    +
    761  // that, if possible, every color represented in the gradient palette
    +
    762  // is also represented in the CRGBPalette16.
    +
    763  // For example, consider a gradient palette that is all black except
    +
    764  // for a single, one-element-wide (1/256th!) spike of red in the middle:
    +
    765  // 0, 0,0,0
    +
    766  // 124, 0,0,0
    +
    767  // 125, 255,0,0 // one 1/256th-palette-wide red stripe
    +
    768  // 126, 0,0,0
    +
    769  // 255, 0,0,0
    +
    770  // A naive conversion of this 256-element palette to a 16-element palette
    +
    771  // might accidentally completely eliminate the red spike, rendering the
    +
    772  // palette completely black.
    +
    773  // However, the conversions provided here would attempt to include a
    +
    774  // the red stripe in the output, more-or-less as faithfully as possible.
    +
    775  // So in this case, the resulting CRGBPalette16 palette would have a red
    +
    776  // stripe in the middle which was 1/16th of a palette wide -- the
    +
    777  // narrowest possible in a CRGBPalette16.
    +
    778  // This means that the relative width of stripes in a CRGBPalette16
    +
    779  // will be, by definition, different from the widths in the gradient
    +
    780  // palette. This code attempts to preserve "all the colors", rather than
    +
    781  // the exact stripe widths at the expense of dropping some colors.
    +
    782  CRGBPalette16( TProgmemRGBGradientPalette_bytes progpal )
    +
    783  {
    +
    784  *this = progpal;
    +
    785  }
    +
    786  CRGBPalette16& operator=( TProgmemRGBGradientPalette_bytes progpal )
    +
    787  {
    + + +
    790 
    +
    791  // Count entries
    +
    792  uint8_t count = 0;
    +
    793  do {
    +
    794  u.dword = FL_PGM_READ_DWORD_NEAR(progent + count);
    +
    795  count++;;
    +
    796  } while ( u.index != 255);
    +
    797 
    +
    798  int8_t lastSlotUsed = -1;
    +
    799 
    +
    800  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    +
    801  CRGB rgbstart( u.r, u.g, u.b);
    +
    802 
    +
    803  int indexstart = 0;
    +
    804  uint8_t istart8 = 0;
    +
    805  uint8_t iend8 = 0;
    +
    806  while( indexstart < 255) {
    +
    807  progent++;
    +
    808  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    +
    809  int indexend = u.index;
    +
    810  CRGB rgbend( u.r, u.g, u.b);
    +
    811  istart8 = indexstart / 16;
    +
    812  iend8 = indexend / 16;
    +
    813  if( count < 16) {
    +
    814  if( (istart8 <= lastSlotUsed) && (lastSlotUsed < 15)) {
    +
    815  istart8 = lastSlotUsed + 1;
    +
    816  if( iend8 < istart8) {
    +
    817  iend8 = istart8;
    +
    818  }
    +
    819  }
    +
    820  lastSlotUsed = iend8;
    +
    821  }
    +
    822  fill_gradient_RGB( &(entries[0]), istart8, rgbstart, iend8, rgbend);
    +
    823  indexstart = indexend;
    +
    824  rgbstart = rgbend;
    +
    825  }
    +
    826  return *this;
    +
    827  }
    +
    828  CRGBPalette16& loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )
    +
    829  {
    + + +
    832 
    +
    833  // Count entries
    +
    834  uint8_t count = 0;
    +
    835  do {
    +
    836  u = *(ent + count);
    +
    837  count++;;
    +
    838  } while ( u.index != 255);
    +
    839 
    +
    840  int8_t lastSlotUsed = -1;
    +
    841 
    +
    842 
    +
    843  u = *ent;
    +
    844  CRGB rgbstart( u.r, u.g, u.b);
    +
    845 
    +
    846  int indexstart = 0;
    +
    847  uint8_t istart8 = 0;
    +
    848  uint8_t iend8 = 0;
    +
    849  while( indexstart < 255) {
    +
    850  ent++;
    +
    851  u = *ent;
    +
    852  int indexend = u.index;
    +
    853  CRGB rgbend( u.r, u.g, u.b);
    +
    854  istart8 = indexstart / 16;
    +
    855  iend8 = indexend / 16;
    +
    856  if( count < 16) {
    +
    857  if( (istart8 <= lastSlotUsed) && (lastSlotUsed < 15)) {
    +
    858  istart8 = lastSlotUsed + 1;
    +
    859  if( iend8 < istart8) {
    +
    860  iend8 = istart8;
    +
    861  }
    +
    862  }
    +
    863  lastSlotUsed = iend8;
    +
    864  }
    +
    865  fill_gradient_RGB( &(entries[0]), istart8, rgbstart, iend8, rgbend);
    +
    866  indexstart = indexend;
    +
    867  rgbstart = rgbend;
    +
    868  }
    869  return *this;
    870  }
    871 
    -
    872  CRGBPalette256( const TProgmemRGBPalette16& rhs)
    -
    873  {
    -
    874  CRGBPalette16 p16(rhs);
    -
    875  *this = p16;
    -
    876  }
    -
    877  CRGBPalette256& operator=( const TProgmemRGBPalette16& rhs)
    -
    878  {
    -
    879  CRGBPalette16 p16(rhs);
    -
    880  *this = p16;
    -
    881  return *this;
    -
    882  }
    -
    883 
    -
    884  inline CRGB& operator[] (uint8_t x) __attribute__((always_inline))
    -
    885  {
    -
    886  return entries[x];
    -
    887  }
    -
    888  inline const CRGB& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    872 };
    +
    873 
    + +
    875 public:
    +
    876  CRGB entries[256];
    +
    877  CRGBPalette256() {};
    +
    878  CRGBPalette256( const CRGB& c00,const CRGB& c01,const CRGB& c02,const CRGB& c03,
    +
    879  const CRGB& c04,const CRGB& c05,const CRGB& c06,const CRGB& c07,
    +
    880  const CRGB& c08,const CRGB& c09,const CRGB& c10,const CRGB& c11,
    +
    881  const CRGB& c12,const CRGB& c13,const CRGB& c14,const CRGB& c15 )
    +
    882  {
    +
    883  CRGBPalette16 p16(c00,c01,c02,c03,c04,c05,c06,c07,
    +
    884  c08,c09,c10,c11,c12,c13,c14,c15);
    +
    885  *this = p16;
    +
    886  };
    +
    887 
    +
    888  CRGBPalette256( const CRGBPalette256& rhs)
    889  {
    -
    890  return entries[x];
    +
    890  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    891  }
    -
    892 
    -
    893  inline CRGB& operator[] (int x) __attribute__((always_inline))
    -
    894  {
    -
    895  return entries[(uint8_t)x];
    +
    892  CRGBPalette256& operator=( const CRGBPalette256& rhs)
    +
    893  {
    +
    894  memmove8( &(entries[0]), &(rhs.entries[0]), sizeof( entries));
    +
    895  return *this;
    896  }
    -
    897  inline const CRGB& operator[] (int x) const __attribute__((always_inline))
    -
    898  {
    -
    899  return entries[(uint8_t)x];
    -
    900  }
    -
    901 
    -
    902  operator CRGB*()
    -
    903  {
    -
    904  return &(entries[0]);
    -
    905  }
    -
    906 
    -
    907  CRGBPalette256( const CHSV& c1)
    -
    908  {
    -
    909  fill_solid( &(entries[0]), 256, c1);
    +
    897 
    +
    898  CRGBPalette256( const CHSVPalette256& rhs)
    +
    899  {
    +
    900  for( int i = 0; i < 256; i++) {
    +
    901  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    +
    902  }
    +
    903  }
    +
    904  CRGBPalette256& operator=( const CHSVPalette256& rhs)
    +
    905  {
    +
    906  for( int i = 0; i < 256; i++) {
    +
    907  entries[i] = rhs.entries[i]; // implicit HSV-to-RGB conversion
    +
    908  }
    +
    909  return *this;
    910  }
    -
    911  CRGBPalette256( const CHSV& c1, const CHSV& c2)
    -
    912  {
    -
    913  fill_gradient( &(entries[0]), 256, c1, c2);
    -
    914  }
    -
    915  CRGBPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    -
    916  {
    -
    917  fill_gradient( &(entries[0]), 256, c1, c2, c3);
    -
    918  }
    -
    919  CRGBPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    -
    920  {
    -
    921  fill_gradient( &(entries[0]), 256, c1, c2, c3, c4);
    -
    922  }
    -
    923 
    -
    924  CRGBPalette256( const CRGB& c1)
    -
    925  {
    -
    926  fill_solid( &(entries[0]), 256, c1);
    -
    927  }
    -
    928  CRGBPalette256( const CRGB& c1, const CRGB& c2)
    -
    929  {
    -
    930  fill_gradient_RGB( &(entries[0]), 256, c1, c2);
    -
    931  }
    -
    932  CRGBPalette256( const CRGB& c1, const CRGB& c2, const CRGB& c3)
    -
    933  {
    -
    934  fill_gradient_RGB( &(entries[0]), 256, c1, c2, c3);
    -
    935  }
    -
    936  CRGBPalette256( const CRGB& c1, const CRGB& c2, const CRGB& c3, const CRGB& c4)
    -
    937  {
    -
    938  fill_gradient_RGB( &(entries[0]), 256, c1, c2, c3, c4);
    -
    939  }
    -
    940 
    -
    941  CRGBPalette256( TProgmemRGBGradientPalette_bytes progpal )
    -
    942  {
    -
    943  *this = progpal;
    -
    944  }
    -
    945  CRGBPalette256& operator=( TProgmemRGBGradientPalette_bytes progpal )
    -
    946  {
    - - -
    949  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    -
    950  CRGB rgbstart( u.r, u.g, u.b);
    -
    951 
    -
    952  int indexstart = 0;
    -
    953  while( indexstart < 255) {
    -
    954  progent++;
    -
    955  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    -
    956  int indexend = u.index;
    -
    957  CRGB rgbend( u.r, u.g, u.b);
    -
    958  fill_gradient_RGB( &(entries[0]), indexstart, rgbstart, indexend, rgbend);
    -
    959  indexstart = indexend;
    -
    960  rgbstart = rgbend;
    -
    961  }
    -
    962  return *this;
    +
    911 
    +
    912  CRGBPalette256( const CRGBPalette16& rhs16)
    +
    913  {
    +
    914  UpscalePalette( rhs16, *this);
    +
    915  }
    +
    916  CRGBPalette256& operator=( const CRGBPalette16& rhs16)
    +
    917  {
    +
    918  UpscalePalette( rhs16, *this);
    +
    919  return *this;
    +
    920  }
    +
    921 
    +
    922  CRGBPalette256( const TProgmemRGBPalette16& rhs)
    +
    923  {
    +
    924  CRGBPalette16 p16(rhs);
    +
    925  *this = p16;
    +
    926  }
    +
    927  CRGBPalette256& operator=( const TProgmemRGBPalette16& rhs)
    +
    928  {
    +
    929  CRGBPalette16 p16(rhs);
    +
    930  *this = p16;
    +
    931  return *this;
    +
    932  }
    +
    933 
    +
    934  bool operator==( const CRGBPalette256 rhs)
    +
    935  {
    +
    936  const uint8_t* p = (const uint8_t*)(&(this->entries[0]));
    +
    937  const uint8_t* q = (const uint8_t*)(&(rhs.entries[0]));
    +
    938  if( p == q) return true;
    +
    939  for( uint16_t i = 0; i < (sizeof( entries)); i++) {
    +
    940  if( *p != *q) return false;
    +
    941  p++;
    +
    942  q++;
    +
    943  }
    +
    944  return true;
    +
    945  }
    +
    946  bool operator!=( const CRGBPalette256 rhs)
    +
    947  {
    +
    948  return !( *this == rhs);
    +
    949  }
    +
    950 
    +
    951  inline CRGB& operator[] (uint8_t x) __attribute__((always_inline))
    +
    952  {
    +
    953  return entries[x];
    +
    954  }
    +
    955  inline const CRGB& operator[] (uint8_t x) const __attribute__((always_inline))
    +
    956  {
    +
    957  return entries[x];
    +
    958  }
    +
    959 
    +
    960  inline CRGB& operator[] (int x) __attribute__((always_inline))
    +
    961  {
    +
    962  return entries[(uint8_t)x];
    963  }
    -
    964  CRGBPalette256& loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )
    +
    964  inline const CRGB& operator[] (int x) const __attribute__((always_inline))
    965  {
    - - -
    968  u = *ent;
    -
    969  CRGB rgbstart( u.r, u.g, u.b);
    -
    970 
    -
    971  int indexstart = 0;
    -
    972  while( indexstart < 255) {
    -
    973  ent++;
    -
    974  u = *ent;
    -
    975  int indexend = u.index;
    -
    976  CRGB rgbend( u.r, u.g, u.b);
    -
    977  fill_gradient_RGB( &(entries[0]), indexstart, rgbstart, indexend, rgbend);
    -
    978  indexstart = indexend;
    -
    979  rgbstart = rgbend;
    -
    980  }
    -
    981  return *this;
    -
    982  }
    -
    983 };
    -
    984 
    -
    985 
    -
    986 
    -
    987 
    -
    988 typedef enum { NOBLEND=0, LINEARBLEND=1 } TBlendType;
    -
    989 
    -
    990 CRGB ColorFromPalette( const CRGBPalette16& pal,
    -
    991  uint8_t index,
    -
    992  uint8_t brightness=255,
    -
    993  TBlendType blendType=LINEARBLEND);
    -
    994 
    -
    995 CRGB ColorFromPalette( const TProgmemRGBPalette16& pal,
    -
    996  uint8_t index,
    -
    997  uint8_t brightness=255,
    -
    998  TBlendType blendType=LINEARBLEND);
    -
    999 
    -
    1000 CRGB ColorFromPalette( const CRGBPalette256& pal,
    -
    1001  uint8_t index,
    -
    1002  uint8_t brightness=255,
    -
    1003  TBlendType blendType=NOBLEND );
    -
    1004 
    -
    1005 CHSV ColorFromPalette( const CHSVPalette16& pal,
    -
    1006  uint8_t index,
    -
    1007  uint8_t brightness=255,
    -
    1008  TBlendType blendType=LINEARBLEND);
    -
    1009 
    -
    1010 CHSV ColorFromPalette( const CHSVPalette256& pal,
    -
    1011  uint8_t index,
    -
    1012  uint8_t brightness=255,
    -
    1013  TBlendType blendType=NOBLEND );
    -
    1014 
    -
    1015 
    -
    1016 // Fill a range of LEDs with a sequece of entryies from a palette
    -
    1017 template <typename PALETTE>
    -
    1018 void fill_palette(CRGB* L, uint16_t N, uint8_t startIndex, uint8_t incIndex,
    -
    1019  const PALETTE& pal, uint8_t brightness, TBlendType blendType)
    -
    1020 {
    -
    1021  uint8_t colorIndex = startIndex;
    -
    1022  for( uint16_t i = 0; i < N; i++) {
    -
    1023  L[i] = ColorFromPalette( pal, colorIndex, brightness, blendType);
    -
    1024  colorIndex += incIndex;
    -
    1025  }
    -
    1026 }
    -
    1027 
    -
    1028 template <typename PALETTE>
    -
    1029 void map_data_into_colors_through_palette(
    -
    1030  uint8_t *dataArray, uint16_t dataCount,
    -
    1031  CRGB* targetColorArray,
    -
    1032  const PALETTE& pal,
    -
    1033  uint8_t brightness=255,
    -
    1034  uint8_t opacity=255,
    -
    1035  TBlendType blendType=LINEARBLEND)
    -
    1036 {
    -
    1037  for( uint16_t i = 0; i < dataCount; i++) {
    -
    1038  uint8_t d = dataArray[i];
    -
    1039  CRGB rgb = ColorFromPalette( pal, d, brightness, blendType);
    -
    1040  if( opacity == 255 ) {
    -
    1041  targetColorArray[i] = rgb;
    -
    1042  } else {
    -
    1043  targetColorArray[i].nscale8( 256 - opacity);
    -
    1044  rgb.nscale8_video( opacity);
    -
    1045  targetColorArray[i] += rgb;
    -
    1046  }
    -
    1047  }
    -
    1048 }
    -
    1049 
    -
    1050 // nblendPaletteTowardPalette:
    -
    1051 // Alter one palette by making it slightly more like
    -
    1052 // a 'target palette', used for palette cross-fades.
    -
    1053 //
    -
    1054 // It does this by comparing each of the R, G, and B channels
    -
    1055 // of each entry in the current palette to the corresponding
    -
    1056 // entry in the target palette and making small adjustments:
    -
    1057 // If the Red channel is too low, it will be increased.
    -
    1058 // If the Red channel is too high, it will be slightly reduced.
    -
    1059 // ... and likewise for Green and Blue channels.
    -
    1060 //
    -
    1061 // Additionally, there are two significant visual improvements
    -
    1062 // to this algorithm implemented here. First is this:
    -
    1063 // When increasing a channel, it is stepped up by ONE.
    -
    1064 // When decreasing a channel, it is stepped down by TWO.
    -
    1065 // Due to the way the eye perceives light, and the way colors
    -
    1066 // are represented in RGB, this produces a more uniform apparent
    -
    1067 // brightness when cross-fading between most palette colors.
    -
    1068 //
    -
    1069 // The second visual tweak is limiting the number of changes
    -
    1070 // that will be made to the palette at once. If all the palette
    -
    1071 // entries are changed at once, it can give a muddled appearance.
    -
    1072 // However, if only a few palette entries are changed at once,
    -
    1073 // you get a visually smoother transition: in the middle of the
    -
    1074 // cross-fade your current palette will actually contain some
    -
    1075 // colors from the old palette, a few blended colors, and some
    -
    1076 // colors from the new palette.
    -
    1077 // The maximum number of possible palette changes per call
    -
    1078 // is 48 (sixteen color entries time three channels each).
    -
    1079 // The default 'maximim number of changes' here is 12, meaning
    -
    1080 // that only approximately a quarter of the palette entries
    -
    1081 // will be changed per call.
    -
    1082 void nblendPaletteTowardPalette( CRGBPalette16& currentPalette,
    -
    1083  CRGBPalette16& targetPalette,
    -
    1084  uint8_t maxChanges=24);
    -
    1085 
    -
    1086 
    -
    1087 
    -
    1088 
    -
    1089 // You can also define a static RGB palette very compactly in terms of a series
    -
    1090 // of connected color gradients.
    -
    1091 // For example, if you want the first 3/4ths of the palette to be a slow
    -
    1092 // gradient ramping from black to red, and then the remaining 1/4 of the
    -
    1093 // palette to be a quicker ramp to white, you specify just three points: the
    -
    1094 // starting black point (at index 0), the red midpoint (at index 192),
    -
    1095 // and the final white point (at index 255). It looks like this:
    -
    1096 //
    -
    1097 // index: 0 192 255
    -
    1098 // |----------r-r-r-rrrrrrrrRrRrRrRrRRRR-|-RRWRWWRWWW-|
    -
    1099 // color: (0,0,0) (255,0,0) (255,255,255)
    -
    1100 //
    -
    1101 // Here's how you'd define that gradient palette:
    -
    1102 //
    -
    1103 // DEFINE_GRADIENT_PALETTE( black_to_red_to_white_p ) {
    -
    1104 // 0, 0, 0, 0, /* at index 0, black(0,0,0) */
    -
    1105 // 192, 255, 0, 0, /* at index 192, red(255,0,0) */
    -
    1106 // 255, 255,255,255 /* at index 255, white(255,255,255) */
    -
    1107 // };
    -
    1108 //
    -
    1109 // This format is designed for compact storage. The example palette here
    -
    1110 // takes up just 12 bytes of PROGMEM (flash) storage, and zero bytes
    -
    1111 // of SRAM when not currently in use.
    -
    1112 //
    -
    1113 // To use one of these gradient palettes, simply assign it into a
    -
    1114 // CRGBPalette16 or a CRGBPalette256, like this:
    -
    1115 //
    -
    1116 // CRGBPalette16 pal = black_to_red_to_white_p;
    -
    1117 //
    -
    1118 // When the assignment is made, the gradients are expanded out into
    -
    1119 // either 16 or 256 palette entries, depending on the kind of palette
    -
    1120 // object they're assigned to.
    -
    1121 //
    -
    1122 // IMPORTANT NOTES & CAVEATS:
    -
    1123 //
    -
    1124 // - The last 'index' position MUST BE 255! Failure to end with
    -
    1125 // index 255 will result in program hangs or crashes.
    -
    1126 //
    -
    1127 // - At this point, these gradient palette definitions MUST BE
    -
    1128 // stored in PROGMEM on AVR-based Arduinos. If you use the
    -
    1129 // DEFINE_GRADIENT_PALETTE macro, this is taken care of automatically.
    -
    1130 //
    -
    1131 
    -
    1132 #define DEFINE_GRADIENT_PALETTE(X) \
    -
    1133  extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM =
    -
    1134 
    -
    1135 #define DECLARE_GRADIENT_PALETTE(X) \
    -
    1136  extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM
    -
    1137 
    -
    1138 
    -
    1139 // Functions to apply gamma adjustments, either:
    -
    1140 // - a single gamma adjustment to a single scalar value,
    -
    1141 // - a single gamma adjustment to each channel of a CRGB color, or
    -
    1142 // - different gamma adjustments for each channel of a CRFB color.
    -
    1143 //
    -
    1144 // Note that the gamma is specified as a traditional floating point value
    -
    1145 // e.g., "2.5", and as such these functions should not be called in
    -
    1146 // your innermost pixel loops, or in animations that are extremely
    -
    1147 // low on program storage space. Nevertheless, if you need these
    -
    1148 // functions, here they are.
    -
    1149 //
    -
    1150 // Furthermore, bear in mind that CRGB leds have only eight bits
    -
    1151 // per channel of color resolution, and that very small, subtle shadings
    -
    1152 // may not be visible.
    -
    1153 uint8_t applyGamma_video( uint8_t brightness, float gamma);
    -
    1154 CRGB applyGamma_video( const CRGB& orig, float gamma);
    -
    1155 CRGB applyGamma_video( const CRGB& orig, float gammaR, float gammaG, float gammaB);
    -
    1156 // The "n" versions below modify their arguments in-place.
    -
    1157 CRGB& napplyGamma_video( CRGB& rgb, float gamma);
    -
    1158 CRGB& napplyGamma_video( CRGB& rgb, float gammaR, float gammaG, float gammaB);
    -
    1159 void napplyGamma_video( CRGB* rgbarray, uint16_t count, float gamma);
    -
    1160 void napplyGamma_video( CRGB* rgbarray, uint16_t count, float gammaR, float gammaG, float gammaB);
    -
    1161 
    -
    1162 
    -
    1163 FASTLED_NAMESPACE_END
    -
    1164 
    -
    1166 #endif
    +
    966  return entries[(uint8_t)x];
    +
    967  }
    +
    968 
    +
    969  operator CRGB*()
    +
    970  {
    +
    971  return &(entries[0]);
    +
    972  }
    +
    973 
    +
    974  CRGBPalette256( const CHSV& c1)
    +
    975  {
    +
    976  fill_solid( &(entries[0]), 256, c1);
    +
    977  }
    +
    978  CRGBPalette256( const CHSV& c1, const CHSV& c2)
    +
    979  {
    +
    980  fill_gradient( &(entries[0]), 256, c1, c2);
    +
    981  }
    +
    982  CRGBPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3)
    +
    983  {
    +
    984  fill_gradient( &(entries[0]), 256, c1, c2, c3);
    +
    985  }
    +
    986  CRGBPalette256( const CHSV& c1, const CHSV& c2, const CHSV& c3, const CHSV& c4)
    +
    987  {
    +
    988  fill_gradient( &(entries[0]), 256, c1, c2, c3, c4);
    +
    989  }
    +
    990 
    +
    991  CRGBPalette256( const CRGB& c1)
    +
    992  {
    +
    993  fill_solid( &(entries[0]), 256, c1);
    +
    994  }
    +
    995  CRGBPalette256( const CRGB& c1, const CRGB& c2)
    +
    996  {
    +
    997  fill_gradient_RGB( &(entries[0]), 256, c1, c2);
    +
    998  }
    +
    999  CRGBPalette256( const CRGB& c1, const CRGB& c2, const CRGB& c3)
    +
    1000  {
    +
    1001  fill_gradient_RGB( &(entries[0]), 256, c1, c2, c3);
    +
    1002  }
    +
    1003  CRGBPalette256( const CRGB& c1, const CRGB& c2, const CRGB& c3, const CRGB& c4)
    +
    1004  {
    +
    1005  fill_gradient_RGB( &(entries[0]), 256, c1, c2, c3, c4);
    +
    1006  }
    +
    1007 
    +
    1008  CRGBPalette256( TProgmemRGBGradientPalette_bytes progpal )
    +
    1009  {
    +
    1010  *this = progpal;
    +
    1011  }
    +
    1012  CRGBPalette256& operator=( TProgmemRGBGradientPalette_bytes progpal )
    +
    1013  {
    + + +
    1016  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    +
    1017  CRGB rgbstart( u.r, u.g, u.b);
    +
    1018 
    +
    1019  int indexstart = 0;
    +
    1020  while( indexstart < 255) {
    +
    1021  progent++;
    +
    1022  u.dword = FL_PGM_READ_DWORD_NEAR( progent);
    +
    1023  int indexend = u.index;
    +
    1024  CRGB rgbend( u.r, u.g, u.b);
    +
    1025  fill_gradient_RGB( &(entries[0]), indexstart, rgbstart, indexend, rgbend);
    +
    1026  indexstart = indexend;
    +
    1027  rgbstart = rgbend;
    +
    1028  }
    +
    1029  return *this;
    +
    1030  }
    +
    1031  CRGBPalette256& loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )
    +
    1032  {
    + + +
    1035  u = *ent;
    +
    1036  CRGB rgbstart( u.r, u.g, u.b);
    +
    1037 
    +
    1038  int indexstart = 0;
    +
    1039  while( indexstart < 255) {
    +
    1040  ent++;
    +
    1041  u = *ent;
    +
    1042  int indexend = u.index;
    +
    1043  CRGB rgbend( u.r, u.g, u.b);
    +
    1044  fill_gradient_RGB( &(entries[0]), indexstart, rgbstart, indexend, rgbend);
    +
    1045  indexstart = indexend;
    +
    1046  rgbstart = rgbend;
    +
    1047  }
    +
    1048  return *this;
    +
    1049  }
    +
    1050 };
    +
    1051 
    +
    1052 
    +
    1053 
    +
    1054 
    +
    1055 typedef enum { NOBLEND=0, LINEARBLEND=1 } TBlendType;
    +
    1056 
    +
    1057 CRGB ColorFromPalette( const CRGBPalette16& pal,
    +
    1058  uint8_t index,
    +
    1059  uint8_t brightness=255,
    +
    1060  TBlendType blendType=LINEARBLEND);
    +
    1061 
    +
    1062 CRGB ColorFromPalette( const TProgmemRGBPalette16& pal,
    +
    1063  uint8_t index,
    +
    1064  uint8_t brightness=255,
    +
    1065  TBlendType blendType=LINEARBLEND);
    +
    1066 
    +
    1067 CRGB ColorFromPalette( const CRGBPalette256& pal,
    +
    1068  uint8_t index,
    +
    1069  uint8_t brightness=255,
    +
    1070  TBlendType blendType=NOBLEND );
    +
    1071 
    +
    1072 CHSV ColorFromPalette( const CHSVPalette16& pal,
    +
    1073  uint8_t index,
    +
    1074  uint8_t brightness=255,
    +
    1075  TBlendType blendType=LINEARBLEND);
    +
    1076 
    +
    1077 CHSV ColorFromPalette( const CHSVPalette256& pal,
    +
    1078  uint8_t index,
    +
    1079  uint8_t brightness=255,
    +
    1080  TBlendType blendType=NOBLEND );
    +
    1081 
    +
    1082 
    +
    1083 // Fill a range of LEDs with a sequece of entryies from a palette
    +
    1084 template <typename PALETTE>
    +
    1085 void fill_palette(CRGB* L, uint16_t N, uint8_t startIndex, uint8_t incIndex,
    +
    1086  const PALETTE& pal, uint8_t brightness, TBlendType blendType)
    +
    1087 {
    +
    1088  uint8_t colorIndex = startIndex;
    +
    1089  for( uint16_t i = 0; i < N; i++) {
    +
    1090  L[i] = ColorFromPalette( pal, colorIndex, brightness, blendType);
    +
    1091  colorIndex += incIndex;
    +
    1092  }
    +
    1093 }
    +
    1094 
    +
    1095 template <typename PALETTE>
    +
    1096 void map_data_into_colors_through_palette(
    +
    1097  uint8_t *dataArray, uint16_t dataCount,
    +
    1098  CRGB* targetColorArray,
    +
    1099  const PALETTE& pal,
    +
    1100  uint8_t brightness=255,
    +
    1101  uint8_t opacity=255,
    +
    1102  TBlendType blendType=LINEARBLEND)
    +
    1103 {
    +
    1104  for( uint16_t i = 0; i < dataCount; i++) {
    +
    1105  uint8_t d = dataArray[i];
    +
    1106  CRGB rgb = ColorFromPalette( pal, d, brightness, blendType);
    +
    1107  if( opacity == 255 ) {
    +
    1108  targetColorArray[i] = rgb;
    +
    1109  } else {
    +
    1110  targetColorArray[i].nscale8( 256 - opacity);
    +
    1111  rgb.nscale8_video( opacity);
    +
    1112  targetColorArray[i] += rgb;
    +
    1113  }
    +
    1114  }
    +
    1115 }
    +
    1116 
    +
    1117 // nblendPaletteTowardPalette:
    +
    1118 // Alter one palette by making it slightly more like
    +
    1119 // a 'target palette', used for palette cross-fades.
    +
    1120 //
    +
    1121 // It does this by comparing each of the R, G, and B channels
    +
    1122 // of each entry in the current palette to the corresponding
    +
    1123 // entry in the target palette and making small adjustments:
    +
    1124 // If the Red channel is too low, it will be increased.
    +
    1125 // If the Red channel is too high, it will be slightly reduced.
    +
    1126 // ... and likewise for Green and Blue channels.
    +
    1127 //
    +
    1128 // Additionally, there are two significant visual improvements
    +
    1129 // to this algorithm implemented here. First is this:
    +
    1130 // When increasing a channel, it is stepped up by ONE.
    +
    1131 // When decreasing a channel, it is stepped down by TWO.
    +
    1132 // Due to the way the eye perceives light, and the way colors
    +
    1133 // are represented in RGB, this produces a more uniform apparent
    +
    1134 // brightness when cross-fading between most palette colors.
    +
    1135 //
    +
    1136 // The second visual tweak is limiting the number of changes
    +
    1137 // that will be made to the palette at once. If all the palette
    +
    1138 // entries are changed at once, it can give a muddled appearance.
    +
    1139 // However, if only a few palette entries are changed at once,
    +
    1140 // you get a visually smoother transition: in the middle of the
    +
    1141 // cross-fade your current palette will actually contain some
    +
    1142 // colors from the old palette, a few blended colors, and some
    +
    1143 // colors from the new palette.
    +
    1144 // The maximum number of possible palette changes per call
    +
    1145 // is 48 (sixteen color entries time three channels each).
    +
    1146 // The default 'maximim number of changes' here is 12, meaning
    +
    1147 // that only approximately a quarter of the palette entries
    +
    1148 // will be changed per call.
    +
    1149 void nblendPaletteTowardPalette( CRGBPalette16& currentPalette,
    +
    1150  CRGBPalette16& targetPalette,
    +
    1151  uint8_t maxChanges=24);
    +
    1152 
    +
    1153 
    +
    1154 
    +
    1155 
    +
    1156 // You can also define a static RGB palette very compactly in terms of a series
    +
    1157 // of connected color gradients.
    +
    1158 // For example, if you want the first 3/4ths of the palette to be a slow
    +
    1159 // gradient ramping from black to red, and then the remaining 1/4 of the
    +
    1160 // palette to be a quicker ramp to white, you specify just three points: the
    +
    1161 // starting black point (at index 0), the red midpoint (at index 192),
    +
    1162 // and the final white point (at index 255). It looks like this:
    +
    1163 //
    +
    1164 // index: 0 192 255
    +
    1165 // |----------r-r-r-rrrrrrrrRrRrRrRrRRRR-|-RRWRWWRWWW-|
    +
    1166 // color: (0,0,0) (255,0,0) (255,255,255)
    +
    1167 //
    +
    1168 // Here's how you'd define that gradient palette:
    +
    1169 //
    +
    1170 // DEFINE_GRADIENT_PALETTE( black_to_red_to_white_p ) {
    +
    1171 // 0, 0, 0, 0, /* at index 0, black(0,0,0) */
    +
    1172 // 192, 255, 0, 0, /* at index 192, red(255,0,0) */
    +
    1173 // 255, 255,255,255 /* at index 255, white(255,255,255) */
    +
    1174 // };
    +
    1175 //
    +
    1176 // This format is designed for compact storage. The example palette here
    +
    1177 // takes up just 12 bytes of PROGMEM (flash) storage, and zero bytes
    +
    1178 // of SRAM when not currently in use.
    +
    1179 //
    +
    1180 // To use one of these gradient palettes, simply assign it into a
    +
    1181 // CRGBPalette16 or a CRGBPalette256, like this:
    +
    1182 //
    +
    1183 // CRGBPalette16 pal = black_to_red_to_white_p;
    +
    1184 //
    +
    1185 // When the assignment is made, the gradients are expanded out into
    +
    1186 // either 16 or 256 palette entries, depending on the kind of palette
    +
    1187 // object they're assigned to.
    +
    1188 //
    +
    1189 // IMPORTANT NOTES & CAVEATS:
    +
    1190 //
    +
    1191 // - The last 'index' position MUST BE 255! Failure to end with
    +
    1192 // index 255 will result in program hangs or crashes.
    +
    1193 //
    +
    1194 // - At this point, these gradient palette definitions MUST BE
    +
    1195 // stored in PROGMEM on AVR-based Arduinos. If you use the
    +
    1196 // DEFINE_GRADIENT_PALETTE macro, this is taken care of automatically.
    +
    1197 //
    +
    1198 
    +
    1199 #define DEFINE_GRADIENT_PALETTE(X) \
    +
    1200  extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM =
    +
    1201 
    +
    1202 #define DECLARE_GRADIENT_PALETTE(X) \
    +
    1203  extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM
    +
    1204 
    +
    1205 
    +
    1206 // Functions to apply gamma adjustments, either:
    +
    1207 // - a single gamma adjustment to a single scalar value,
    +
    1208 // - a single gamma adjustment to each channel of a CRGB color, or
    +
    1209 // - different gamma adjustments for each channel of a CRFB color.
    +
    1210 //
    +
    1211 // Note that the gamma is specified as a traditional floating point value
    +
    1212 // e.g., "2.5", and as such these functions should not be called in
    +
    1213 // your innermost pixel loops, or in animations that are extremely
    +
    1214 // low on program storage space. Nevertheless, if you need these
    +
    1215 // functions, here they are.
    +
    1216 //
    +
    1217 // Furthermore, bear in mind that CRGB leds have only eight bits
    +
    1218 // per channel of color resolution, and that very small, subtle shadings
    +
    1219 // may not be visible.
    +
    1220 uint8_t applyGamma_video( uint8_t brightness, float gamma);
    +
    1221 CRGB applyGamma_video( const CRGB& orig, float gamma);
    +
    1222 CRGB applyGamma_video( const CRGB& orig, float gammaR, float gammaG, float gammaB);
    +
    1223 // The "n" versions below modify their arguments in-place.
    +
    1224 CRGB& napplyGamma_video( CRGB& rgb, float gamma);
    +
    1225 CRGB& napplyGamma_video( CRGB& rgb, float gammaR, float gammaG, float gammaB);
    +
    1226 void napplyGamma_video( CRGB* rgbarray, uint16_t count, float gamma);
    +
    1227 void napplyGamma_video( CRGB* rgbarray, uint16_t count, float gammaR, float gammaG, float gammaB);
    +
    1228 
    +
    1229 
    +
    1230 FASTLED_NAMESPACE_END
    +
    1231 
    +
    1233 #endif
    Representation of an RGB pixel (Red, Green, Blue)
    Definition: pixeltypes.h:88
    uint16_t accum88
    ANSI: unsigned short _Accum. 8 bits int, 8 bits fraction.
    Definition: lib8tion.h:343
    -
    Definition: colorutils.h:512
    -
    Definition: colorutils.h:599
    +
    Definition: colorutils.h:528
    +
    Definition: colorutils.h:632
    uint8_t fract8
    ANSI unsigned short _Fract.
    Definition: lib8tion.h:324
    void fill_rainbow(struct CRGB *pFirstLED, int numToFill, uint8_t initialhue, uint8_t deltahue=5)
    fill_rainbow - fill a range of LEDs with a rainbow of colors, at full saturation and full value (brig...
    Definition: colorutils.cpp:35
    void fill_gradient(T *targetArray, uint16_t startpos, CHSV startcolor, uint16_t endpos, CHSV endcolor, TGradientDirectionCode directionCode=SHORTEST_HUES)
    fill_gradient - fill an array of colors with a smooth HSV gradient between two specified HSV colors...
    Definition: colorutils.h:93
    -
    Definition: colorutils.h:425
    -
    Definition: colorutils.h:824
    +
    Definition: colorutils.h:424
    +
    Definition: colorutils.h:874
    __attribute__((always_inline)) inline void swapbits8(bitswap_type in
    Do an 8byte by 8bit rotation.
    Definition: fastled_delay.h:85
    Representation of an HSV pixel (hue, saturation, value (aka brightness)).
    Definition: pixeltypes.h:21
    void fill_solid(struct CRGB *leds, int numToFill, const struct CRGB &color)
    fill_solid - fill a range of LEDs with a solid color Example: fill_solid( leds, NUM_LEDS, CRGB(50,0,200));
    Definition: colorutils.cpp:12
    +
    Template class for represneting fractional ints.
    Definition: lib8tion.h:743
    wrapper definitions to allow seamless use of PROGMEM in environmens that have it
    Definition: colorutils.h:404
    diff --git a/docs/3.1/controller_8h.html b/docs/3.1/controller_8h.html index 6cc3bf5e..2d805ddd 100644 --- a/docs/3.1/controller_8h.html +++ b/docs/3.1/controller_8h.html @@ -118,7 +118,7 @@ typedef uint8_t EDitherMod diff --git a/docs/3.1/controller_8h_source.html b/docs/3.1/controller_8h_source.html index c4553305..3fcf8856 100644 --- a/docs/3.1/controller_8h_source.html +++ b/docs/3.1/controller_8h_source.html @@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    123  }
    124  }
    125 
    -
    127  int size() { return m_nLeds; }
    +
    127  virtual int size() { return m_nLeds; }
    128 
    130  CRGB* leds() { return m_Data; }
    131 
    @@ -202,465 +202,468 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    152  CRGB getTemperature() { return m_ColorTemperature; }
    153 
    155  CRGB getAdjustment(uint8_t scale) {
    -
    156 #if defined(NO_CORRECTION) && (NO_CORRECTION==1)
    -
    157  return CRGB(scale,scale,scale);
    -
    158 #else
    -
    159  CRGB adj(0,0,0);
    -
    160 
    -
    161  if(scale > 0) {
    -
    162  for(uint8_t i = 0; i < 3; i++) {
    -
    163  uint8_t cc = m_ColorCorrection.raw[i];
    -
    164  uint8_t ct = m_ColorTemperature.raw[i];
    -
    165  if(cc > 0 && ct > 0) {
    -
    166  uint32_t work = (((uint32_t)cc)+1) * (((uint32_t)ct)+1) * scale;
    -
    167  work /= 0x10000L;
    -
    168  adj.raw[i] = work & 0xFF;
    -
    169  }
    -
    170  }
    -
    171  }
    -
    172 
    -
    173  return adj;
    -
    174 #endif
    -
    175  }
    +
    156  return computeAdjustment(scale, m_ColorCorrection, m_ColorTemperature);
    +
    157  }
    +
    158 
    +
    159  static CRGB computeAdjustment(uint8_t scale, const CRGB & colorCorrection, const CRGB & colorTemperature) {
    +
    160  #if defined(NO_CORRECTION) && (NO_CORRECTION==1)
    +
    161  return CRGB(scale,scale,scale);
    +
    162  #else
    +
    163  CRGB adj(0,0,0);
    +
    164 
    +
    165  if(scale > 0) {
    +
    166  for(uint8_t i = 0; i < 3; i++) {
    +
    167  uint8_t cc = colorCorrection.raw[i];
    +
    168  uint8_t ct = colorTemperature.raw[i];
    +
    169  if(cc > 0 && ct > 0) {
    +
    170  uint32_t work = (((uint32_t)cc)+1) * (((uint32_t)ct)+1) * scale;
    +
    171  work /= 0x10000L;
    +
    172  adj.raw[i] = work & 0xFF;
    +
    173  }
    +
    174  }
    +
    175  }
    176 
    -
    177  virtual uint16_t getMaxRefreshRate() const { return 0; }
    -
    178 };
    -
    179 
    -
    183 template<EOrder RGB_ORDER>
    - -
    185  const uint8_t *mData;
    -
    186  int mLen;
    -
    187  uint8_t d[3];
    -
    188  uint8_t e[3];
    -
    189  CRGB mScale;
    -
    190  uint8_t mAdvance;
    -
    191 
    - -
    194  d[0] = other.d[0];
    -
    195  d[1] = other.d[1];
    -
    196  d[2] = other.d[2];
    -
    197  e[0] = other.e[0];
    -
    198  e[1] = other.e[1];
    -
    199  e[2] = other.e[2];
    -
    200  mData = other.mData;
    -
    201  mScale = other.mScale;
    -
    202  mAdvance = other.mAdvance;
    -
    203  mLen = other.mLen;
    -
    204  }
    -
    205 
    -
    206 
    -
    215  PixelController(const uint8_t *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER, bool advance=true, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {
    -
    216  enable_dithering(dither);
    -
    217  mData += skip;
    -
    218  mAdvance = (advance) ? 3+skip : 0;
    -
    219  }
    -
    220 
    -
    221  PixelController(const CRGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    -
    222  enable_dithering(dither);
    -
    223  mAdvance = 3;
    -
    224  }
    -
    225 
    -
    226  PixelController(const CRGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    -
    227  enable_dithering(dither);
    -
    228  mAdvance = 0;
    -
    229  }
    -
    230 
    -
    231 #ifdef SUPPORT_ARGB
    -
    232  PixelController(const CARGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    -
    233  enable_dithering(dither);
    -
    234  // skip the A in CARGB
    -
    235  mData += 1;
    -
    236  mAdvance = 0;
    -
    237  }
    -
    238 
    -
    239  PixelController(const CARGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    -
    240  enable_dithering(dither);
    -
    241  // skip the A in CARGB
    -
    242  mData += 1;
    -
    243  mAdvance = 4;
    -
    244  }
    -
    245 #endif
    -
    246 
    - -
    250 #if !defined(NO_DITHERING) || (NO_DITHERING != 1)
    -
    251 
    -
    252  // Set 'virtual bits' of dithering to the highest level
    -
    253  // that is not likely to cause excessive flickering at
    -
    254  // low brightness levels + low update rates.
    -
    255  // These pre-set values are a little ambitious, since
    -
    256  // a 400Hz update rate for WS2811-family LEDs is only
    -
    257  // possible with 85 pixels or fewer.
    -
    258  // Once we have a 'number of milliseconds since last update'
    -
    259  // value available here, we can quickly calculate the correct
    -
    260  // number of 'virtual bits' on the fly with a couple of 'if'
    -
    261  // statements -- no division required. At this point,
    -
    262  // the division is done at compile time, so there's no runtime
    -
    263  // cost, but the values are still hard-coded.
    -
    264 #define MAX_LIKELY_UPDATE_RATE_HZ 400
    -
    265 #define MIN_ACCEPTABLE_DITHER_RATE_HZ 50
    -
    266 #define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)
    -
    267 #define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE>1) + \
    -
    268  (UPDATES_PER_FULL_DITHER_CYCLE>2) + \
    -
    269  (UPDATES_PER_FULL_DITHER_CYCLE>4) + \
    -
    270  (UPDATES_PER_FULL_DITHER_CYCLE>8) + \
    -
    271  (UPDATES_PER_FULL_DITHER_CYCLE>16) + \
    -
    272  (UPDATES_PER_FULL_DITHER_CYCLE>32) + \
    -
    273  (UPDATES_PER_FULL_DITHER_CYCLE>64) + \
    -
    274  (UPDATES_PER_FULL_DITHER_CYCLE>128) )
    -
    275 #define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS
    -
    276 
    -
    277  // R is the digther signal 'counter'.
    -
    278  static byte R = 0;
    -
    279  R++;
    -
    280 
    -
    281  // R is wrapped around at 2^ditherBits,
    -
    282  // so if ditherBits is 2, R will cycle through (0,1,2,3)
    -
    283  byte ditherBits = VIRTUAL_BITS;
    -
    284  R &= (0x01 << ditherBits) - 1;
    -
    285 
    -
    286  // Q is the "unscaled dither signal" itself.
    -
    287  // It's initialized to the reversed bits of R.
    -
    288  // If 'ditherBits' is 2, Q here will cycle through (0,128,64,192)
    -
    289  byte Q = 0;
    -
    290 
    -
    291  // Reverse bits in a byte
    -
    292  {
    -
    293  if(R & 0x01) { Q |= 0x80; }
    -
    294  if(R & 0x02) { Q |= 0x40; }
    -
    295  if(R & 0x04) { Q |= 0x20; }
    -
    296  if(R & 0x08) { Q |= 0x10; }
    -
    297  if(R & 0x10) { Q |= 0x08; }
    -
    298  if(R & 0x20) { Q |= 0x04; }
    -
    299  if(R & 0x40) { Q |= 0x02; }
    -
    300  if(R & 0x80) { Q |= 0x01; }
    -
    301  }
    -
    302 
    -
    303  // Now we adjust Q to fall in the center of each range,
    -
    304  // instead of at the start of the range.
    -
    305  // If ditherBits is 2, Q will be (0, 128, 64, 192) at first,
    -
    306  // and this adjustment makes it (31, 159, 95, 223).
    -
    307  if( ditherBits < 8) {
    -
    308  Q += 0x01 << (7 - ditherBits);
    -
    309  }
    -
    310 
    -
    311  // D and E form the "scaled dither signal"
    -
    312  // which is added to pixel values to affect the
    -
    313  // actual dithering.
    -
    314 
    -
    315  // Setup the initial D and E values
    -
    316  for(int i = 0; i < 3; i++) {
    -
    317  byte s = mScale.raw[i];
    -
    318  e[i] = s ? (256/s) + 1 : 0;
    -
    319  d[i] = scale8(Q, e[i]);
    -
    320  if(e[i]) e[i]--;
    -
    321  }
    -
    322 #endif
    -
    323  }
    -
    324 
    -
    326  __attribute__((always_inline)) inline bool has(int n) {
    -
    327  return mLen >= n;
    -
    328  }
    -
    329 
    -
    331  void enable_dithering(EDitherMode dither) {
    -
    332  switch(dither) {
    -
    333  case BINARY_DITHER: init_binary_dithering(); break;
    -
    334  default: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; break;
    -
    335  }
    -
    336  }
    -
    337 
    -
    339  __attribute__((always_inline)) inline int advanceBy() { return mAdvance; }
    +
    177  return adj;
    +
    178  #endif
    +
    179  }
    +
    180  virtual uint16_t getMaxRefreshRate() const { return 0; }
    +
    181 };
    +
    182 
    +
    186 template<EOrder RGB_ORDER>
    + +
    188  const uint8_t *mData;
    +
    189  int mLen;
    +
    190  uint8_t d[3];
    +
    191  uint8_t e[3];
    +
    192  CRGB mScale;
    +
    193  uint8_t mAdvance;
    +
    194 
    + +
    197  d[0] = other.d[0];
    +
    198  d[1] = other.d[1];
    +
    199  d[2] = other.d[2];
    +
    200  e[0] = other.e[0];
    +
    201  e[1] = other.e[1];
    +
    202  e[2] = other.e[2];
    +
    203  mData = other.mData;
    +
    204  mScale = other.mScale;
    +
    205  mAdvance = other.mAdvance;
    +
    206  mLen = other.mLen;
    +
    207  }
    +
    208 
    +
    209 
    +
    218  PixelController(const uint8_t *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER, bool advance=true, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {
    +
    219  enable_dithering(dither);
    +
    220  mData += skip;
    +
    221  mAdvance = (advance) ? 3+skip : 0;
    +
    222  }
    +
    223 
    +
    224  PixelController(const CRGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    +
    225  enable_dithering(dither);
    +
    226  mAdvance = 3;
    +
    227  }
    +
    228 
    +
    229  PixelController(const CRGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    +
    230  enable_dithering(dither);
    +
    231  mAdvance = 0;
    +
    232  }
    +
    233 
    +
    234 #ifdef SUPPORT_ARGB
    +
    235  PixelController(const CARGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    +
    236  enable_dithering(dither);
    +
    237  // skip the A in CARGB
    +
    238  mData += 1;
    +
    239  mAdvance = 0;
    +
    240  }
    +
    241 
    +
    242  PixelController(const CARGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    +
    243  enable_dithering(dither);
    +
    244  // skip the A in CARGB
    +
    245  mData += 1;
    +
    246  mAdvance = 4;
    +
    247  }
    +
    248 #endif
    +
    249 
    + +
    253 #if !defined(NO_DITHERING) || (NO_DITHERING != 1)
    +
    254 
    +
    255  // Set 'virtual bits' of dithering to the highest level
    +
    256  // that is not likely to cause excessive flickering at
    +
    257  // low brightness levels + low update rates.
    +
    258  // These pre-set values are a little ambitious, since
    +
    259  // a 400Hz update rate for WS2811-family LEDs is only
    +
    260  // possible with 85 pixels or fewer.
    +
    261  // Once we have a 'number of milliseconds since last update'
    +
    262  // value available here, we can quickly calculate the correct
    +
    263  // number of 'virtual bits' on the fly with a couple of 'if'
    +
    264  // statements -- no division required. At this point,
    +
    265  // the division is done at compile time, so there's no runtime
    +
    266  // cost, but the values are still hard-coded.
    +
    267 #define MAX_LIKELY_UPDATE_RATE_HZ 400
    +
    268 #define MIN_ACCEPTABLE_DITHER_RATE_HZ 50
    +
    269 #define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)
    +
    270 #define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE>1) + \
    +
    271  (UPDATES_PER_FULL_DITHER_CYCLE>2) + \
    +
    272  (UPDATES_PER_FULL_DITHER_CYCLE>4) + \
    +
    273  (UPDATES_PER_FULL_DITHER_CYCLE>8) + \
    +
    274  (UPDATES_PER_FULL_DITHER_CYCLE>16) + \
    +
    275  (UPDATES_PER_FULL_DITHER_CYCLE>32) + \
    +
    276  (UPDATES_PER_FULL_DITHER_CYCLE>64) + \
    +
    277  (UPDATES_PER_FULL_DITHER_CYCLE>128) )
    +
    278 #define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS
    +
    279 
    +
    280  // R is the digther signal 'counter'.
    +
    281  static byte R = 0;
    +
    282  R++;
    +
    283 
    +
    284  // R is wrapped around at 2^ditherBits,
    +
    285  // so if ditherBits is 2, R will cycle through (0,1,2,3)
    +
    286  byte ditherBits = VIRTUAL_BITS;
    +
    287  R &= (0x01 << ditherBits) - 1;
    +
    288 
    +
    289  // Q is the "unscaled dither signal" itself.
    +
    290  // It's initialized to the reversed bits of R.
    +
    291  // If 'ditherBits' is 2, Q here will cycle through (0,128,64,192)
    +
    292  byte Q = 0;
    +
    293 
    +
    294  // Reverse bits in a byte
    +
    295  {
    +
    296  if(R & 0x01) { Q |= 0x80; }
    +
    297  if(R & 0x02) { Q |= 0x40; }
    +
    298  if(R & 0x04) { Q |= 0x20; }
    +
    299  if(R & 0x08) { Q |= 0x10; }
    +
    300  if(R & 0x10) { Q |= 0x08; }
    +
    301  if(R & 0x20) { Q |= 0x04; }
    +
    302  if(R & 0x40) { Q |= 0x02; }
    +
    303  if(R & 0x80) { Q |= 0x01; }
    +
    304  }
    +
    305 
    +
    306  // Now we adjust Q to fall in the center of each range,
    +
    307  // instead of at the start of the range.
    +
    308  // If ditherBits is 2, Q will be (0, 128, 64, 192) at first,
    +
    309  // and this adjustment makes it (31, 159, 95, 223).
    +
    310  if( ditherBits < 8) {
    +
    311  Q += 0x01 << (7 - ditherBits);
    +
    312  }
    +
    313 
    +
    314  // D and E form the "scaled dither signal"
    +
    315  // which is added to pixel values to affect the
    +
    316  // actual dithering.
    +
    317 
    +
    318  // Setup the initial D and E values
    +
    319  for(int i = 0; i < 3; i++) {
    +
    320  byte s = mScale.raw[i];
    +
    321  e[i] = s ? (256/s) + 1 : 0;
    +
    322  d[i] = scale8(Q, e[i]);
    +
    323  if(e[i]) e[i]--;
    +
    324  }
    +
    325 #endif
    +
    326  }
    +
    327 
    +
    329  __attribute__((always_inline)) inline bool has(int n) {
    +
    330  return mLen >= n;
    +
    331  }
    +
    332 
    +
    334  void enable_dithering(EDitherMode dither) {
    +
    335  switch(dither) {
    +
    336  case BINARY_DITHER: init_binary_dithering(); break;
    +
    337  default: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; break;
    +
    338  }
    +
    339  }
    340 
    -
    342  __attribute__((always_inline)) inline void advanceData() { mData += mAdvance; mLen--;}
    +
    342  __attribute__((always_inline)) inline int advanceBy() { return mAdvance; }
    343 
    -
    345  __attribute__((always_inline)) inline void stepDithering() {
    -
    346  // IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN
    -
    347  // clockless_trinket.h!
    -
    348  d[0] = e[0] - d[0];
    -
    349  d[1] = e[1] - d[1];
    -
    350  d[2] = e[2] - d[2];
    -
    351  }
    -
    352 
    -
    354  __attribute__((always_inline)) inline void preStepFirstByteDithering() {
    -
    355  d[RO(0)] = e[RO(0)] - d[RO(0)];
    -
    356  }
    -
    357 
    -
    358  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadByte(PixelController & pc) { return pc.mData[RO(SLOT)]; }
    -
    359  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(PixelController & pc, uint8_t b) { return b ? qadd8(b, pc.d[RO(SLOT)]) : 0; }
    -
    360  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(PixelController & pc, uint8_t b) { return scale8(b, pc.mScale.raw[RO(SLOT)]); }
    -
    361 
    -
    362  // composite shortcut functions for loading, dithering, and scaling
    -
    363  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(PixelController & pc) { return scale<SLOT>(pc, pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc))); }
    -
    364  template<int SLOT> __attribute__((always_inline)) inline static uint8_t advanceAndLoadAndScale(PixelController & pc) { pc.advanceData(); return pc.loadAndScale<SLOT>(pc); }
    -
    365 
    -
    366  // Helper functions to get around gcc stupidities
    -
    367  __attribute__((always_inline)) inline uint8_t loadAndScale0() { return loadAndScale<0>(*this); }
    -
    368  __attribute__((always_inline)) inline uint8_t loadAndScale1() { return loadAndScale<1>(*this); }
    -
    369  __attribute__((always_inline)) inline uint8_t loadAndScale2() { return loadAndScale<2>(*this); }
    -
    370  __attribute__((always_inline)) inline uint8_t advanceAndLoadAndScale0() { return advanceAndLoadAndScale<0>(*this); }
    -
    371  __attribute__((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0() { stepDithering(); return advanceAndLoadAndScale<0>(*this); }
    -
    372 };
    -
    373 
    -
    374 // Pixel controller class. This is the class that we use to centralize pixel access in a block of data, including
    -
    375 // support for things like RGB reordering, scaling, dithering, skipping (for ARGB data), and eventually, we will
    -
    376 // centralize 8/12/16 conversions here as well.
    -
    377 template<int LANES,int MASK, EOrder RGB_ORDER>
    - -
    379  const uint8_t *mData;
    -
    380  int mLen;
    -
    381  uint8_t d[3];
    -
    382  uint8_t e[3];
    -
    383  CRGB mScale;
    -
    384  int8_t mAdvance;
    -
    385  int mOffsets[LANES];
    -
    386 
    - -
    388  d[0] = other.d[0];
    -
    389  d[1] = other.d[1];
    -
    390  d[2] = other.d[2];
    -
    391  e[0] = other.e[0];
    -
    392  e[1] = other.e[1];
    -
    393  e[2] = other.e[2];
    -
    394  mData = other.mData;
    -
    395  mScale = other.mScale;
    -
    396  mAdvance = other.mAdvance;
    -
    397  mLen = other.mLen;
    -
    398  for(int i = 0; i < LANES; i++) { mOffsets[i] = other.mOffsets[i]; }
    -
    399 
    -
    400  }
    -
    401 
    -
    402  void initOffsets(int len) {
    -
    403  int nOffset = 0;
    -
    404  for(int i = 0; i < LANES; i++) {
    -
    405  mOffsets[i] = nOffset;
    -
    406  if((1<<i) & MASK) { nOffset += (len * mAdvance); }
    -
    407  }
    -
    408  }
    -
    409 
    -
    410  MultiPixelController(const uint8_t *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER, bool advance=true, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {
    -
    411  enable_dithering(dither);
    -
    412  mData += skip;
    -
    413  mAdvance = (advance) ? 3+skip : 0;
    -
    414  initOffsets(len);
    -
    415  }
    -
    416 
    -
    417  MultiPixelController(const CRGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    -
    418  enable_dithering(dither);
    -
    419  mAdvance = 3;
    -
    420  initOffsets(len);
    -
    421  }
    -
    422 
    -
    423  MultiPixelController(const CRGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    -
    424  enable_dithering(dither);
    -
    425  mAdvance = 0;
    -
    426  initOffsets(len);
    -
    427  }
    -
    428 
    -
    429 #ifdef SUPPORT_ARGB
    -
    430  MultiPixelController(const CARGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    -
    431  enable_dithering(dither);
    -
    432  // skip the A in CARGB
    -
    433  mData += 1;
    -
    434  mAdvance = 0;
    -
    435  initOffsets(len);
    -
    436  }
    -
    437 
    -
    438  MultiPixelController(const CARGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    -
    439  enable_dithering(dither);
    -
    440  // skip the A in CARGB
    -
    441  mData += 1;
    -
    442  mAdvance = 4;
    -
    443  initOffsets(len);
    -
    444  }
    -
    445 #endif
    -
    446 
    -
    447  void init_binary_dithering() {
    -
    448 #if !defined(NO_DITHERING) || (NO_DITHERING != 1)
    +
    345  __attribute__((always_inline)) inline void advanceData() { mData += mAdvance; mLen--;}
    +
    346 
    +
    348  __attribute__((always_inline)) inline void stepDithering() {
    +
    349  // IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN
    +
    350  // clockless_trinket.h!
    +
    351  d[0] = e[0] - d[0];
    +
    352  d[1] = e[1] - d[1];
    +
    353  d[2] = e[2] - d[2];
    +
    354  }
    +
    355 
    +
    357  __attribute__((always_inline)) inline void preStepFirstByteDithering() {
    +
    358  d[RO(0)] = e[RO(0)] - d[RO(0)];
    +
    359  }
    +
    360 
    +
    361  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadByte(PixelController & pc) { return pc.mData[RO(SLOT)]; }
    +
    362  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(PixelController & pc, uint8_t b) { return b ? qadd8(b, pc.d[RO(SLOT)]) : 0; }
    +
    363  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(PixelController & pc, uint8_t b) { return scale8(b, pc.mScale.raw[RO(SLOT)]); }
    +
    364 
    +
    365  // composite shortcut functions for loading, dithering, and scaling
    +
    366  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(PixelController & pc) { return scale<SLOT>(pc, pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc))); }
    +
    367  template<int SLOT> __attribute__((always_inline)) inline static uint8_t advanceAndLoadAndScale(PixelController & pc) { pc.advanceData(); return pc.loadAndScale<SLOT>(pc); }
    +
    368 
    +
    369  // Helper functions to get around gcc stupidities
    +
    370  __attribute__((always_inline)) inline uint8_t loadAndScale0() { return loadAndScale<0>(*this); }
    +
    371  __attribute__((always_inline)) inline uint8_t loadAndScale1() { return loadAndScale<1>(*this); }
    +
    372  __attribute__((always_inline)) inline uint8_t loadAndScale2() { return loadAndScale<2>(*this); }
    +
    373  __attribute__((always_inline)) inline uint8_t advanceAndLoadAndScale0() { return advanceAndLoadAndScale<0>(*this); }
    +
    374  __attribute__((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0() { stepDithering(); return advanceAndLoadAndScale<0>(*this); }
    +
    375 };
    +
    376 
    +
    377 // Pixel controller class. This is the class that we use to centralize pixel access in a block of data, including
    +
    378 // support for things like RGB reordering, scaling, dithering, skipping (for ARGB data), and eventually, we will
    +
    379 // centralize 8/12/16 conversions here as well.
    +
    380 template<int LANES,int MASK, EOrder RGB_ORDER>
    + +
    382  const uint8_t *mData;
    +
    383  int mLen;
    +
    384  uint8_t d[3];
    +
    385  uint8_t e[3];
    +
    386  CRGB mScale;
    +
    387  int8_t mAdvance;
    +
    388  int mOffsets[LANES];
    +
    389 
    + +
    391  d[0] = other.d[0];
    +
    392  d[1] = other.d[1];
    +
    393  d[2] = other.d[2];
    +
    394  e[0] = other.e[0];
    +
    395  e[1] = other.e[1];
    +
    396  e[2] = other.e[2];
    +
    397  mData = other.mData;
    +
    398  mScale = other.mScale;
    +
    399  mAdvance = other.mAdvance;
    +
    400  mLen = other.mLen;
    +
    401  for(int i = 0; i < LANES; i++) { mOffsets[i] = other.mOffsets[i]; }
    +
    402 
    +
    403  }
    +
    404 
    +
    405  void initOffsets(int len) {
    +
    406  int nOffset = 0;
    +
    407  for(int i = 0; i < LANES; i++) {
    +
    408  mOffsets[i] = nOffset;
    +
    409  if((1<<i) & MASK) { nOffset += (len * mAdvance); }
    +
    410  }
    +
    411  }
    +
    412 
    +
    413  MultiPixelController(const uint8_t *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER, bool advance=true, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {
    +
    414  enable_dithering(dither);
    +
    415  mData += skip;
    +
    416  mAdvance = (advance) ? 3+skip : 0;
    +
    417  initOffsets(len);
    +
    418  }
    +
    419 
    +
    420  MultiPixelController(const CRGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    +
    421  enable_dithering(dither);
    +
    422  mAdvance = 3;
    +
    423  initOffsets(len);
    +
    424  }
    +
    425 
    +
    426  MultiPixelController(const CRGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    +
    427  enable_dithering(dither);
    +
    428  mAdvance = 0;
    +
    429  initOffsets(len);
    +
    430  }
    +
    431 
    +
    432 #ifdef SUPPORT_ARGB
    +
    433  MultiPixelController(const CARGB &d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&d), mLen(len), mScale(s) {
    +
    434  enable_dithering(dither);
    +
    435  // skip the A in CARGB
    +
    436  mData += 1;
    +
    437  mAdvance = 0;
    +
    438  initOffsets(len);
    +
    439  }
    +
    440 
    +
    441  MultiPixelController(const CARGB *d, int len, CRGB & s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {
    +
    442  enable_dithering(dither);
    +
    443  // skip the A in CARGB
    +
    444  mData += 1;
    +
    445  mAdvance = 4;
    +
    446  initOffsets(len);
    +
    447  }
    +
    448 #endif
    449 
    -
    450  // Set 'virtual bits' of dithering to the highest level
    -
    451  // that is not likely to cause excessive flickering at
    -
    452  // low brightness levels + low update rates.
    -
    453  // These pre-set values are a little ambitious, since
    -
    454  // a 400Hz update rate for WS2811-family LEDs is only
    -
    455  // possible with 85 pixels or fewer.
    -
    456  // Once we have a 'number of milliseconds since last update'
    -
    457  // value available here, we can quickly calculate the correct
    -
    458  // number of 'virtual bits' on the fly with a couple of 'if'
    -
    459  // statements -- no division required. At this point,
    -
    460  // the division is done at compile time, so there's no runtime
    -
    461  // cost, but the values are still hard-coded.
    -
    462 #define MAX_LIKELY_UPDATE_RATE_HZ 400
    -
    463 #define MIN_ACCEPTABLE_DITHER_RATE_HZ 50
    -
    464 #define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)
    -
    465 #define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE>1) + \
    -
    466  (UPDATES_PER_FULL_DITHER_CYCLE>2) + \
    -
    467  (UPDATES_PER_FULL_DITHER_CYCLE>4) + \
    -
    468  (UPDATES_PER_FULL_DITHER_CYCLE>8) + \
    -
    469  (UPDATES_PER_FULL_DITHER_CYCLE>16) + \
    -
    470  (UPDATES_PER_FULL_DITHER_CYCLE>32) + \
    -
    471  (UPDATES_PER_FULL_DITHER_CYCLE>64) + \
    -
    472  (UPDATES_PER_FULL_DITHER_CYCLE>128) )
    -
    473 #define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS
    -
    474 
    -
    475  // R is the digther signal 'counter'.
    -
    476  static byte R = 0;
    -
    477  R++;
    -
    478 
    -
    479  // R is wrapped around at 2^ditherBits,
    -
    480  // so if ditherBits is 2, R will cycle through (0,1,2,3)
    -
    481  byte ditherBits = VIRTUAL_BITS;
    -
    482  R &= (0x01 << ditherBits) - 1;
    -
    483 
    -
    484  // Q is the "unscaled dither signal" itself.
    -
    485  // It's initialized to the reversed bits of R.
    -
    486  // If 'ditherBits' is 2, Q here will cycle through (0,128,64,192)
    -
    487  byte Q = 0;
    -
    488 
    -
    489  // Reverse bits in a byte
    -
    490  {
    -
    491  if(R & 0x01) { Q |= 0x80; }
    -
    492  if(R & 0x02) { Q |= 0x40; }
    -
    493  if(R & 0x04) { Q |= 0x20; }
    -
    494  if(R & 0x08) { Q |= 0x10; }
    -
    495  if(R & 0x10) { Q |= 0x08; }
    -
    496  if(R & 0x20) { Q |= 0x04; }
    -
    497  if(R & 0x40) { Q |= 0x02; }
    -
    498  if(R & 0x80) { Q |= 0x01; }
    -
    499  }
    -
    500 
    -
    501  // Now we adjust Q to fall in the center of each range,
    -
    502  // instead of at the start of the range.
    -
    503  // If ditherBits is 2, Q will be (0, 128, 64, 192) at first,
    -
    504  // and this adjustment makes it (31, 159, 95, 223).
    -
    505  if( ditherBits < 8) {
    -
    506  Q += 0x01 << (7 - ditherBits);
    -
    507  }
    -
    508 
    -
    509  // D and E form the "scaled dither signal"
    -
    510  // which is added to pixel values to affect the
    -
    511  // actual dithering.
    -
    512 
    -
    513  // Setup the initial D and E values
    -
    514  for(int i = 0; i < 3; i++) {
    -
    515  byte s = mScale.raw[i];
    -
    516  e[i] = s ? (256/s) + 1 : 0;
    -
    517  d[i] = scale8(Q, e[i]);
    -
    518  if(e[i]) e[i]--;
    -
    519  }
    -
    520 #endif
    -
    521  }
    -
    522 
    -
    523  // Do we have n pixels left to process?
    -
    524  __attribute__((always_inline)) inline bool has(int n) {
    -
    525  return mLen >= n;
    -
    526  }
    -
    527 
    -
    528  // toggle dithering enable
    -
    529  void enable_dithering(EDitherMode dither) {
    -
    530  switch(dither) {
    -
    531  case BINARY_DITHER: init_binary_dithering(); break;
    -
    532  default: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; break;
    -
    533  }
    -
    534  }
    -
    535 
    -
    536  // get the amount to advance the pointer by
    -
    537  __attribute__((always_inline)) inline int advanceBy() { return mAdvance; }
    +
    450  void init_binary_dithering() {
    +
    451 #if !defined(NO_DITHERING) || (NO_DITHERING != 1)
    +
    452 
    +
    453  // Set 'virtual bits' of dithering to the highest level
    +
    454  // that is not likely to cause excessive flickering at
    +
    455  // low brightness levels + low update rates.
    +
    456  // These pre-set values are a little ambitious, since
    +
    457  // a 400Hz update rate for WS2811-family LEDs is only
    +
    458  // possible with 85 pixels or fewer.
    +
    459  // Once we have a 'number of milliseconds since last update'
    +
    460  // value available here, we can quickly calculate the correct
    +
    461  // number of 'virtual bits' on the fly with a couple of 'if'
    +
    462  // statements -- no division required. At this point,
    +
    463  // the division is done at compile time, so there's no runtime
    +
    464  // cost, but the values are still hard-coded.
    +
    465 #define MAX_LIKELY_UPDATE_RATE_HZ 400
    +
    466 #define MIN_ACCEPTABLE_DITHER_RATE_HZ 50
    +
    467 #define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)
    +
    468 #define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE>1) + \
    +
    469  (UPDATES_PER_FULL_DITHER_CYCLE>2) + \
    +
    470  (UPDATES_PER_FULL_DITHER_CYCLE>4) + \
    +
    471  (UPDATES_PER_FULL_DITHER_CYCLE>8) + \
    +
    472  (UPDATES_PER_FULL_DITHER_CYCLE>16) + \
    +
    473  (UPDATES_PER_FULL_DITHER_CYCLE>32) + \
    +
    474  (UPDATES_PER_FULL_DITHER_CYCLE>64) + \
    +
    475  (UPDATES_PER_FULL_DITHER_CYCLE>128) )
    +
    476 #define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS
    +
    477 
    +
    478  // R is the digther signal 'counter'.
    +
    479  static byte R = 0;
    +
    480  R++;
    +
    481 
    +
    482  // R is wrapped around at 2^ditherBits,
    +
    483  // so if ditherBits is 2, R will cycle through (0,1,2,3)
    +
    484  byte ditherBits = VIRTUAL_BITS;
    +
    485  R &= (0x01 << ditherBits) - 1;
    +
    486 
    +
    487  // Q is the "unscaled dither signal" itself.
    +
    488  // It's initialized to the reversed bits of R.
    +
    489  // If 'ditherBits' is 2, Q here will cycle through (0,128,64,192)
    +
    490  byte Q = 0;
    +
    491 
    +
    492  // Reverse bits in a byte
    +
    493  {
    +
    494  if(R & 0x01) { Q |= 0x80; }
    +
    495  if(R & 0x02) { Q |= 0x40; }
    +
    496  if(R & 0x04) { Q |= 0x20; }
    +
    497  if(R & 0x08) { Q |= 0x10; }
    +
    498  if(R & 0x10) { Q |= 0x08; }
    +
    499  if(R & 0x20) { Q |= 0x04; }
    +
    500  if(R & 0x40) { Q |= 0x02; }
    +
    501  if(R & 0x80) { Q |= 0x01; }
    +
    502  }
    +
    503 
    +
    504  // Now we adjust Q to fall in the center of each range,
    +
    505  // instead of at the start of the range.
    +
    506  // If ditherBits is 2, Q will be (0, 128, 64, 192) at first,
    +
    507  // and this adjustment makes it (31, 159, 95, 223).
    +
    508  if( ditherBits < 8) {
    +
    509  Q += 0x01 << (7 - ditherBits);
    +
    510  }
    +
    511 
    +
    512  // D and E form the "scaled dither signal"
    +
    513  // which is added to pixel values to affect the
    +
    514  // actual dithering.
    +
    515 
    +
    516  // Setup the initial D and E values
    +
    517  for(int i = 0; i < 3; i++) {
    +
    518  byte s = mScale.raw[i];
    +
    519  e[i] = s ? (256/s) + 1 : 0;
    +
    520  d[i] = scale8(Q, e[i]);
    +
    521  if(e[i]) e[i]--;
    +
    522  }
    +
    523 #endif
    +
    524  }
    +
    525 
    +
    526  // Do we have n pixels left to process?
    +
    527  __attribute__((always_inline)) inline bool has(int n) {
    +
    528  return mLen >= n;
    +
    529  }
    +
    530 
    +
    531  // toggle dithering enable
    +
    532  void enable_dithering(EDitherMode dither) {
    +
    533  switch(dither) {
    +
    534  case BINARY_DITHER: init_binary_dithering(); break;
    +
    535  default: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; break;
    +
    536  }
    +
    537  }
    538 
    -
    539  // advance the data pointer forward, adjust position counter
    -
    540  __attribute__((always_inline)) inline void advanceData() { mData += mAdvance; mLen--;}
    +
    539  // get the amount to advance the pointer by
    +
    540  __attribute__((always_inline)) inline int advanceBy() { return mAdvance; }
    541 
    -
    542  // step the dithering forward
    -
    543  __attribute__((always_inline)) inline void stepDithering() {
    -
    544  // IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN
    -
    545  // clockless_trinket.h!
    -
    546  d[0] = e[0] - d[0];
    -
    547  d[1] = e[1] - d[1];
    -
    548  d[2] = e[2] - d[2];
    -
    549  }
    -
    550 
    -
    551  // Some chipsets pre-cycle the first byte, which means we want to cycle byte 0's dithering separately
    -
    552  __attribute__((always_inline)) inline void preStepFirstByteDithering() {
    -
    553  d[RO(0)] = e[RO(0)] - d[RO(0)];
    -
    554  }
    -
    555 
    -
    556  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadByte(MultiPixelController & pc, int lane) { return pc.mData[pc.mOffsets[lane] + RO(SLOT)]; }
    -
    557  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(MultiPixelController & pc, uint8_t b) { return b ? qadd8(b, pc.d[RO(SLOT)]) : 0; }
    -
    558  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(MultiPixelController & pc, uint8_t b, uint8_t d) { return b ? qadd8(b,d) : 0; }
    -
    559  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(MultiPixelController & pc, uint8_t b) { return scale8(b, pc.mScale.raw[RO(SLOT)]); }
    -
    560  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(MultiPixelController & pc, uint8_t b, uint8_t scale) { return scale8(b, scale); }
    -
    561 
    -
    562  // composite shortcut functions for loading, dithering, and scaling
    -
    563  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane) { return scale<SLOT>(pc, pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc, lane))); }
    -
    564  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane, uint8_t d, uint8_t scale) { return scale8(pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc, lane), d), scale); }
    -
    565  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane, uint8_t scale) { return scale8(pc.loadByte<SLOT>(pc, lane), scale); }
    -
    566  template<int SLOT> __attribute__((always_inline)) inline static uint8_t advanceAndLoadAndScale(MultiPixelController & pc, int lane) { pc.advanceData(); return pc.loadAndScale<SLOT>(pc, lane); }
    -
    567 
    -
    568  template<int SLOT> __attribute__((always_inline)) inline static uint8_t getd(MultiPixelController & pc) { return pc.d[RO(SLOT)]; }
    -
    569  template<int SLOT> __attribute__((always_inline)) inline static uint8_t getscale(MultiPixelController & pc) { return pc.mScale.raw[RO(SLOT)]; }
    +
    542  // advance the data pointer forward, adjust position counter
    +
    543  __attribute__((always_inline)) inline void advanceData() { mData += mAdvance; mLen--;}
    +
    544 
    +
    545  // step the dithering forward
    +
    546  __attribute__((always_inline)) inline void stepDithering() {
    +
    547  // IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN
    +
    548  // clockless_trinket.h!
    +
    549  d[0] = e[0] - d[0];
    +
    550  d[1] = e[1] - d[1];
    +
    551  d[2] = e[2] - d[2];
    +
    552  }
    +
    553 
    +
    554  // Some chipsets pre-cycle the first byte, which means we want to cycle byte 0's dithering separately
    +
    555  __attribute__((always_inline)) inline void preStepFirstByteDithering() {
    +
    556  d[RO(0)] = e[RO(0)] - d[RO(0)];
    +
    557  }
    +
    558 
    +
    559  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadByte(MultiPixelController & pc, int lane) { return pc.mData[pc.mOffsets[lane] + RO(SLOT)]; }
    +
    560  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(MultiPixelController & pc, uint8_t b) { return b ? qadd8(b, pc.d[RO(SLOT)]) : 0; }
    +
    561  template<int SLOT> __attribute__((always_inline)) inline static uint8_t dither(MultiPixelController & pc, uint8_t b, uint8_t d) { return b ? qadd8(b,d) : 0; }
    +
    562  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(MultiPixelController & pc, uint8_t b) { return scale8(b, pc.mScale.raw[RO(SLOT)]); }
    +
    563  template<int SLOT> __attribute__((always_inline)) inline static uint8_t scale(MultiPixelController & pc, uint8_t b, uint8_t scale) { return scale8(b, scale); }
    +
    564 
    +
    565  // composite shortcut functions for loading, dithering, and scaling
    +
    566  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane) { return scale<SLOT>(pc, pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc, lane))); }
    +
    567  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane, uint8_t d, uint8_t scale) { return scale8(pc.dither<SLOT>(pc, pc.loadByte<SLOT>(pc, lane), d), scale); }
    +
    568  template<int SLOT> __attribute__((always_inline)) inline static uint8_t loadAndScale(MultiPixelController & pc, int lane, uint8_t scale) { return scale8(pc.loadByte<SLOT>(pc, lane), scale); }
    +
    569  template<int SLOT> __attribute__((always_inline)) inline static uint8_t advanceAndLoadAndScale(MultiPixelController & pc, int lane) { pc.advanceData(); return pc.loadAndScale<SLOT>(pc, lane); }
    570 
    -
    571  // Helper functions to get around gcc stupidities
    -
    572  __attribute__((always_inline)) inline uint8_t loadAndScale0(int lane) { return loadAndScale<0>(*this, lane); }
    -
    573  __attribute__((always_inline)) inline uint8_t loadAndScale1(int lane) { return loadAndScale<1>(*this, lane); }
    -
    574  __attribute__((always_inline)) inline uint8_t loadAndScale2(int lane) { return loadAndScale<2>(*this, lane); }
    -
    575  __attribute__((always_inline)) inline uint8_t loadAndScale0(int lane, uint8_t d, uint8_t scale) { return loadAndScale<0>(*this, lane, d, scale); }
    -
    576  __attribute__((always_inline)) inline uint8_t loadAndScale1(int lane, uint8_t d, uint8_t scale) { return loadAndScale<1>(*this, lane, d, scale); }
    -
    577  __attribute__((always_inline)) inline uint8_t loadAndScale2(int lane, uint8_t d, uint8_t scale) { return loadAndScale<2>(*this, lane, d, scale); }
    -
    578  __attribute__((always_inline)) inline uint8_t advanceAndLoadAndScale0(int lane) { return advanceAndLoadAndScale<0>(*this, lane); }
    -
    579  __attribute__((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0(int lane) { stepDithering(); return advanceAndLoadAndScale<0>(*this, lane); }
    -
    580 };
    -
    581 
    -
    582 FASTLED_NAMESPACE_END
    -
    583 
    -
    584 #endif
    +
    571  template<int SLOT> __attribute__((always_inline)) inline static uint8_t getd(MultiPixelController & pc) { return pc.d[RO(SLOT)]; }
    +
    572  template<int SLOT> __attribute__((always_inline)) inline static uint8_t getscale(MultiPixelController & pc) { return pc.mScale.raw[RO(SLOT)]; }
    +
    573 
    +
    574  // Helper functions to get around gcc stupidities
    +
    575  __attribute__((always_inline)) inline uint8_t loadAndScale0(int lane) { return loadAndScale<0>(*this, lane); }
    +
    576  __attribute__((always_inline)) inline uint8_t loadAndScale1(int lane) { return loadAndScale<1>(*this, lane); }
    +
    577  __attribute__((always_inline)) inline uint8_t loadAndScale2(int lane) { return loadAndScale<2>(*this, lane); }
    +
    578  __attribute__((always_inline)) inline uint8_t loadAndScale0(int lane, uint8_t d, uint8_t scale) { return loadAndScale<0>(*this, lane, d, scale); }
    +
    579  __attribute__((always_inline)) inline uint8_t loadAndScale1(int lane, uint8_t d, uint8_t scale) { return loadAndScale<1>(*this, lane, d, scale); }
    +
    580  __attribute__((always_inline)) inline uint8_t loadAndScale2(int lane, uint8_t d, uint8_t scale) { return loadAndScale<2>(*this, lane, d, scale); }
    +
    581  __attribute__((always_inline)) inline uint8_t advanceAndLoadAndScale0(int lane) { return advanceAndLoadAndScale<0>(*this, lane); }
    +
    582  __attribute__((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0(int lane) { stepDithering(); return advanceAndLoadAndScale<0>(*this, lane); }
    +
    583 };
    +
    584 
    +
    585 FASTLED_NAMESPACE_END
    +
    586 
    +
    587 #endif
    CRGB getAdjustment(uint8_t scale)
    Get the combined brightness/color adjustment for this controller.
    Definition: controller.h:155
    void showLeds(uint8_t brightness=255)
    show function using the "attached to this controller" led data
    Definition: controller.h:91
    Representation of an RGB pixel (Red, Green, Blue)
    Definition: pixeltypes.h:88
    CRGB getCorrection()
    get the correction value used by this controller
    Definition: controller.h:145
    uncorrected color
    Definition: color.h:28
    Base definition for an LED controller.
    Definition: controller.h:37
    -
    __attribute__((always_inline)) inline void stepDithering()
    step the dithering forward
    Definition: controller.h:345
    +
    __attribute__((always_inline)) inline void stepDithering()
    step the dithering forward
    Definition: controller.h:348
    void clearLedData()
    zero out the led data managed by this controller
    Definition: controller.h:120
    CLEDController & setTemperature(CRGB temperature)
    set the color temperature, aka white point, for this controller
    Definition: controller.h:148
    LIB8STATIC uint8_t scale8(uint8_t i, fract8 scale)
    scale one byte by a second one, which is treated as the numerator of a fraction whose denominator is ...
    Definition: scale8.h:20
    CLEDController & setLeds(CRGB *data, int nLeds)
    set the default array of leds to be used by this controller
    Definition: controller.h:113
    -
    __attribute__((always_inline)) inline void preStepFirstByteDithering()
    Some chipsets pre-cycle the first byte, which means we want to cycle byte 0's dithering separately...
    Definition: controller.h:354
    -
    Definition: controller.h:378
    -
    PixelController(const PixelController &other)
    copy constructor for the pixel controller object
    Definition: controller.h:193
    -
    int size()
    How many leds does this controller manage?
    Definition: controller.h:127
    -
    High level controller interface for FastLED.
    Definition: FastLED.h:130
    +
    __attribute__((always_inline)) inline void preStepFirstByteDithering()
    Some chipsets pre-cycle the first byte, which means we want to cycle byte 0's dithering separately...
    Definition: controller.h:357
    +
    Definition: controller.h:381
    +
    PixelController(const PixelController &other)
    copy constructor for the pixel controller object
    Definition: controller.h:196
    +
    High level controller interface for FastLED.
    Definition: FastLED.h:137
    void showColor(const struct CRGB &data, int nLeds, uint8_t brightness)
    show function w/integer brightness, will scale for color correction and temperature ...
    Definition: controller.h:86
    CLEDController & setCorrection(CRGB correction)
    the the color corrction to use for this controller, expressed as an rgb object
    Definition: controller.h:141
    virtual void init()=0
    initialize the LED controller
    CRGB getTemperature()
    get the color temperature, aka whipe point, for this controller
    Definition: controller.h:152
    -
    Pixel controller class.
    Definition: controller.h:184
    +
    Pixel controller class.
    Definition: controller.h:187
    LIB8STATIC uint8_t qadd8(uint8_t i, uint8_t j)
    add one byte to another, saturating at 0xFF
    Definition: math8.h:21
    -
    __attribute__((always_inline)) inline void advanceData()
    advance the data pointer forward, adjust position counter
    Definition: controller.h:342
    +
    __attribute__((always_inline)) inline void advanceData()
    advance the data pointer forward, adjust position counter
    Definition: controller.h:345
    void showColor(const struct CRGB &data, uint8_t brightness=255)
    show the given color on the led strip
    Definition: controller.h:96
    -
    PixelController(const uint8_t *d, int len, CRGB &s, EDitherMode dither=BINARY_DITHER, bool advance=true, uint8_t skip=0)
    create a pixel controller for managing led data as it is being written out
    Definition: controller.h:215
    +
    PixelController(const uint8_t *d, int len, CRGB &s, EDitherMode dither=BINARY_DITHER, bool advance=true, uint8_t skip=0)
    create a pixel controller for managing led data as it is being written out
    Definition: controller.h:218
    CLEDController & setTemperature(ColorTemperature temperature)
    set the color temperature, aka white point, for this controller
    Definition: controller.h:150
    CLEDController * next()
    get the next controller in the chain after this one. will return NULL at the end of the chain ...
    Definition: controller.h:103
    Uncorrected temperature 0xFFFFFF.
    Definition: color.h:76
    CLEDController & setDither(uint8_t ditherMode=BINARY_DITHER)
    set the dithering mode for this controller to use
    Definition: controller.h:136
    CRGB * leds()
    Pointer to the CRGB array for this controller.
    Definition: controller.h:130
    LEDColorCorrection
    Definition: color.h:11
    -
    void enable_dithering(EDitherMode dither)
    toggle dithering enable
    Definition: controller.h:331
    +
    void enable_dithering(EDitherMode dither)
    toggle dithering enable
    Definition: controller.h:334
    virtual void show(const struct CRGB *data, int nLeds, CRGB scale)=0
    write the passed in rgb data out to the leds managed by this controller
    contains definitions for color correction and temperature
    -
    __attribute__((always_inline)) inline bool has(int n)
    Do we have n pixels left to process?
    Definition: controller.h:326
    +
    __attribute__((always_inline)) inline bool has(int n)
    Do we have n pixels left to process?
    Definition: controller.h:329
    CLEDController()
    create an led controller object, add it to the chain of controllers
    Definition: controller.h:67
    virtual void showColor(const struct CRGB &data, int nLeds, CRGB scale)=0
    set all the leds on the controller to a given color
    +
    virtual int size()
    How many leds does this controller manage?
    Definition: controller.h:127
    uint8_t getDither()
    get the dithering option currently set for this controller
    Definition: controller.h:138
    CLEDController & setCorrection(LEDColorCorrection correction)
    set the color correction to use for this controller
    Definition: controller.h:143
    virtual void clearLeds(int nLeds)=0
    clear out/zero out the given number of leds.
    void show(const struct CRGB *data, int nLeds, uint8_t brightness)
    show function w/integer brightness, will scale for color correction and temperature ...
    Definition: controller.h:81
    -
    void init_binary_dithering()
    initialize the binary dithering for this controller
    Definition: controller.h:249
    +
    void init_binary_dithering()
    initialize the binary dithering for this controller
    Definition: controller.h:252
    CRGB & operator[](int x)
    Reference to the n'th item in the controller.
    Definition: controller.h:133
    ColorTemperature
    Definition: color.h:33
    static CLEDController * head()
    get the first led controller in the chain of controllers
    Definition: controller.h:101
    -
    __attribute__((always_inline)) inline int advanceBy()
    get the amount to advance the pointer by
    Definition: controller.h:339
    +
    __attribute__((always_inline)) inline int advanceBy()
    get the amount to advance the pointer by
    Definition: controller.h:342
    diff --git a/docs/3.1/cpp__compat_8h_source.html b/docs/3.1/cpp__compat_8h_source.html new file mode 100644 index 00000000..abf1bdc1 --- /dev/null +++ b/docs/3.1/cpp__compat_8h_source.html @@ -0,0 +1,112 @@ + + + + + + +FastLED: cpp_compat.h Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    FastLED +  3.1 +
    +
    +
    + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    cpp_compat.h
    +
    +
    +
    1 #ifndef __INC_CPP_COMPAT_H
    +
    2 #define __INC_CPP_COMPAT_H
    +
    3 
    +
    4 #if __cplusplus <= 199711L
    +
    5 
    +
    6 #define static_assert(expression, message)
    +
    7 #define constexpr const
    +
    8 
    +
    9 #else
    +
    10 
    +
    11 // things that we can turn on if we're in a C++11 environment
    +
    12 #endif
    +
    13 
    +
    14 #endif
    +
    + + + + diff --git a/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html b/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html index 17e81ec1..5442bd22 100644 --- a/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html +++ b/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html @@ -107,7 +107,7 @@ Files diff --git a/docs/3.1/dmx_8h_source.html b/docs/3.1/dmx_8h_source.html index 6c0e8837..f91fbee6 100644 --- a/docs/3.1/dmx_8h_source.html +++ b/docs/3.1/dmx_8h_source.html @@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastled__config_8h.html b/docs/3.1/fastled__config_8h.html index 67054676..9dd86cbd 100644 --- a/docs/3.1/fastled__config_8h.html +++ b/docs/3.1/fastled__config_8h.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastled__config_8h_source.html b/docs/3.1/fastled__config_8h_source.html index f7066dea..7cc1f7d8 100644 --- a/docs/3.1/fastled__config_8h_source.html +++ b/docs/3.1/fastled__config_8h_source.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastled__delay_8h.html b/docs/3.1/fastled__delay_8h.html index 004ef404..8a4ffebd 100644 --- a/docs/3.1/fastled__delay_8h.html +++ b/docs/3.1/fastled__delay_8h.html @@ -128,7 +128,7 @@ template<> diff --git a/docs/3.1/fastled__delay_8h_source.html b/docs/3.1/fastled__delay_8h_source.html index dd37e7b5..f0e62501 100644 --- a/docs/3.1/fastled__delay_8h_source.html +++ b/docs/3.1/fastled__delay_8h_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastled__progmem_8h.html b/docs/3.1/fastled__progmem_8h.html index 0ca478ff..15174fca 100644 --- a/docs/3.1/fastled__progmem_8h.html +++ b/docs/3.1/fastled__progmem_8h.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastled__progmem_8h_source.html b/docs/3.1/fastled__progmem_8h_source.html index 6c099045..69b8a50e 100644 --- a/docs/3.1/fastled__progmem_8h_source.html +++ b/docs/3.1/fastled__progmem_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/fastpin_8h.html b/docs/3.1/fastpin_8h.html index e53fcd93..b7509747 100644 --- a/docs/3.1/fastpin_8h.html +++ b/docs/3.1/fastpin_8h.html @@ -115,6 +115,9 @@ Classes class  FastPin< PIN >  The simplest level of Pin class. More...
      +class  FastPin< PIN > + The simplest level of Pin class. More...
    +  class  FastPinBB< PIN >   @@ -132,7 +135,7 @@ typedef volatile uint32_t *  - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
    < diff --git a/docs/3.1/fastpin_8h_source.html b/docs/3.1/fastpin_8h_source.html index c6300dbd..bd708b41 100644 --- a/docs/3.1/fastpin_8h_source.html +++ b/docs/3.1/fastpin_8h_source.html @@ -92,196 +92,239 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    3 
    4 #include "led_sysdefs.h"
    5 
    +
    6 #pragma GCC diagnostic push
    +
    7 #pragma GCC diagnostic ignored "-Wignored-qualifiers"
    8 
    -
    9 FASTLED_NAMESPACE_BEGIN
    -
    10 
    -
    11 #define NO_PIN 255
    -
    12 
    -
    14 //
    -
    15 // Pin access class - needs to tune for various platforms (naive fallback solution?)
    -
    16 //
    -
    18 
    -
    19 class Selectable {
    -
    20 public:
    -
    21  virtual void select() = 0;
    -
    22  virtual void release() = 0;
    -
    23  virtual bool isSelected() = 0;
    -
    24 };
    -
    25 
    -
    26 #if !defined(FASTLED_NO_PINMAP)
    -
    27 
    -
    28 class Pin : public Selectable {
    -
    29  volatile RwReg *mPort;
    -
    30  volatile RoReg *mInPort;
    -
    31  RwReg mPinMask;
    -
    32  uint8_t mPin;
    -
    33 
    -
    34  void _init() {
    -
    35  mPinMask = digitalPinToBitMask(mPin);
    -
    36  mPort = portOutputRegister(digitalPinToPort(mPin));
    -
    37  mInPort = portInputRegister(digitalPinToPort(mPin));
    -
    38  }
    -
    39 public:
    -
    40  Pin(int pin) : mPin(pin) { _init(); }
    -
    41 
    -
    42  typedef volatile RwReg * port_ptr_t;
    -
    43  typedef RwReg port_t;
    +
    11 
    +
    12 FASTLED_NAMESPACE_BEGIN
    +
    13 
    +
    14 #define NO_PIN 255
    +
    15 
    +
    17 //
    +
    18 // Pin access class - needs to tune for various platforms (naive fallback solution?)
    +
    19 //
    +
    21 
    +
    22 class Selectable {
    +
    23 public:
    +
    24  virtual void select() = 0;
    +
    25  virtual void release() = 0;
    +
    26  virtual bool isSelected() = 0;
    +
    27 };
    +
    28 
    +
    29 #if !defined(FASTLED_NO_PINMAP)
    +
    30 
    +
    31 class Pin : public Selectable {
    +
    32  volatile RwReg *mPort;
    +
    33  volatile RoReg *mInPort;
    +
    34  RwReg mPinMask;
    +
    35  uint8_t mPin;
    +
    36 
    +
    37  void _init() {
    +
    38  mPinMask = digitalPinToBitMask(mPin);
    +
    39  mPort = portOutputRegister(digitalPinToPort(mPin));
    +
    40  mInPort = portInputRegister(digitalPinToPort(mPin));
    +
    41  }
    +
    42 public:
    +
    43  Pin(int pin) : mPin(pin) { _init(); }
    44 
    -
    45  inline void setOutput() { pinMode(mPin, OUTPUT); }
    -
    46  inline void setInput() { pinMode(mPin, INPUT); }
    +
    45  typedef volatile RwReg * port_ptr_t;
    +
    46  typedef RwReg port_t;
    47 
    -
    48  inline void hi() __attribute__ ((always_inline)) { *mPort |= mPinMask; }
    -
    49  inline void lo() __attribute__ ((always_inline)) { *mPort &= ~mPinMask; }
    +
    48  inline void setOutput() { pinMode(mPin, OUTPUT); }
    +
    49  inline void setInput() { pinMode(mPin, INPUT); }
    50 
    -
    51  inline void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    -
    52  inline void toggle() __attribute__ ((always_inline)) { *mInPort = mPinMask; }
    +
    51  inline void hi() __attribute__ ((always_inline)) { *mPort |= mPinMask; }
    +
    52  inline void lo() __attribute__ ((always_inline)) { *mPort &= ~mPinMask; }
    53 
    -
    54  inline void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= mPinMask; }
    -
    55  inline void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~mPinMask; }
    -
    56  inline void set(register port_t val) __attribute__ ((always_inline)) { *mPort = val; }
    -
    57 
    -
    58  inline void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    -
    59 
    -
    60  port_t hival() __attribute__ ((always_inline)) { return *mPort | mPinMask; }
    -
    61  port_t loval() __attribute__ ((always_inline)) { return *mPort & ~mPinMask; }
    -
    62  port_ptr_t port() __attribute__ ((always_inline)) { return mPort; }
    -
    63  port_t mask() __attribute__ ((always_inline)) { return mPinMask; }
    -
    64 
    -
    65  virtual void select() { hi(); }
    -
    66  virtual void release() { lo(); }
    -
    67  virtual bool isSelected() { return (*mPort & mPinMask) == mPinMask; }
    -
    68 };
    -
    69 
    -
    70 class OutputPin : public Pin {
    -
    71 public:
    -
    72  OutputPin(int pin) : Pin(pin) { setOutput(); }
    -
    73 };
    -
    74 
    -
    75 class InputPin : public Pin {
    -
    76 public:
    -
    77  InputPin(int pin) : Pin(pin) { setInput(); }
    -
    78 };
    -
    79 
    -
    80 #else
    -
    81 // This is the empty code version of the raw pin class, method bodies should be filled in to Do The Right Thing[tm] when making this
    -
    82 // available on a new platform
    -
    83 class Pin : public Selectable {
    -
    84  volatile RwReg *mPort;
    -
    85  volatile RoReg *mInPort;
    -
    86  RwReg mPinMask;
    -
    87  uint8_t mPin;
    -
    88 
    -
    89  void _init() {
    -
    90  // TODO: fill in init on a new platform
    -
    91  mPinMask = 0;
    -
    92  mPort = NULL;
    -
    93  mInPort = NULL;
    -
    94  }
    -
    95 public:
    -
    96  Pin(int pin) : mPin(pin) { _init(); }
    -
    97 
    -
    98  void setPin(int pin) { mPin = pin; _init(); }
    -
    99 
    -
    100  typedef volatile RwReg * port_ptr_t;
    -
    101  typedef RwReg port_t;
    +
    54  inline void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    +
    55  inline void toggle() __attribute__ ((always_inline)) { *mInPort = mPinMask; }
    +
    56 
    +
    57  inline void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= mPinMask; }
    +
    58  inline void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~mPinMask; }
    +
    59  inline void set(register port_t val) __attribute__ ((always_inline)) { *mPort = val; }
    +
    60 
    +
    61  inline void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    +
    62 
    +
    63  port_t hival() __attribute__ ((always_inline)) { return *mPort | mPinMask; }
    +
    64  port_t loval() __attribute__ ((always_inline)) { return *mPort & ~mPinMask; }
    +
    65  port_ptr_t port() __attribute__ ((always_inline)) { return mPort; }
    +
    66  port_t mask() __attribute__ ((always_inline)) { return mPinMask; }
    +
    67 
    +
    68  virtual void select() { hi(); }
    +
    69  virtual void release() { lo(); }
    +
    70  virtual bool isSelected() { return (*mPort & mPinMask) == mPinMask; }
    +
    71 };
    +
    72 
    +
    73 class OutputPin : public Pin {
    +
    74 public:
    +
    75  OutputPin(int pin) : Pin(pin) { setOutput(); }
    +
    76 };
    +
    77 
    +
    78 class InputPin : public Pin {
    +
    79 public:
    +
    80  InputPin(int pin) : Pin(pin) { setInput(); }
    +
    81 };
    +
    82 
    +
    83 #else
    +
    84 // This is the empty code version of the raw pin class, method bodies should be filled in to Do The Right Thing[tm] when making this
    +
    85 // available on a new platform
    +
    86 class Pin : public Selectable {
    +
    87  volatile RwReg *mPort;
    +
    88  volatile RoReg *mInPort;
    +
    89  RwReg mPinMask;
    +
    90  uint8_t mPin;
    +
    91 
    +
    92  void _init() {
    +
    93  // TODO: fill in init on a new platform
    +
    94  mPinMask = 0;
    +
    95  mPort = NULL;
    +
    96  mInPort = NULL;
    +
    97  }
    +
    98 public:
    +
    99  Pin(int pin) : mPin(pin) { _init(); }
    +
    100 
    +
    101  void setPin(int pin) { mPin = pin; _init(); }
    102 
    -
    103  inline void setOutput() { /* TODO: Set pin output */ }
    -
    104  inline void setInput() { /* TODO: Set pin input */ }
    +
    103  typedef volatile RwReg * port_ptr_t;
    +
    104  typedef RwReg port_t;
    105 
    -
    106  inline void hi() __attribute__ ((always_inline)) { *mPort |= mPinMask; }
    -
    107  inline void lo() __attribute__ ((always_inline)) { *mPort &= ~mPinMask; }
    +
    106  inline void setOutput() { /* TODO: Set pin output */ }
    +
    107  inline void setInput() { /* TODO: Set pin input */ }
    108 
    -
    109  inline void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    -
    110  inline void toggle() __attribute__ ((always_inline)) { *mInPort = mPinMask; }
    +
    109  inline void hi() __attribute__ ((always_inline)) { *mPort |= mPinMask; }
    +
    110  inline void lo() __attribute__ ((always_inline)) { *mPort &= ~mPinMask; }
    111 
    -
    112  inline void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= mPinMask; }
    -
    113  inline void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~mPinMask; }
    -
    114  inline void set(register port_t val) __attribute__ ((always_inline)) { *mPort = val; }
    -
    115 
    -
    116  inline void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    -
    117 
    -
    118  port_t hival() __attribute__ ((always_inline)) { return *mPort | mPinMask; }
    -
    119  port_t loval() __attribute__ ((always_inline)) { return *mPort & ~mPinMask; }
    -
    120  port_ptr_t port() __attribute__ ((always_inline)) { return mPort; }
    -
    121  port_t mask() __attribute__ ((always_inline)) { return mPinMask; }
    -
    122 
    -
    123  virtual void select() { hi(); }
    -
    124  virtual void release() { lo(); }
    -
    125  virtual bool isSelected() { return (*mPort & mPinMask) == mPinMask; }
    -
    126 };
    -
    127 
    -
    128 class OutputPin : public Pin {
    -
    129 public:
    -
    130  OutputPin(int pin) : Pin(pin) { setOutput(); }
    -
    131 };
    -
    132 
    -
    133 class InputPin : public Pin {
    -
    134 public:
    -
    135  InputPin(int pin) : Pin(pin) { setInput(); }
    -
    136 };
    -
    137 
    -
    138 #endif
    -
    139 
    -
    154 template<uint8_t PIN> class FastPin {
    -
    155  static RwReg sPinMask;
    -
    156  static volatile RwReg *sPort;
    -
    157  static volatile RoReg *sInPort;
    -
    158  static void _init() {
    -
    159 #if !defined(FASTLED_NO_PINMAP)
    -
    160  sPinMask = digitalPinToBitMask(PIN);
    -
    161  sPort = portOutputRegister(digitalPinToPort(PIN));
    -
    162  sInPort = portInputRegister(digitalPinToPort(PIN));
    -
    163 #endif
    -
    164  }
    -
    165 public:
    -
    166  typedef volatile RwReg * port_ptr_t;
    -
    167  typedef RwReg port_t;
    -
    168 
    -
    169  inline static void setOutput() { _init(); pinMode(PIN, OUTPUT); }
    -
    170  inline static void setInput() { _init(); pinMode(PIN, INPUT); }
    -
    171 
    -
    172  inline static void hi() __attribute__ ((always_inline)) { *sPort |= sPinMask; }
    -
    173  inline static void lo() __attribute__ ((always_inline)) { *sPort &= ~sPinMask; }
    -
    174 
    -
    175  inline static void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    -
    176 
    -
    177  inline static void toggle() __attribute__ ((always_inline)) { *sInPort = sPinMask; }
    +
    112  inline void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    +
    113  inline void toggle() __attribute__ ((always_inline)) { *mInPort = mPinMask; }
    +
    114 
    +
    115  inline void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= mPinMask; }
    +
    116  inline void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~mPinMask; }
    +
    117  inline void set(register port_t val) __attribute__ ((always_inline)) { *mPort = val; }
    +
    118 
    +
    119  inline void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    +
    120 
    +
    121  port_t hival() __attribute__ ((always_inline)) { return *mPort | mPinMask; }
    +
    122  port_t loval() __attribute__ ((always_inline)) { return *mPort & ~mPinMask; }
    +
    123  port_ptr_t port() __attribute__ ((always_inline)) { return mPort; }
    +
    124  port_t mask() __attribute__ ((always_inline)) { return mPinMask; }
    +
    125 
    +
    126  virtual void select() { hi(); }
    +
    127  virtual void release() { lo(); }
    +
    128  virtual bool isSelected() { return (*mPort & mPinMask) == mPinMask; }
    +
    129 };
    +
    130 
    +
    131 class OutputPin : public Pin {
    +
    132 public:
    +
    133  OutputPin(int pin) : Pin(pin) { setOutput(); }
    +
    134 };
    +
    135 
    +
    136 class InputPin : public Pin {
    +
    137 public:
    +
    138  InputPin(int pin) : Pin(pin) { setInput(); }
    +
    139 };
    +
    140 
    +
    141 #endif
    +
    142 
    +
    157 #ifdef FASTLED_FORCE_SOFTWARE_PINS
    +
    158 template<uint8_t PIN> class FastPin {
    +
    159  static RwReg sPinMask;
    +
    160  static volatile RwReg *sPort;
    +
    161  static volatile RoReg *sInPort;
    +
    162  static void _init() {
    +
    163 #if !defined(FASTLED_NO_PINMAP)
    +
    164  sPinMask = digitalPinToBitMask(PIN);
    +
    165  sPort = portOutputRegister(digitalPinToPort(PIN));
    +
    166  sInPort = portInputRegister(digitalPinToPort(PIN));
    +
    167 #endif
    +
    168  }
    +
    169 public:
    +
    170  typedef volatile RwReg * port_ptr_t;
    +
    171  typedef RwReg port_t;
    +
    172 
    +
    173  inline static void setOutput() { _init(); pinMode(PIN, OUTPUT); }
    +
    174  inline static void setInput() { _init(); pinMode(PIN, INPUT); }
    +
    175 
    +
    176  inline static void hi() __attribute__ ((always_inline)) { *sPort |= sPinMask; }
    +
    177  inline static void lo() __attribute__ ((always_inline)) { *sPort &= ~sPinMask; }
    178 
    -
    179  inline static void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= sPinMask; }
    -
    180  inline static void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~sPinMask; }
    -
    181  inline static void set(register port_t val) __attribute__ ((always_inline)) { *sPort = val; }
    +
    179  inline static void strobe() __attribute__ ((always_inline)) { toggle(); toggle(); }
    +
    180 
    +
    181  inline static void toggle() __attribute__ ((always_inline)) { *sInPort = sPinMask; }
    182 
    -
    183  inline static void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    -
    184 
    -
    185  static port_t hival() __attribute__ ((always_inline)) { return *sPort | sPinMask; }
    -
    186  static port_t loval() __attribute__ ((always_inline)) { return *sPort & ~sPinMask; }
    -
    187  static port_ptr_t port() __attribute__ ((always_inline)) { return sPort; }
    -
    188  static port_t mask() __attribute__ ((always_inline)) { return sPinMask; }
    -
    189 };
    -
    190 
    -
    191 template<uint8_t PIN> RwReg FastPin<PIN>::sPinMask;
    -
    192 template<uint8_t PIN> volatile RwReg *FastPin<PIN>::sPort;
    -
    193 template<uint8_t PIN> volatile RoReg *FastPin<PIN>::sInPort;
    +
    183  inline static void hi(register port_ptr_t port) __attribute__ ((always_inline)) { *port |= sPinMask; }
    +
    184  inline static void lo(register port_ptr_t port) __attribute__ ((always_inline)) { *port &= ~sPinMask; }
    +
    185  inline static void set(register port_t val) __attribute__ ((always_inline)) { *sPort = val; }
    +
    186 
    +
    187  inline static void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { *port = val; }
    +
    188 
    +
    189  static port_t hival() __attribute__ ((always_inline)) { return *sPort | sPinMask; }
    +
    190  static port_t loval() __attribute__ ((always_inline)) { return *sPort & ~sPinMask; }
    +
    191  static port_ptr_t port() __attribute__ ((always_inline)) { return sPort; }
    +
    192  static port_t mask() __attribute__ ((always_inline)) { return sPinMask; }
    +
    193 };
    194 
    -
    195 template<uint8_t PIN> class FastPinBB : public FastPin<PIN> {};
    -
    196 
    -
    197 typedef volatile uint32_t & reg32_t;
    -
    198 typedef volatile uint32_t * ptr_reg32_t;
    -
    199 
    -
    200 FASTLED_NAMESPACE_END
    -
    201 
    -
    202 #endif // __INC_FASTPIN_H
    -
    Definition: fastpin.h:28
    -
    Definition: fastpin.h:70
    -
    Definition: fastpin.h:195
    -
    Definition: fastpin.h:19
    -
    The simplest level of Pin class.
    Definition: fastpin.h:154
    +
    195 template<uint8_t PIN> RwReg FastPin<PIN>::sPinMask;
    +
    196 template<uint8_t PIN> volatile RwReg *FastPin<PIN>::sPort;
    +
    197 template<uint8_t PIN> volatile RoReg *FastPin<PIN>::sInPort;
    +
    198 
    +
    199 #else
    +
    200 
    +
    201 template<uint8_t PIN> class FastPin {
    +
    202  constexpr static bool validpin() { return false; }
    +
    203 
    +
    204  static_assert(validpin(), "Invalid pin specified");
    +
    205 
    +
    206  static void _init() {
    +
    207  }
    +
    208 public:
    +
    209  typedef volatile RwReg * port_ptr_t;
    +
    210  typedef RwReg port_t;
    +
    211 
    +
    212  inline static void setOutput() { }
    +
    213  inline static void setInput() { }
    +
    214 
    +
    215  inline static void hi() __attribute__ ((always_inline)) { }
    +
    216  inline static void lo() __attribute__ ((always_inline)) { }
    +
    217 
    +
    218  inline static void strobe() __attribute__ ((always_inline)) { }
    +
    219 
    +
    220  inline static void toggle() __attribute__ ((always_inline)) { }
    +
    221 
    +
    222  inline static void hi(register port_ptr_t port) __attribute__ ((always_inline)) { }
    +
    223  inline static void lo(register port_ptr_t port) __attribute__ ((always_inline)) { }
    +
    224  inline static void set(register port_t val) __attribute__ ((always_inline)) { }
    +
    225 
    +
    226  inline static void fastset(register port_ptr_t port, register port_t val) __attribute__ ((always_inline)) { }
    +
    227 
    +
    228  static port_t hival() __attribute__ ((always_inline)) { return 0; }
    +
    229  static port_t loval() __attribute__ ((always_inline)) { return 0;}
    +
    230  static port_ptr_t port() __attribute__ ((always_inline)) { return NULL; }
    +
    231  static port_t mask() __attribute__ ((always_inline)) { return 0; }
    +
    232 };
    +
    233 
    +
    234 #endif
    +
    235 
    +
    236 template<uint8_t PIN> class FastPinBB : public FastPin<PIN> {};
    +
    237 
    +
    238 typedef volatile uint32_t & reg32_t;
    +
    239 typedef volatile uint32_t * ptr_reg32_t;
    +
    240 
    +
    241 FASTLED_NAMESPACE_END
    +
    242 
    +
    243 #pragma GCC diagnostic pop
    +
    244 
    +
    245 #endif // __INC_FASTPIN_H
    +
    Definition: fastpin.h:31
    +
    Definition: fastpin.h:73
    +
    Definition: fastpin.h:236
    +
    Definition: fastpin.h:22
    +
    The simplest level of Pin class.
    Definition: fastpin.h:158
    __attribute__((always_inline)) inline void swapbits8(bitswap_type in
    Do an 8byte by 8bit rotation.
    Definition: fastled_delay.h:85
    -
    Definition: fastpin.h:75
    +
    Definition: fastpin.h:78
    diff --git a/docs/3.1/fastspi_8h_source.html b/docs/3.1/fastspi_8h_source.html index 18137b8f..a64df77d 100644 --- a/docs/3.1/fastspi_8h_source.html +++ b/docs/3.1/fastspi_8h_source.html @@ -110,102 +110,110 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    22 // mappings are known at compile time.
    23 //
    25 
    -
    26 template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    -
    27 class SPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
    -
    28 
    -
    29 template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    -
    30 class SoftwareSPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
    -
    31 
    -
    32 #ifndef FASTLED_FORCE_SOFTWARE_SPI
    -
    33 #if defined(SPI_DATA) && defined(SPI_CLOCK)
    -
    34 
    -
    35 #if defined(FASTLED_TEENSY3) && defined(ARM_HARDWARE_SPI)
    -
    36 
    -
    37 template<uint8_t SPI_SPEED>
    -
    38 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};
    -
    39 
    -
    40 #if defined(SPI2_DATA)
    -
    41 
    -
    42 template<uint8_t SPI_SPEED>
    -
    43 class SPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};
    +
    26 #if !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
    +
    27 template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    +
    28 class SPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
    +
    29 #endif
    +
    30 
    +
    31 template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    +
    32 class SoftwareSPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
    +
    33 
    +
    34 #ifndef FASTLED_FORCE_SOFTWARE_SPI
    +
    35 
    +
    36 #if defined(NRF51) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
    +
    37 template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    +
    38 class SPIOutput : public NRF51SPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
    +
    39 #endif
    +
    40 
    +
    41 #if defined(SPI_DATA) && defined(SPI_CLOCK)
    +
    42 
    +
    43 #if defined(FASTLED_TEENSY3) && defined(ARM_HARDWARE_SPI)
    44 
    45 template<uint8_t SPI_SPEED>
    -
    46 class SPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};
    +
    46 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};
    47 
    -
    48 template<uint8_t SPI_SPEED>
    -
    49 class SPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};
    -
    50 #endif
    -
    51 
    -
    52 #elif defined(FASTLED_TEENSYLC) && defined(ARM_HARDWARE_SPI)
    -
    53 
    -
    54 #define DECLARE_SPI0(__DATA,__CLOCK) template<uint8_t SPI_SPEED>\
    -
    55  class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40076000> {};
    -
    56  #define DECLARE_SPI1(__DATA,__CLOCK) template<uint8_t SPI_SPEED>\
    -
    57  class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40077000> {};
    -
    58 
    -
    59 DECLARE_SPI0(7,13);
    -
    60 DECLARE_SPI0(8,13);
    -
    61 DECLARE_SPI0(11,13);
    -
    62 DECLARE_SPI0(12,13);
    -
    63 DECLARE_SPI0(7,14);
    -
    64 DECLARE_SPI0(8,14);
    -
    65 DECLARE_SPI0(11,14);
    -
    66 DECLARE_SPI0(12,14);
    -
    67 DECLARE_SPI1(0,20);
    -
    68 DECLARE_SPI1(1,20);
    -
    69 DECLARE_SPI1(21,20);
    -
    70 
    -
    71 #elif defined(__SAM3X8E__)
    -
    72 
    -
    73 template<uint8_t SPI_SPEED>
    -
    74 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public SAMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};
    -
    75 
    -
    76 #elif defined(AVR_HARDWARE_SPI)
    -
    77 
    -
    78 template<uint8_t SPI_SPEED>
    -
    79 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public AVRHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};
    +
    48 #if defined(SPI2_DATA)
    +
    49 
    +
    50 template<uint8_t SPI_SPEED>
    +
    51 class SPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};
    +
    52 
    +
    53 template<uint8_t SPI_SPEED>
    +
    54 class SPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};
    +
    55 
    +
    56 template<uint8_t SPI_SPEED>
    +
    57 class SPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};
    +
    58 #endif
    +
    59 
    +
    60 #elif defined(FASTLED_TEENSYLC) && defined(ARM_HARDWARE_SPI)
    +
    61 
    +
    62 #define DECLARE_SPI0(__DATA,__CLOCK) template<uint8_t SPI_SPEED>\
    +
    63  class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40076000> {};
    +
    64  #define DECLARE_SPI1(__DATA,__CLOCK) template<uint8_t SPI_SPEED>\
    +
    65  class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40077000> {};
    +
    66 
    +
    67 DECLARE_SPI0(7,13);
    +
    68 DECLARE_SPI0(8,13);
    +
    69 DECLARE_SPI0(11,13);
    +
    70 DECLARE_SPI0(12,13);
    +
    71 DECLARE_SPI0(7,14);
    +
    72 DECLARE_SPI0(8,14);
    +
    73 DECLARE_SPI0(11,14);
    +
    74 DECLARE_SPI0(12,14);
    +
    75 DECLARE_SPI1(0,20);
    +
    76 DECLARE_SPI1(1,20);
    +
    77 DECLARE_SPI1(21,20);
    +
    78 
    +
    79 #elif defined(__SAM3X8E__)
    80 
    -
    81 #if defined(SPI_UART0_DATA)
    -
    82 
    -
    83 template<uint8_t SPI_SPEED>
    -
    84 class SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> : public AVRUSART0SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> {};
    +
    81 template<uint8_t SPI_SPEED>
    +
    82 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public SAMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};
    +
    83 
    +
    84 #elif defined(AVR_HARDWARE_SPI)
    85 
    -
    86 #endif
    -
    87 
    -
    88 #if defined(SPI_UART1_DATA)
    -
    89 
    -
    90 template<uint8_t SPI_SPEED>
    -
    91 class SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> : public AVRUSART1SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> {};
    -
    92 
    -
    93 #endif
    -
    94 
    -
    95 #endif
    -
    96 
    -
    97 #else
    -
    98 #warning "No hardware SPI pins defined. All SPI access will default to bitbanged output"
    -
    99 
    -
    100 #endif
    -
    101 
    -
    102 // #if defined(USART_DATA) && defined(USART_CLOCK)
    -
    103 // template<uint8_t SPI_SPEED>
    -
    104 // class AVRSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> : public AVRUSARTSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> {};
    -
    105 // #endif
    -
    106 
    -
    107 #else
    -
    108 #warning "Forcing software SPI - no hardware SPI for you!"
    -
    109 #endif
    -
    110 
    -
    111 FASTLED_NAMESPACE_END
    -
    112 
    -
    113 #endif
    -
    Definition: fastspi.h:27
    +
    86 template<uint8_t SPI_SPEED>
    +
    87 class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public AVRHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};
    +
    88 
    +
    89 #if defined(SPI_UART0_DATA)
    +
    90 
    +
    91 template<uint8_t SPI_SPEED>
    +
    92 class SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> : public AVRUSART0SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> {};
    +
    93 
    +
    94 #endif
    +
    95 
    +
    96 #if defined(SPI_UART1_DATA)
    +
    97 
    +
    98 template<uint8_t SPI_SPEED>
    +
    99 class SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> : public AVRUSART1SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> {};
    +
    100 
    +
    101 #endif
    +
    102 
    +
    103 #endif
    +
    104 
    +
    105 #else
    +
    106 #warning "No hardware SPI pins defined. All SPI access will default to bitbanged output"
    +
    107 
    +
    108 #endif
    +
    109 
    +
    110 // #if defined(USART_DATA) && defined(USART_CLOCK)
    +
    111 // template<uint8_t SPI_SPEED>
    +
    112 // class AVRSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> : public AVRUSARTSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> {};
    +
    113 // #endif
    +
    114 
    +
    115 #else
    +
    116 #warning "Forcing software SPI - no hardware SPI for you!"
    +
    117 #endif
    +
    118 
    +
    119 FASTLED_NAMESPACE_END
    +
    120 
    +
    121 #endif
    +
    Definition: fastspi.h:28
    base definitions used by led controllers for writing out led data
    -
    Definition: fastspi.h:30
    +
    Definition: fastspi.h:32
    Definition: fastspi_bitbang.h:17
    diff --git a/docs/3.1/fastspi__bitbang_8h_source.html b/docs/3.1/fastspi__bitbang_8h_source.html index 550f3aec..aa54c636 100644 --- a/docs/3.1/fastspi__bitbang_8h_source.html +++ b/docs/3.1/fastspi__bitbang_8h_source.html @@ -439,15 +439,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    352 FASTLED_NAMESPACE_END
    353 
    354 #endif
    -
    Pixel controller class.
    Definition: controller.h:184
    -
    Definition: fastpin.h:19
    +
    Pixel controller class.
    Definition: controller.h:187
    +
    Definition: fastpin.h:22
    Definition: fastspi_bitbang.h:17
    Utility functions and classes for managing delaycycles.
    -
    The simplest level of Pin class.
    Definition: fastpin.h:154
    +
    The simplest level of Pin class.
    Definition: fastpin.h:158
    diff --git a/docs/3.1/fastspi__dma_8h_source.html b/docs/3.1/fastspi__dma_8h_source.html index 98e3b341..329021e0 100644 --- a/docs/3.1/fastspi__dma_8h_source.html +++ b/docs/3.1/fastspi__dma_8h_source.html @@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/docs/3.1/fastspi__nop_8h_source.html b/docs/3.1/fastspi__nop_8h_source.html index 1e990342..a1747d49 100644 --- a/docs/3.1/fastspi__nop_8h_source.html +++ b/docs/3.1/fastspi__nop_8h_source.html @@ -93,49 +93,62 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    4 FASTLED_NAMESPACE_BEGIN
    5 
    9 template <uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    -
    10 class NOPSPIOutput {
    +
    10 class NOPSPIOutput {
    11  Selectable *m_pSelect;
    12 
    13 public:
    -
    14  NOPSPIOutput() { m_pSelect = NULL; }
    -
    15  NOPSPIOutput(Selectable *pSelect) { m_pSelect = pSelect; }
    +
    14  NOPSPIOutput() { m_pSelect = NULL; }
    +
    15  NOPSPIOutput(Selectable *pSelect) { m_pSelect = pSelect; }
    16 
    -
    18  void setSelect(Selectable *pSelect) { m_pSelect = pSelect; }
    +
    18  void setSelect(Selectable *pSelect) { m_pSelect = pSelect; }
    19 
    -
    21  void init() { /* TODO */ }
    +
    21  void init() { /* TODO */ }
    22 
    -
    24  void select() { /* TODO */ }
    +
    24  void select() { /* TODO */ }
    25 
    -
    27  void release() { /* TODO */ }
    +
    27  void release() { /* TODO */ }
    28 
    -
    30  void waitFully();
    +
    30  void waitFully();
    31 
    -
    33  template <uint8_t BIT> inline static void writeBit(uint8_t b) { /* TODO */
    +
    33  template <uint8_t BIT> inline static void writeBit(uint8_t b) { /* TODO */ }
    34 
    -
    36  void writeByte(uint8_t b) { /* TODO */ }
    -
    38  void writeWord(uint16_t w) { /* TODO */ }
    +
    36  void writeByte(uint8_t b) { /* TODO */ }
    +
    38  void writeWord(uint16_t w) { /* TODO */ }
    39 
    -
    41  static void writeBytesValueRaw(uint8_t value, int len) { /* TODO */ }
    +
    41  static void writeBytesValueRaw(uint8_t value, int len) { /* TODO */ }
    42 
    -
    44  void writeBytesValue(uint8_t value, int len) { /* TODO */ }
    +
    44  void writeBytesValue(uint8_t value, int len) { /* TODO */ }
    45 
    -
    47  void writeBytes(uint8_t *data, int len) { /* TODO */ }
    +
    47  void writeBytes(uint8_t *data, int len) { /* TODO */ }
    48 
    -
    50  template <uint8_t BIT> inline static void writeBit(uint8_t b) { /* TODO */ }
    +
    50  template <uint8_t BIT> inline static void writeBit(uint8_t b) { /* TODO */ }
    51 
    -
    53  template <uint8_t FLAGS, class D, EOrder RGB_ORDER> void writePixels(PixelController<RGB_ORDER> pixels) { /* TODO */ }
    +
    53  template <uint8_t FLAGS, class D, EOrder RGB_ORDER> void writePixels(PixelController<RGB_ORDER> pixels) { /* TODO */ }
    54 
    55 };
    56 
    57 FASTLED_NAMESPACE_END
    58 
    59 #endif
    -
    Pixel controller class.
    Definition: controller.h:184
    -
    Definition: fastpin.h:19
    +
    void release()
    release the CS select
    Definition: fastspi_nop.h:27
    +
    void writeBytes(uint8_t *data, int len)
    A full cycle of writing a raw block of data out, including select, release, and waiting.
    Definition: fastspi_nop.h:47
    +
    static void writeBit(uint8_t b)
    not the most efficient mechanism in the world - but should be enough for sm16716 and friends ...
    Definition: fastspi_nop.h:33
    +
    void writeByte(uint8_t b)
    write a byte out via SPI (returns immediately on writing register)
    Definition: fastspi_nop.h:36
    +
    void setSelect(Selectable *pSelect)
    set the object representing the selectable
    Definition: fastspi_nop.h:18
    +
    Pixel controller class.
    Definition: controller.h:187
    +
    Definition: fastpin.h:22
    +
    void init()
    initialize the SPI subssytem
    Definition: fastspi_nop.h:21
    +
    A nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset impl...
    Definition: fastspi_nop.h:10
    +
    void select()
    latch the CS select
    Definition: fastspi_nop.h:24
    +
    void writeBytesValue(uint8_t value, int len)
    A full cycle of writing a value for len bytes, including select, release, and waiting.
    Definition: fastspi_nop.h:44
    +
    static void writeBytesValueRaw(uint8_t value, int len)
    A raw set of writing byte values, assumes setup/init/waiting done elsewhere (static for use by adjust...
    Definition: fastspi_nop.h:41
    +
    void waitFully()
    wait until all queued up data has been written
    +
    void writePixels(PixelController< RGB_ORDER > pixels)
    write out pixel data from the given PixelController object
    Definition: fastspi_nop.h:53
    +
    void writeWord(uint16_t w)
    write a word out via SPI (returns immediately on writing register)
    Definition: fastspi_nop.h:38
    diff --git a/docs/3.1/fastspi__ref_8h_source.html b/docs/3.1/fastspi__ref_8h_source.html index e783bd89..c8a1fae7 100644 --- a/docs/3.1/fastspi__ref_8h_source.html +++ b/docs/3.1/fastspi__ref_8h_source.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    6 // A skeletal implementation of hardware SPI support. Fill in the necessary code for init, waiting, and writing. The rest of
    7 // the method implementations should provide a starting point, even if not hte most efficient to start with
    8 template <uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
    -
    9 class REFHardwareSPIOutput {
    +
    10  Selectable *m_pSelect;
    11 public:
    12  SAMHardwareSPIOutput() { m_pSelect = NULL; }
    @@ -108,10 +108,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    19  void init() { /* TODO */ }
    20 
    21  // latch the CS select
    -
    22  void inline select() __attribute__((always_inline)) { if(m_pSelect != NULL) { m_pSelect->select(); } }
    +
    22  void inline select() __attribute__((always_inline)) { if(m_pSelect != NULL) { m_pSelect->select(); } }
    23 
    -
    24  // release the CS select
    -
    25  void inline release() __attribute__((always_inline)) { if(m_pSelect != NULL) { m_pSelect->release(); } }
    +
    24  // release the CS select
    +
    25  void inline release() __attribute__((always_inline)) { if(m_pSelect != NULL) { m_pSelect->release(); } }
    26 
    27  // wait until all queued up data has been written
    28  static void waitFully() { /* TODO */ }
    @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    36  // A raw set of writing byte values, assumes setup/init/waiting done elsewhere
    37  static void writeBytesValueRaw(uint8_t value, int len) {
    38  while(len--) { writeByte(value); }
    -
    39  }
    +
    39  }
    40 
    41  // A full cycle of writing a value for len bytes, including select, release, and waiting
    42  void writeBytesValue(uint8_t value, int len) {
    @@ -133,16 +133,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    44  }
    45 
    46  // A full cycle of writing a value for len bytes, including select, release, and waiting
    -
    47  template <class D> void writeBytes(register uint8_t *data, int len) {
    +
    47  template <class D> void writeBytes(register uint8_t *data, int len) {
    48  uint8_t *end = data + len;
    49  select();
    50  // could be optimized to write 16bit words out instead of 8bit bytes
    -
    51  while(data != end) {
    +
    51  while(data != end) {
    52  writeByte(D::adjust(*data++));
    53  }
    54  D::postBlock(len);
    55  waitFully();
    -
    56  release();
    +
    56  release();
    57  }
    58 
    59  // A full cycle of writing a value for len bytes, including select, release, and waiting
    @@ -153,10 +153,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    64 
    65  // write a block of uint8_ts out in groups of three. len is the total number of uint8_ts to write out. The template
    66  // parameters indicate how many uint8_ts to skip at the beginning and/or end of each grouping
    -
    67  template <uint8_t FLAGS, class D, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register CRGB scale, bool advance=true, uint8_t skip=0) {
    +
    67  template <uint8_t FLAGS, class D, EOrder RGB_ORDER> void writePixels(PixelController<RGB_ORDER> pixels) {
    68  select();
    -
    69  while(data != end) {
    -
    70  if(FLAGS & FLAG_START_BIT) {
    +
    69  while(data != end) {
    +
    70  if(FLAGS & FLAG_START_BIT) {
    71  writeBit<0>(1);
    72  }
    73  writeByte(D::adjust(pixels.loadAndScale0()));
    @@ -171,31 +171,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    82  release();
    83  }
    84 
    -
    85  // template instantiations for writeBytes 3
    -
    86  template <uint8_t FLAGS, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register CRGB scale, bool advance=true, uint8_t skip=0) {
    -
    87  writeBytes3<FLAGS, DATA_NOP, RGB_ORDER>(data, len, scale, advance, skip);
    -
    88  }
    -
    89  template <class D, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register CRGB scale, bool advance=true, uint8_t skip=0) {
    -
    90  writeBytes3<0, D, RGB_ORDER>(data, len, scale, advance, skip);
    -
    91  }
    -
    92  template <EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register CRGB scale, bool advance=true, uint8_t skip=0) {
    -
    93  writeBytes3<0, DATA_NOP, RGB_ORDER>(data, len, scale, advance, skip);
    -
    94  }
    -
    95  void writeBytes3(register uint8_t *data, int len, register CRGB scale, bool advance=true, uint8_t skip=0) {
    -
    96  writeBytes3<0, DATA_NOP, RGB>(data, len, scale, advance, skip);
    -
    97 
    -
    98 };
    -
    99 
    -
    100 FASTLED_NAMESPACE_END
    -
    101 
    -
    102 #endif
    -
    Representation of an RGB pixel (Red, Green, Blue)
    Definition: pixeltypes.h:88
    -
    Definition: fastpin.h:19
    +
    85 };
    +
    86 
    +
    87 FASTLED_NAMESPACE_END
    +
    88 
    +
    89 #endif
    +
    Pixel controller class.
    Definition: controller.h:187
    +
    Definition: fastpin.h:22
    __attribute__((always_inline)) inline void swapbits8(bitswap_type in
    Do an 8byte by 8bit rotation.
    Definition: fastled_delay.h:85
    +
    Definition: fastspi_ref.h:9
    diff --git a/docs/3.1/fastspi__types_8h_source.html b/docs/3.1/fastspi__types_8h_source.html index 9c39df2a..479294ec 100644 --- a/docs/3.1/fastspi__types_8h_source.html +++ b/docs/3.1/fastspi__types_8h_source.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    19 public:
    20  static __attribute__((always_inline)) inline uint8_t adjust(register uint8_t data) { return data; }
    21  static __attribute__((always_inline)) inline uint8_t adjust(register uint8_t data, register uint8_t scale) { return scale8(data, scale); }
    -
    22  static __attribute__((always_inline)) inline void postBlock(int len) {}
    +
    22  static __attribute__((always_inline)) inline void postBlock(int /* len */) { }
    23 };
    24 
    25 #define FLAG_START_BIT 0x80
    @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/files.html b/docs/3.1/files.html index 693f1251..cefe450a 100644 --- a/docs/3.1/files.html +++ b/docs/3.1/files.html @@ -100,31 +100,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     colorpalettes.hDefinitions for the predefined color palettes supplied by FastLED
     colorutils.hFunctions for color fill, paletters, blending, and more
     controller.hBase definitions used by led controllers for writing out led data
     dmx.h
     FastLED.hCentral include file for FastLED, defines the CFastLED class/object
     fastled_config.hDefinitions that can be used to configure FastLED at compile time
     fastled_delay.hUtility functions and classes for managing delaycycles
     fastled_progmem.hWrapper definitions to allow seamless use of PROGMEM in environmens that have it
     fastpin.hClass base definitions for defining fast pin access
     fastspi.h
     fastspi_bitbang.h
     fastspi_dma.h
     fastspi_nop.h
     fastspi_ref.h
     fastspi_types.h
     hsv2rgb.h
     led_sysdefs.h
     lib8tion.h
     noise.hNoise functions provided by the library
     pixeltypes.h
     platforms.h
     power_mgt.h
     cpp_compat.h
     dmx.h
     FastLED.hCentral include file for FastLED, defines the CFastLED class/object
     fastled_config.hDefinitions that can be used to configure FastLED at compile time
     fastled_delay.hUtility functions and classes for managing delaycycles
     fastled_progmem.hWrapper definitions to allow seamless use of PROGMEM in environmens that have it
     fastpin.hClass base definitions for defining fast pin access
     fastspi.h
     fastspi_bitbang.h
     fastspi_dma.h
     fastspi_nop.h
     fastspi_ref.h
     fastspi_types.h
     hsv2rgb.h
     led_sysdefs.h
     lib8tion.h
     noise.hNoise functions provided by the library
     pixeltypes.h
     platforms.h
     power_mgt.h
    diff --git a/docs/3.1/functions.html b/docs/3.1/functions.html index ddd29e0f..ba4d3518 100644 --- a/docs/3.1/functions.html +++ b/docs/3.1/functions.html @@ -90,7 +90,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • n
  • o
  • p
  • -
  • s
  • +
  • r
  • +
  • s
  • +
  • w
@@ -210,6 +212,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , DMXSerialController< RGB_ORDER > , DMXSimpleController< DATA_PIN, RGB_ORDER > , LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > +, NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > , P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > , SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > , WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > @@ -250,13 +253,23 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); +

- r -

+ +

- s -

+ + +

- w -

diff --git a/docs/3.1/functions_enum.html b/docs/3.1/functions_enum.html index 83810d92..06d2cb9b 100644 --- a/docs/3.1/functions_enum.html +++ b/docs/3.1/functions_enum.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/functions_func.html b/docs/3.1/functions_func.html index 840fd69a..05478389 100644 --- a/docs/3.1/functions_func.html +++ b/docs/3.1/functions_func.html @@ -90,7 +90,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • n
  • o
  • p
  • -
  • s
  • +
  • r
  • +
  • s
  • +
  • w
  • @@ -207,6 +209,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , DMXSerialController< RGB_ORDER > , DMXSimpleController< DATA_PIN, RGB_ORDER > , LPD8806Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > +, NOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > , P9813Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > , SM16716Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > , WS2801Controller< DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED > @@ -247,13 +250,23 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); +

    - r -

    + +

    - s -

    + + +

    - w -

    diff --git a/docs/3.1/globals.html b/docs/3.1/globals.html index 46fd9575..e56f6d61 100644 --- a/docs/3.1/globals.html +++ b/docs/3.1/globals.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/globals_enum.html b/docs/3.1/globals_enum.html index b83fe678..a1063087 100644 --- a/docs/3.1/globals_enum.html +++ b/docs/3.1/globals_enum.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/globals_eval.html b/docs/3.1/globals_eval.html index 95fbaa1c..ca88120e 100644 --- a/docs/3.1/globals_eval.html +++ b/docs/3.1/globals_eval.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/globals_func.html b/docs/3.1/globals_func.html index 9fe6c0c3..e686d9ce 100644 --- a/docs/3.1/globals_func.html +++ b/docs/3.1/globals_func.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/globals_vars.html b/docs/3.1/globals_vars.html index 6a9af04b..8ee75543 100644 --- a/docs/3.1/globals_vars.html +++ b/docs/3.1/globals_vars.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/graph_legend.html b/docs/3.1/graph_legend.html index b303d5a4..d95a2a1e 100644 --- a/docs/3.1/graph_legend.html +++ b/docs/3.1/graph_legend.html @@ -147,7 +147,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/docs/3.1/group___bitswap.html b/docs/3.1/group___bitswap.html index 3ce279af..2ac5d2c1 100644 --- a/docs/3.1/group___bitswap.html +++ b/docs/3.1/group___bitswap.html @@ -112,7 +112,7 @@ Functions diff --git a/docs/3.1/group___color_enums.html b/docs/3.1/group___color_enums.html index fc580e11..d30abae7 100644 --- a/docs/3.1/group___color_enums.html +++ b/docs/3.1/group___color_enums.html @@ -198,7 +198,7 @@ Enumerations diff --git a/docs/3.1/group___colorpalletes.html b/docs/3.1/group___colorpalletes.html index caa964a4..950868fb 100644 --- a/docs/3.1/group___colorpalletes.html +++ b/docs/3.1/group___colorpalletes.html @@ -177,7 +177,7 @@ Variables diff --git a/docs/3.1/group___colorutils.html b/docs/3.1/group___colorutils.html index a525bf4c..38e0b6b6 100644 --- a/docs/3.1/group___colorutils.html +++ b/docs/3.1/group___colorutils.html @@ -370,7 +370,7 @@ LONGEST_HUES: hue goes whichever way is longest diff --git a/docs/3.1/group___dimming.html b/docs/3.1/group___dimming.html index 04e98a3b..78825cfc 100644 --- a/docs/3.1/group___dimming.html +++ b/docs/3.1/group___dimming.html @@ -121,7 +121,7 @@ LIB8STATIC uint8_t  diff --git a/docs/3.1/group___math.html b/docs/3.1/group___math.html index f2eda97c..cfcbf5a6 100644 --- a/docs/3.1/group___math.html +++ b/docs/3.1/group___math.html @@ -418,7 +418,7 @@ LIB8STATIC int8_t  diff --git a/docs/3.1/group___noise.html b/docs/3.1/group___noise.html index 03a542f4..6c5e9536 100644 --- a/docs/3.1/group___noise.html +++ b/docs/3.1/group___noise.html @@ -237,7 +237,7 @@ void fill_2dnoise16 (< diff --git a/docs/3.1/group___pixeltypes.html b/docs/3.1/group___pixeltypes.html index 5c846b01..19600abd 100644 --- a/docs/3.1/group___pixeltypes.html +++ b/docs/3.1/group___pixeltypes.html @@ -347,7 +347,7 @@ Functions diff --git a/docs/3.1/group___power.html b/docs/3.1/group___power.html index 524f9c12..296e98e6 100644 --- a/docs/3.1/group___power.html +++ b/docs/3.1/group___power.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/group___random.html b/docs/3.1/group___random.html index ad852c47..b24ffd28 100644 --- a/docs/3.1/group___random.html +++ b/docs/3.1/group___random.html @@ -263,7 +263,7 @@ uint16_t  diff --git a/docs/3.1/group___scaling.html b/docs/3.1/group___scaling.html index 23c2fb3c..25fed97b 100644 --- a/docs/3.1/group___scaling.html +++ b/docs/3.1/group___scaling.html @@ -497,7 +497,7 @@ LIB8STATIC void  diff --git a/docs/3.1/group___trig.html b/docs/3.1/group___trig.html index 5aad4eaa..b1dd9295 100644 --- a/docs/3.1/group___trig.html +++ b/docs/3.1/group___trig.html @@ -287,7 +287,7 @@ const uint8_t b_m16_interl diff --git a/docs/3.1/group__chipsets.html b/docs/3.1/group__chipsets.html index 28815543..9f4dadba 100644 --- a/docs/3.1/group__chipsets.html +++ b/docs/3.1/group__chipsets.html @@ -114,6 +114,8 @@ Classes   class  WS2811Controller400Khz< DATA_PIN, RGB_ORDER >   +class  SK6812Controller< DATA_PIN, RGB_ORDER > +  class  UCS1903Controller400Khz< DATA_PIN, RGB_ORDER >   class  UCS1903BController800Khz< DATA_PIN, RGB_ORDER > @@ -130,6 +132,8 @@ Classes   class  GW6205Controller800Khz< DATA_PIN, RGB_ORDER >   +class  PL9823Controller< DATA_PIN, RGB_ORDER > +  class  TM1829Controller1600Khz< DATA_PIN, RGB_ORDER >   class  DMXSimpleController< DATA_PIN, RGB_ORDER > @@ -140,7 +144,7 @@ Classes diff --git a/docs/3.1/group__lib8tion.html b/docs/3.1/group__lib8tion.html index 2a843fb6..9dcbf1ce 100644 --- a/docs/3.1/group__lib8tion.html +++ b/docs/3.1/group__lib8tion.html @@ -837,7 +837,7 @@ LIB8STATIC uint8_t  diff --git a/docs/3.1/hierarchy.html b/docs/3.1/hierarchy.html index 508c198f..ac7ef71a 100644 --- a/docs/3.1/hierarchy.html +++ b/docs/3.1/hierarchy.html @@ -136,40 +136,47 @@ This inheritance list is sorted roughly, but not completely, alphabetically: CLPD1886Controller1250Khz< DATA_PIN, RGB_ORDER >  CLPD1886< DATA_PIN, RGB_ORDER >  CLPD1886Controller1250Khz< DATA_PIN, RGB_ORDER > - CTM1803Controller400Khz< DATA_PIN, RGB_ORDER > - CTM1803< DATA_PIN, RGB_ORDER > - CTM1803Controller400Khz< DATA_PIN, RGB_ORDER > - CTM1809Controller800Khz< DATA_PIN, RGB_ORDER > - CTM1804< DATA_PIN, RGB_ORDER > - CTM1809< DATA_PIN, RGB_ORDER > - CTM1809Controller800Khz< DATA_PIN, RGB_ORDER > - CTM1829Controller1600Khz< DATA_PIN, RGB_ORDER > - CTM1829Controller800Khz< DATA_PIN, RGB_ORDER > - CTM1829< DATA_PIN, RGB_ORDER > - CTM1829Controller800Khz< DATA_PIN, RGB_ORDER > - CUCS1903BController800Khz< DATA_PIN, RGB_ORDER > - CUCS1903B< DATA_PIN, RGB_ORDER > - CUCS1903BController800Khz< DATA_PIN, RGB_ORDER > - CUCS1903Controller400Khz< DATA_PIN, RGB_ORDER > - CUCS1903< DATA_PIN, RGB_ORDER > - CUCS1903Controller400Khz< DATA_PIN, RGB_ORDER > - CUCS1904Controller800Khz< DATA_PIN, RGB_ORDER > - CUCS1904< DATA_PIN, RGB_ORDER > - CUCS1904Controller800Khz< DATA_PIN, RGB_ORDER > - CWS2811Controller400Khz< DATA_PIN, RGB_ORDER > - CWS2811_400< DATA_PIN, RGB_ORDER > - CWS2811Controller400Khz< DATA_PIN, RGB_ORDER > - CWS2811Controller800Khz< DATA_PIN, RGB_ORDER > - CAPA104< DATA_PIN, RGB_ORDER > - CWS2811< DATA_PIN, RGB_ORDER > - CWS2811Controller800Khz< DATA_PIN, RGB_ORDER > - CWS2812Controller800Khz< DATA_PIN, RGB_ORDER > - CWS2812< DATA_PIN, RGB_ORDER > - CWS2812B< DATA_PIN, RGB_ORDER > - CWS2812Controller800Khz< DATA_PIN, RGB_ORDER > - CWS2812Controller800Khz< DATA_PIN, GRB > - CNEOPIXEL< DATA_PIN > - CWS2812Controller800Khz< DATA_PIN, GRB > + CPL9823Controller< DATA_PIN, RGB_ORDER > + CPL9823< DATA_PIN, RGB_ORDER > + CPL9823Controller< DATA_PIN, RGB_ORDER > + CSK6812Controller< DATA_PIN, RGB_ORDER > + CSK6812< DATA_PIN, RGB_ORDER > + CSK6812Controller< DATA_PIN, RGB_ORDER > + CTM1803Controller400Khz< DATA_PIN, RGB_ORDER > + CTM1803< DATA_PIN, RGB_ORDER > + CTM1803Controller400Khz< DATA_PIN, RGB_ORDER > + CTM1809Controller800Khz< DATA_PIN, RGB_ORDER > + CTM1804< DATA_PIN, RGB_ORDER > + CTM1809< DATA_PIN, RGB_ORDER > + CTM1812< DATA_PIN, RGB_ORDER > + CTM1809Controller800Khz< DATA_PIN, RGB_ORDER > + CTM1829Controller1600Khz< DATA_PIN, RGB_ORDER > + CTM1829Controller800Khz< DATA_PIN, RGB_ORDER > + CTM1829< DATA_PIN, RGB_ORDER > + CTM1829Controller800Khz< DATA_PIN, RGB_ORDER > + CUCS1903BController800Khz< DATA_PIN, RGB_ORDER > + CUCS1903B< DATA_PIN, RGB_ORDER > + CUCS1903BController800Khz< DATA_PIN, RGB_ORDER > + CUCS1903Controller400Khz< DATA_PIN, RGB_ORDER > + CUCS1903< DATA_PIN, RGB_ORDER > + CUCS1903Controller400Khz< DATA_PIN, RGB_ORDER > + CUCS1904Controller800Khz< DATA_PIN, RGB_ORDER > + CUCS1904< DATA_PIN, RGB_ORDER > + CUCS1904Controller800Khz< DATA_PIN, RGB_ORDER > + CWS2811Controller400Khz< DATA_PIN, RGB_ORDER > + CWS2811_400< DATA_PIN, RGB_ORDER > + CWS2811Controller400Khz< DATA_PIN, RGB_ORDER > + CWS2811Controller800Khz< DATA_PIN, RGB_ORDER > + CAPA104< DATA_PIN, RGB_ORDER > + CWS2811< DATA_PIN, RGB_ORDER > + CWS2811Controller800Khz< DATA_PIN, RGB_ORDER > + CWS2812Controller800Khz< DATA_PIN, RGB_ORDER > + CWS2812< DATA_PIN, RGB_ORDER > + CWS2812B< DATA_PIN, RGB_ORDER > + CWS2812Controller800Khz< DATA_PIN, RGB_ORDER > + CWS2812Controller800Khz< DATA_PIN, GRB > + CNEOPIXEL< DATA_PIN > + CWS2812Controller800Khz< DATA_PIN, GRB >  CCMinWait< WAIT >Class to ensure that a minimum amount of time has kicked since the last time run - and delay if not enough time has passed yet this should make sure that chipsets that have  CCMinWait< 1000 >  CCRGBRepresentation of an RGB pixel (Red, Green, Blue) @@ -182,26 +189,31 @@ This inheritance list is sorted roughly, but not completely, alphabetically: CIEEE754binary32_tTypedef for IEEE754 "binary32" float type internals  Cjust8bitsStructure representing 8 bits of access  CMultiPixelController< LANES, MASK, RGB_ORDER > - CPixelController< RGB_ORDER >Pixel controller class - Cq< T, F, I >Template class for represneting fractional ints - CSAMHardwareSPIOutput - CSPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED > - CSelectable - CPin - CInputPin - CInputPin - COutputPin - COutputPin - CPin - Csub4Structure representing 32 bits of access - CtBytesForLong - CTRGBGradientPaletteEntryUnion + CNOPSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER >A nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset implementations + CNRF51SPIOutput + CSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > + CSPIOutput< DATA_PIN, CLOCK_PIN, SPI_SPEED > + CPixelController< RGB_ORDER >Pixel controller class + Cq< T, F, I >Template class for represneting fractional ints + CREFHardwareSPIOutput< _DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER > + CSAMHardwareSPIOutput + CSPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED > + CSelectable + CPin + CInputPin + CInputPin + COutputPin + COutputPin + CPin + Csub4Structure representing 32 bits of access + CtBytesForLong + CTRGBGradientPaletteEntryUnion diff --git a/docs/3.1/hsv2rgb_8h_source.html b/docs/3.1/hsv2rgb_8h_source.html index 7a375598..1df77c00 100644 --- a/docs/3.1/hsv2rgb_8h_source.html +++ b/docs/3.1/hsv2rgb_8h_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/index.html b/docs/3.1/index.html index e3805612..54cbd63a 100644 --- a/docs/3.1/index.html +++ b/docs/3.1/index.html @@ -84,7 +84,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/inherit_graph_0.map b/docs/3.1/inherit_graph_0.map index 9055498c..9b05351d 100644 --- a/docs/3.1/inherit_graph_0.map +++ b/docs/3.1/inherit_graph_0.map @@ -1,6 +1,3 @@ - - - - + diff --git a/docs/3.1/inherit_graph_0.md5 b/docs/3.1/inherit_graph_0.md5 index 223eea47..b535aa3e 100644 --- a/docs/3.1/inherit_graph_0.md5 +++ b/docs/3.1/inherit_graph_0.md5 @@ -1 +1 @@ -2c41106f5574631dc7c5658b11f41088 \ No newline at end of file +ce85357edaf83c085052f03649cdbbb7 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_0.png b/docs/3.1/inherit_graph_0.png index db0d74dc..14bcd558 100644 Binary files a/docs/3.1/inherit_graph_0.png and b/docs/3.1/inherit_graph_0.png differ diff --git a/docs/3.1/inherit_graph_1.map b/docs/3.1/inherit_graph_1.map index 9b05351d..e7334093 100644 --- a/docs/3.1/inherit_graph_1.map +++ b/docs/3.1/inherit_graph_1.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_1.md5 b/docs/3.1/inherit_graph_1.md5 index b535aa3e..2ffcc4e2 100644 --- a/docs/3.1/inherit_graph_1.md5 +++ b/docs/3.1/inherit_graph_1.md5 @@ -1 +1 @@ -ce85357edaf83c085052f03649cdbbb7 \ No newline at end of file +e43e29c4c6be74769d4fed0dfa782b80 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_1.png b/docs/3.1/inherit_graph_1.png index 14bcd558..f3c2f42d 100644 Binary files a/docs/3.1/inherit_graph_1.png and b/docs/3.1/inherit_graph_1.png differ diff --git a/docs/3.1/inherit_graph_10.map b/docs/3.1/inherit_graph_10.map index 32f82ec3..0a821ae4 100644 --- a/docs/3.1/inherit_graph_10.map +++ b/docs/3.1/inherit_graph_10.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_10.md5 b/docs/3.1/inherit_graph_10.md5 index 2d8ffdc9..719b3650 100644 --- a/docs/3.1/inherit_graph_10.md5 +++ b/docs/3.1/inherit_graph_10.md5 @@ -1 +1 @@ -d061b8cd12ee165a7fe64ff35ddf4c50 \ No newline at end of file +6f9963c60471b0a8d2dc7f3ff0da2540 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_10.png b/docs/3.1/inherit_graph_10.png index 315ee837..034d2496 100644 Binary files a/docs/3.1/inherit_graph_10.png and b/docs/3.1/inherit_graph_10.png differ diff --git a/docs/3.1/inherit_graph_11.map b/docs/3.1/inherit_graph_11.map index 0a821ae4..a37af540 100644 --- a/docs/3.1/inherit_graph_11.map +++ b/docs/3.1/inherit_graph_11.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_11.md5 b/docs/3.1/inherit_graph_11.md5 index 719b3650..c27b940a 100644 --- a/docs/3.1/inherit_graph_11.md5 +++ b/docs/3.1/inherit_graph_11.md5 @@ -1 +1 @@ -6f9963c60471b0a8d2dc7f3ff0da2540 \ No newline at end of file +605594545affded9ddb5dfd7ad57af84 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_11.png b/docs/3.1/inherit_graph_11.png index 034d2496..df846db8 100644 Binary files a/docs/3.1/inherit_graph_11.png and b/docs/3.1/inherit_graph_11.png differ diff --git a/docs/3.1/inherit_graph_12.map b/docs/3.1/inherit_graph_12.map index a37af540..b47198d1 100644 --- a/docs/3.1/inherit_graph_12.map +++ b/docs/3.1/inherit_graph_12.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_12.md5 b/docs/3.1/inherit_graph_12.md5 index c27b940a..04cb5ea1 100644 --- a/docs/3.1/inherit_graph_12.md5 +++ b/docs/3.1/inherit_graph_12.md5 @@ -1 +1 @@ -605594545affded9ddb5dfd7ad57af84 \ No newline at end of file +77060e775dbe8df58c848605024876ca \ No newline at end of file diff --git a/docs/3.1/inherit_graph_12.png b/docs/3.1/inherit_graph_12.png index df846db8..da77fa31 100644 Binary files a/docs/3.1/inherit_graph_12.png and b/docs/3.1/inherit_graph_12.png differ diff --git a/docs/3.1/inherit_graph_13.map b/docs/3.1/inherit_graph_13.map index b47198d1..19a9c657 100644 --- a/docs/3.1/inherit_graph_13.map +++ b/docs/3.1/inherit_graph_13.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_13.md5 b/docs/3.1/inherit_graph_13.md5 index 04cb5ea1..5f01d4a6 100644 --- a/docs/3.1/inherit_graph_13.md5 +++ b/docs/3.1/inherit_graph_13.md5 @@ -1 +1 @@ -77060e775dbe8df58c848605024876ca \ No newline at end of file +02cfa8fbc6ed1eb6b3d40d91cc103d4d \ No newline at end of file diff --git a/docs/3.1/inherit_graph_13.png b/docs/3.1/inherit_graph_13.png index da77fa31..c6d0e6d7 100644 Binary files a/docs/3.1/inherit_graph_13.png and b/docs/3.1/inherit_graph_13.png differ diff --git a/docs/3.1/inherit_graph_14.map b/docs/3.1/inherit_graph_14.map index 19a9c657..855df757 100644 --- a/docs/3.1/inherit_graph_14.map +++ b/docs/3.1/inherit_graph_14.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_14.md5 b/docs/3.1/inherit_graph_14.md5 index 5f01d4a6..46df333b 100644 --- a/docs/3.1/inherit_graph_14.md5 +++ b/docs/3.1/inherit_graph_14.md5 @@ -1 +1 @@ -02cfa8fbc6ed1eb6b3d40d91cc103d4d \ No newline at end of file +ccf9b1197d80bc1c2aba3505b533b587 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_14.png b/docs/3.1/inherit_graph_14.png index c6d0e6d7..0b40025f 100644 Binary files a/docs/3.1/inherit_graph_14.png and b/docs/3.1/inherit_graph_14.png differ diff --git a/docs/3.1/inherit_graph_15.map b/docs/3.1/inherit_graph_15.map index 855df757..915c0501 100644 --- a/docs/3.1/inherit_graph_15.map +++ b/docs/3.1/inherit_graph_15.map @@ -1,3 +1,4 @@ - + + diff --git a/docs/3.1/inherit_graph_15.md5 b/docs/3.1/inherit_graph_15.md5 index 46df333b..6202ad65 100644 --- a/docs/3.1/inherit_graph_15.md5 +++ b/docs/3.1/inherit_graph_15.md5 @@ -1 +1 @@ -ccf9b1197d80bc1c2aba3505b533b587 \ No newline at end of file +3bc369ad9258fe5b5453ce276e8ccce6 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_15.png b/docs/3.1/inherit_graph_15.png index 0b40025f..6ed3fbfc 100644 Binary files a/docs/3.1/inherit_graph_15.png and b/docs/3.1/inherit_graph_15.png differ diff --git a/docs/3.1/inherit_graph_16.map b/docs/3.1/inherit_graph_16.map index 915c0501..152f2895 100644 --- a/docs/3.1/inherit_graph_16.map +++ b/docs/3.1/inherit_graph_16.map @@ -1,4 +1,37 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/3.1/inherit_graph_16.md5 b/docs/3.1/inherit_graph_16.md5 index 6202ad65..08d99ac5 100644 --- a/docs/3.1/inherit_graph_16.md5 +++ b/docs/3.1/inherit_graph_16.md5 @@ -1 +1 @@ -3bc369ad9258fe5b5453ce276e8ccce6 \ No newline at end of file +c06772359661ee0a93467a5729887da8 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_16.png b/docs/3.1/inherit_graph_16.png index 6ed3fbfc..f3ee446a 100644 Binary files a/docs/3.1/inherit_graph_16.png and b/docs/3.1/inherit_graph_16.png differ diff --git a/docs/3.1/inherit_graph_17.map b/docs/3.1/inherit_graph_17.map index e09415a3..c4676ee3 100644 --- a/docs/3.1/inherit_graph_17.map +++ b/docs/3.1/inherit_graph_17.map @@ -1,32 +1,3 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/docs/3.1/inherit_graph_17.md5 b/docs/3.1/inherit_graph_17.md5 index cc9d1624..16e73671 100644 --- a/docs/3.1/inherit_graph_17.md5 +++ b/docs/3.1/inherit_graph_17.md5 @@ -1 +1 @@ -83459d01528993392e1fbe97cec2ccab \ No newline at end of file +3179042e30daae2627d365314c520288 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_17.png b/docs/3.1/inherit_graph_17.png index 27e7c5a5..3e72319e 100644 Binary files a/docs/3.1/inherit_graph_17.png and b/docs/3.1/inherit_graph_17.png differ diff --git a/docs/3.1/inherit_graph_18.map b/docs/3.1/inherit_graph_18.map index c4676ee3..10920651 100644 --- a/docs/3.1/inherit_graph_18.map +++ b/docs/3.1/inherit_graph_18.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_18.md5 b/docs/3.1/inherit_graph_18.md5 index 16e73671..47803097 100644 --- a/docs/3.1/inherit_graph_18.md5 +++ b/docs/3.1/inherit_graph_18.md5 @@ -1 +1 @@ -3179042e30daae2627d365314c520288 \ No newline at end of file +8d471172123b13dfb9999519f6748ec6 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_18.png b/docs/3.1/inherit_graph_18.png index 3e72319e..be566307 100644 Binary files a/docs/3.1/inherit_graph_18.png and b/docs/3.1/inherit_graph_18.png differ diff --git a/docs/3.1/inherit_graph_19.map b/docs/3.1/inherit_graph_19.map index 10920651..d5ef36e0 100644 --- a/docs/3.1/inherit_graph_19.map +++ b/docs/3.1/inherit_graph_19.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_19.md5 b/docs/3.1/inherit_graph_19.md5 index 47803097..752f4ad7 100644 --- a/docs/3.1/inherit_graph_19.md5 +++ b/docs/3.1/inherit_graph_19.md5 @@ -1 +1 @@ -8d471172123b13dfb9999519f6748ec6 \ No newline at end of file +f1a3293763c3d7b8452c673e78352fbd \ No newline at end of file diff --git a/docs/3.1/inherit_graph_19.png b/docs/3.1/inherit_graph_19.png index be566307..dfc895f2 100644 Binary files a/docs/3.1/inherit_graph_19.png and b/docs/3.1/inherit_graph_19.png differ diff --git a/docs/3.1/inherit_graph_2.map b/docs/3.1/inherit_graph_2.map index e7334093..fbc485b2 100644 --- a/docs/3.1/inherit_graph_2.map +++ b/docs/3.1/inherit_graph_2.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_2.md5 b/docs/3.1/inherit_graph_2.md5 index 2ffcc4e2..c72aade6 100644 --- a/docs/3.1/inherit_graph_2.md5 +++ b/docs/3.1/inherit_graph_2.md5 @@ -1 +1 @@ -e43e29c4c6be74769d4fed0dfa782b80 \ No newline at end of file +420300a05d5a670b5090fb520e4c0b3a \ No newline at end of file diff --git a/docs/3.1/inherit_graph_2.png b/docs/3.1/inherit_graph_2.png index f3c2f42d..5056b88e 100644 Binary files a/docs/3.1/inherit_graph_2.png and b/docs/3.1/inherit_graph_2.png differ diff --git a/docs/3.1/inherit_graph_20.map b/docs/3.1/inherit_graph_20.map index d5ef36e0..e60a5775 100644 --- a/docs/3.1/inherit_graph_20.map +++ b/docs/3.1/inherit_graph_20.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_20.md5 b/docs/3.1/inherit_graph_20.md5 index 752f4ad7..0ebd805d 100644 --- a/docs/3.1/inherit_graph_20.md5 +++ b/docs/3.1/inherit_graph_20.md5 @@ -1 +1 @@ -f1a3293763c3d7b8452c673e78352fbd \ No newline at end of file +0d897a5aa3ecaf90af08580de399ac36 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_20.png b/docs/3.1/inherit_graph_20.png index dfc895f2..c6656d07 100644 Binary files a/docs/3.1/inherit_graph_20.png and b/docs/3.1/inherit_graph_20.png differ diff --git a/docs/3.1/inherit_graph_23.map b/docs/3.1/inherit_graph_23.map index c45b47ea..9773df68 100644 --- a/docs/3.1/inherit_graph_23.map +++ b/docs/3.1/inherit_graph_23.map @@ -1,6 +1,3 @@ - - - - + diff --git a/docs/3.1/inherit_graph_23.md5 b/docs/3.1/inherit_graph_23.md5 index 16d2bd55..7c5ce2ca 100644 --- a/docs/3.1/inherit_graph_23.md5 +++ b/docs/3.1/inherit_graph_23.md5 @@ -1 +1 @@ -3223476052b31aafd3758538ebfc26ab \ No newline at end of file +35f103d922271b48d6dff7e7c034c876 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_23.png b/docs/3.1/inherit_graph_23.png index 5dc8dc81..a2ac9f4e 100644 Binary files a/docs/3.1/inherit_graph_23.png and b/docs/3.1/inherit_graph_23.png differ diff --git a/docs/3.1/inherit_graph_24.map b/docs/3.1/inherit_graph_24.map index 806784f0..c45b47ea 100644 --- a/docs/3.1/inherit_graph_24.map +++ b/docs/3.1/inherit_graph_24.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/docs/3.1/inherit_graph_24.md5 b/docs/3.1/inherit_graph_24.md5 index dc7c1546..16d2bd55 100644 --- a/docs/3.1/inherit_graph_24.md5 +++ b/docs/3.1/inherit_graph_24.md5 @@ -1 +1 @@ -8d6bb42275acc5603dc0749a0162794e \ No newline at end of file +3223476052b31aafd3758538ebfc26ab \ No newline at end of file diff --git a/docs/3.1/inherit_graph_24.png b/docs/3.1/inherit_graph_24.png index 3ec6c80f..5dc8dc81 100644 Binary files a/docs/3.1/inherit_graph_24.png and b/docs/3.1/inherit_graph_24.png differ diff --git a/docs/3.1/inherit_graph_25.map b/docs/3.1/inherit_graph_25.map index 66689649..b16ac1db 100644 --- a/docs/3.1/inherit_graph_25.map +++ b/docs/3.1/inherit_graph_25.map @@ -1,3 +1,6 @@ - + + + + diff --git a/docs/3.1/inherit_graph_25.md5 b/docs/3.1/inherit_graph_25.md5 index 30d62be3..5e3ec767 100644 --- a/docs/3.1/inherit_graph_25.md5 +++ b/docs/3.1/inherit_graph_25.md5 @@ -1 +1 @@ -4155ce38acf209c0054521ccfe29cd11 \ No newline at end of file +ee1a9a268da6e91b21b6062d51c42115 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_25.png b/docs/3.1/inherit_graph_25.png index c15ce69a..39efea3a 100644 Binary files a/docs/3.1/inherit_graph_25.png and b/docs/3.1/inherit_graph_25.png differ diff --git a/docs/3.1/inherit_graph_26.map b/docs/3.1/inherit_graph_26.map index 661688be..806784f0 100644 --- a/docs/3.1/inherit_graph_26.map +++ b/docs/3.1/inherit_graph_26.map @@ -1,3 +1,6 @@ - + + + + diff --git a/docs/3.1/inherit_graph_26.md5 b/docs/3.1/inherit_graph_26.md5 index 6b0f600c..dc7c1546 100644 --- a/docs/3.1/inherit_graph_26.md5 +++ b/docs/3.1/inherit_graph_26.md5 @@ -1 +1 @@ -9196205d20a02ec6a0e64a0f3c6c06ee \ No newline at end of file +8d6bb42275acc5603dc0749a0162794e \ No newline at end of file diff --git a/docs/3.1/inherit_graph_26.png b/docs/3.1/inherit_graph_26.png index 07f34d7e..3ec6c80f 100644 Binary files a/docs/3.1/inherit_graph_26.png and b/docs/3.1/inherit_graph_26.png differ diff --git a/docs/3.1/inherit_graph_27.map b/docs/3.1/inherit_graph_27.map index 250724cb..66689649 100644 --- a/docs/3.1/inherit_graph_27.map +++ b/docs/3.1/inherit_graph_27.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_27.md5 b/docs/3.1/inherit_graph_27.md5 index e00192f1..30d62be3 100644 --- a/docs/3.1/inherit_graph_27.md5 +++ b/docs/3.1/inherit_graph_27.md5 @@ -1 +1 @@ -dc0342838c623ffee6445388bf13a639 \ No newline at end of file +4155ce38acf209c0054521ccfe29cd11 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_27.png b/docs/3.1/inherit_graph_27.png index ce4ebb77..c15ce69a 100644 Binary files a/docs/3.1/inherit_graph_27.png and b/docs/3.1/inherit_graph_27.png differ diff --git a/docs/3.1/inherit_graph_28.map b/docs/3.1/inherit_graph_28.map index 7e72113c..661688be 100644 --- a/docs/3.1/inherit_graph_28.map +++ b/docs/3.1/inherit_graph_28.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_28.md5 b/docs/3.1/inherit_graph_28.md5 index c9ba1969..6b0f600c 100644 --- a/docs/3.1/inherit_graph_28.md5 +++ b/docs/3.1/inherit_graph_28.md5 @@ -1 +1 @@ -cc096aad13575ff7cb2b147c51e9bb74 \ No newline at end of file +9196205d20a02ec6a0e64a0f3c6c06ee \ No newline at end of file diff --git a/docs/3.1/inherit_graph_28.png b/docs/3.1/inherit_graph_28.png index ed2276ff..07f34d7e 100644 Binary files a/docs/3.1/inherit_graph_28.png and b/docs/3.1/inherit_graph_28.png differ diff --git a/docs/3.1/inherit_graph_29.map b/docs/3.1/inherit_graph_29.map index 81c8c43b..250724cb 100644 --- a/docs/3.1/inherit_graph_29.map +++ b/docs/3.1/inherit_graph_29.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_29.md5 b/docs/3.1/inherit_graph_29.md5 index 3a769fc5..e00192f1 100644 --- a/docs/3.1/inherit_graph_29.md5 +++ b/docs/3.1/inherit_graph_29.md5 @@ -1 +1 @@ -ec3163c4aacddfc74245a62753ba41fb \ No newline at end of file +dc0342838c623ffee6445388bf13a639 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_29.png b/docs/3.1/inherit_graph_29.png index 999471a1..ce4ebb77 100644 Binary files a/docs/3.1/inherit_graph_29.png and b/docs/3.1/inherit_graph_29.png differ diff --git a/docs/3.1/inherit_graph_3.map b/docs/3.1/inherit_graph_3.map index fbc485b2..24f31d41 100644 --- a/docs/3.1/inherit_graph_3.map +++ b/docs/3.1/inherit_graph_3.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_3.md5 b/docs/3.1/inherit_graph_3.md5 index c72aade6..984f312c 100644 --- a/docs/3.1/inherit_graph_3.md5 +++ b/docs/3.1/inherit_graph_3.md5 @@ -1 +1 @@ -420300a05d5a670b5090fb520e4c0b3a \ No newline at end of file +44c3d65150aae6493ecfef52e9b2825d \ No newline at end of file diff --git a/docs/3.1/inherit_graph_3.png b/docs/3.1/inherit_graph_3.png index 5056b88e..8facaee9 100644 Binary files a/docs/3.1/inherit_graph_3.png and b/docs/3.1/inherit_graph_3.png differ diff --git a/docs/3.1/inherit_graph_31.map b/docs/3.1/inherit_graph_31.map new file mode 100644 index 00000000..81c8c43b --- /dev/null +++ b/docs/3.1/inherit_graph_31.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/3.1/inherit_graph_31.md5 b/docs/3.1/inherit_graph_31.md5 new file mode 100644 index 00000000..3a769fc5 --- /dev/null +++ b/docs/3.1/inherit_graph_31.md5 @@ -0,0 +1 @@ +ec3163c4aacddfc74245a62753ba41fb \ No newline at end of file diff --git a/docs/3.1/inherit_graph_31.png b/docs/3.1/inherit_graph_31.png new file mode 100644 index 00000000..999471a1 Binary files /dev/null and b/docs/3.1/inherit_graph_31.png differ diff --git a/docs/3.1/inherit_graph_4.map b/docs/3.1/inherit_graph_4.map index 24f31d41..665f92bd 100644 --- a/docs/3.1/inherit_graph_4.map +++ b/docs/3.1/inherit_graph_4.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_4.md5 b/docs/3.1/inherit_graph_4.md5 index 984f312c..4bc3e3cc 100644 --- a/docs/3.1/inherit_graph_4.md5 +++ b/docs/3.1/inherit_graph_4.md5 @@ -1 +1 @@ -44c3d65150aae6493ecfef52e9b2825d \ No newline at end of file +48f80f537d9c163a339757dd1892acf4 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_4.png b/docs/3.1/inherit_graph_4.png index 8facaee9..e957c5b6 100644 Binary files a/docs/3.1/inherit_graph_4.png and b/docs/3.1/inherit_graph_4.png differ diff --git a/docs/3.1/inherit_graph_5.map b/docs/3.1/inherit_graph_5.map index 665f92bd..543a0fbf 100644 --- a/docs/3.1/inherit_graph_5.map +++ b/docs/3.1/inherit_graph_5.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_5.md5 b/docs/3.1/inherit_graph_5.md5 index 4bc3e3cc..04a0b47f 100644 --- a/docs/3.1/inherit_graph_5.md5 +++ b/docs/3.1/inherit_graph_5.md5 @@ -1 +1 @@ -48f80f537d9c163a339757dd1892acf4 \ No newline at end of file +eea0468fc09668ecbad4a9499ecbb175 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_5.png b/docs/3.1/inherit_graph_5.png index e957c5b6..254e7e52 100644 Binary files a/docs/3.1/inherit_graph_5.png and b/docs/3.1/inherit_graph_5.png differ diff --git a/docs/3.1/inherit_graph_6.map b/docs/3.1/inherit_graph_6.map index 543a0fbf..2ae0c5b4 100644 --- a/docs/3.1/inherit_graph_6.map +++ b/docs/3.1/inherit_graph_6.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_6.md5 b/docs/3.1/inherit_graph_6.md5 index 04a0b47f..bbf95a28 100644 --- a/docs/3.1/inherit_graph_6.md5 +++ b/docs/3.1/inherit_graph_6.md5 @@ -1 +1 @@ -eea0468fc09668ecbad4a9499ecbb175 \ No newline at end of file +316eb8b21f637cc5f65d7df9c7d29b12 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_6.png b/docs/3.1/inherit_graph_6.png index 254e7e52..d61c7349 100644 Binary files a/docs/3.1/inherit_graph_6.png and b/docs/3.1/inherit_graph_6.png differ diff --git a/docs/3.1/inherit_graph_7.map b/docs/3.1/inherit_graph_7.map index 2ae0c5b4..ce18c254 100644 --- a/docs/3.1/inherit_graph_7.map +++ b/docs/3.1/inherit_graph_7.map @@ -1,3 +1,13 @@ - + + + + + + + + + + + diff --git a/docs/3.1/inherit_graph_7.md5 b/docs/3.1/inherit_graph_7.md5 index bbf95a28..cb2f6ade 100644 --- a/docs/3.1/inherit_graph_7.md5 +++ b/docs/3.1/inherit_graph_7.md5 @@ -1 +1 @@ -316eb8b21f637cc5f65d7df9c7d29b12 \ No newline at end of file +341b49535497055142763b857652f387 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_7.png b/docs/3.1/inherit_graph_7.png index d61c7349..27ec511e 100644 Binary files a/docs/3.1/inherit_graph_7.png and b/docs/3.1/inherit_graph_7.png differ diff --git a/docs/3.1/inherit_graph_8.map b/docs/3.1/inherit_graph_8.map index ce18c254..428f1342 100644 --- a/docs/3.1/inherit_graph_8.map +++ b/docs/3.1/inherit_graph_8.map @@ -1,13 +1,3 @@ - - - - - - - - - - - + diff --git a/docs/3.1/inherit_graph_8.md5 b/docs/3.1/inherit_graph_8.md5 index cb2f6ade..c0fa1719 100644 --- a/docs/3.1/inherit_graph_8.md5 +++ b/docs/3.1/inherit_graph_8.md5 @@ -1 +1 @@ -341b49535497055142763b857652f387 \ No newline at end of file +ec403eb7aeba941ec587f7cd276ab7a4 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_8.png b/docs/3.1/inherit_graph_8.png index 27ec511e..29a98e00 100644 Binary files a/docs/3.1/inherit_graph_8.png and b/docs/3.1/inherit_graph_8.png differ diff --git a/docs/3.1/inherit_graph_9.map b/docs/3.1/inherit_graph_9.map index 428f1342..32f82ec3 100644 --- a/docs/3.1/inherit_graph_9.map +++ b/docs/3.1/inherit_graph_9.map @@ -1,3 +1,3 @@ - + diff --git a/docs/3.1/inherit_graph_9.md5 b/docs/3.1/inherit_graph_9.md5 index c0fa1719..2d8ffdc9 100644 --- a/docs/3.1/inherit_graph_9.md5 +++ b/docs/3.1/inherit_graph_9.md5 @@ -1 +1 @@ -ec403eb7aeba941ec587f7cd276ab7a4 \ No newline at end of file +d061b8cd12ee165a7fe64ff35ddf4c50 \ No newline at end of file diff --git a/docs/3.1/inherit_graph_9.png b/docs/3.1/inherit_graph_9.png index 29a98e00..315ee837 100644 Binary files a/docs/3.1/inherit_graph_9.png and b/docs/3.1/inherit_graph_9.png differ diff --git a/docs/3.1/inherits.html b/docs/3.1/inherits.html index d5b9d02d..8de9adf3 100644 --- a/docs/3.1/inherits.html +++ b/docs/3.1/inherits.html @@ -92,90 +92,90 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - @@ -216,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/led__sysdefs_8h_source.html b/docs/3.1/led__sysdefs_8h_source.html index ad187133..6cbb541a 100644 --- a/docs/3.1/led__sysdefs_8h_source.html +++ b/docs/3.1/led__sysdefs_8h_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/lib8tion_8h_source.html b/docs/3.1/lib8tion_8h_source.html index 7f4fa8ae..9f5cbec8 100644 --- a/docs/3.1/lib8tion_8h_source.html +++ b/docs/3.1/lib8tion_8h_source.html @@ -1024,10 +1024,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    1075 
    1076 #define CEveryNMilliseconds CEveryNMillis
    1077 #define EVERY_N_MILLISECONDS(N) EVERY_N_MILLIS(N)
    -
    1078 
    -
    1079 FASTLED_NAMESPACE_END
    -
    1081 
    -
    1082 #endif
    +
    1078 #define EVERY_N_MILLISECONDS_I(NAME,N) EVERY_N_MILLIS_I(NAME,N)
    +
    1079 
    +
    1080 FASTLED_NAMESPACE_END
    +
    1082 
    +
    1083 #endif
    LIB8STATIC uint8_t hours8()
    Return the current hours since boot in an 8-bit value.
    Definition: lib8tion.h:937
    LIB8STATIC uint16_t lerp16by8(uint16_t a, uint16_t b, fract8 frac)
    linear interpolation between two unsigned 16-bit values, with 8-bit fraction
    Definition: lib8tion.h:480
    LIB8STATIC uint16_t beat16(accum88 beats_per_minute, uint32_t timebase=0)
    beat16 generates a 16-bit 'sawtooth' wave at a given BPM
    Definition: lib8tion.h:858
    @@ -1079,7 +1080,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/math8_8h_source.html b/docs/3.1/math8_8h_source.html index 944194c5..452f808f 100644 --- a/docs/3.1/math8_8h_source.html +++ b/docs/3.1/math8_8h_source.html @@ -408,7 +408,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/md__p_o_r_t_i_n_g.html b/docs/3.1/md__p_o_r_t_i_n_g.html index 94e38b77..57a426a9 100644 --- a/docs/3.1/md__p_o_r_t_i_n_g.html +++ b/docs/3.1/md__p_o_r_t_i_n_g.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/md__r_e_a_d_m_e.html b/docs/3.1/md__r_e_a_d_m_e.html index 54574bfd..12a92aa6 100644 --- a/docs/3.1/md__r_e_a_d_m_e.html +++ b/docs/3.1/md__r_e_a_d_m_e.html @@ -84,7 +84,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    ![Gitter](https://badges.gitter.im/Join%20Chat.svg)

    IMPORTANT NOTE: For AVR based systems, avr-gcc 4.8.x is supported, as is avr-gcc 4.3 and earlier. There are known issues with avr-gcc 4.7 and timing based chipsets like the WS2812B. If you are using a linux system make sure you are using avr-gcc 4.8.x not avr-gcc 4.7.x.

    FastLED 3.1

    -

    IMPORTANT NOTE: If you are building for AVR based systems, please do not use any version of the arduino IDE 1.5.7 or later yet. It messes with some of the asm output which will cause you problems. This is a library for easily & efficiently controlling a wide variety of LED chipsets, like the ones sold by adafruit (Neopixel, LPD8806), Sparkfun (WS2801), and aliexpress. In addition to writing to the leds, this library also includes a number of functions for high-performing 8bit math for manipulating your RGB values, as well as low level classes for abstracting out access to pins and SPI hardware, while still keeping things as fast as possible. Tested with Arduino up to 1.6.5 from arduino.cc.

    +

    This is a library for easily & efficiently controlling a wide variety of LED chipsets, like the ones sold by adafruit (Neopixel, DotStar, LPD8806), Sparkfun (WS2801), and aliexpress. In addition to writing to the leds, this library also includes a number of functions for high-performing 8bit math for manipulating your RGB values, as well as low level classes for abstracting out access to pins and SPI hardware, while still keeping things as fast as possible. Tested with Arduino up to 1.6.5 from arduino.cc.

    Quick note for people installing from GitHub repo zips, rename the folder FastLED before copying it to your Arduino/libraries folder. Github likes putting -branchname into the name of the folder, which unfortunately, makes Arduino cranky!

    We have multiple goals with this library:

      @@ -125,11 +125,13 @@ void loop() {

      Right now the library is supported on a variety of arduino compatable platforms. If it's ARM or AVR and uses the arduino software (or a modified version of it to build) then it is likely supported. Note that we have a long list of upcoming platforms to support, so if you don't see what you're looking for here, ask, it may be on the roadmap (or may already be supported). N.B. at the moment we are only supporting the stock compilers that ship with the arduino software. Support for upgraded compilers, as well as using AVR studio and skipping the arduino entirely, should be coming in a near future release.

      • Arduino & compatibles - straight up arduino devices, uno, duo, leonardo, mega, nano, etc...
      • +
      • Arduino Yún
      • Adafruit Trinket & Gemma - Trinket Pro may be supported, but haven't tested to confirm yet
      • -
      • Teensy 2, Teensy++ 2, Teensy 3.0, Teensy 3.1, Teensy LC - arduino compataible from pjrc.com with some extra goodies (note the teensy 3 is ARM, not AVR!)
      • +
      • Teensy 2, Teensy++ 2, Teensy 3.0, Teensy 3.1, Teensy LC - arduino compataible from pjrc.com with some extra goodies (note the teensy 3, 3.1, and LC are ARM, not AVR!)
      • Arduino Due and the digistump DigiX
      • RFDuino
      • SparkCore
      • +
      • Arduino Zero

      What types of platforms are we thinking about supporting in the future? Here's a short list: ChipKit32, Maple, Beagleboard

      What about that name?

      @@ -140,7 +142,7 @@ void loop() {
    diff --git a/docs/3.1/md_release_notes.html b/docs/3.1/md_release_notes.html index fe9e841a..8e758084 100644 --- a/docs/3.1/md_release_notes.html +++ b/docs/3.1/md_release_notes.html @@ -4,7 +4,7 @@ -FastLED: FastLED3.0 +FastLED: FastLED3.1.1pre @@ -78,10 +78,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    -
    FastLED3.0
    +
    FastLED3.1.1pre
      +
    • Enabled RFDuino/nrf51822 hardware SPI support
    • +
    • Fix edge case bug w/HSV palette blending
    • +
    • Fix power management issue w/parallel output
    • +
    • Use static_asserts for some more useful compile time errors around bad pins
    • +
    • Roll power management into FastLED.show/delay directly
    • +
    +

    FastLED3.1.0

    +
      +
    • Added support for the following platforms
        +
      • Arduino Zero
      • +
      • Teensy LC
      • +
      • RFDuino/nrf51822
      • +
      • Spark Core
      • +
      +
    • +
    • Major internal code reoganization
    • +
    • Started doxygen based documentation
    • +
    • Lots of bug/performance fixes
    • +
    • Parallel output on various arm platforms
    • +
    • lots of new stuff
    • +
    +

    FastLED3.0.2

    +
      +
    • possibly fix issues #67 and #90 by fixing gcc 4.8.x support
    • +
    +

    FastLED3.0.1

    +
      +
    • fix issue #89 w/power management pin always being on
    • +
    +

    FastLED3.0

    +
    • Added support for the following platforms:
      • Arduino due
      • Teensy 3.1
      • @@ -197,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/docs/3.1/modules.html b/docs/3.1/modules.html index 8f4908bd..d18624e2 100644 --- a/docs/3.1/modules.html +++ b/docs/3.1/modules.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/noise_8h.html b/docs/3.1/noise_8h.html index 96e59a81..ba0e753e 100644 --- a/docs/3.1/noise_8h.html +++ b/docs/3.1/noise_8h.html @@ -200,7 +200,7 @@ void 
    - - -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    - +
    +
    +
    +
    + + +
    @@ -184,31 +184,39 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    fill_2dnoise16 (< diff --git a/docs/3.1/noise_8h_source.html b/docs/3.1/noise_8h_source.html index c302c708..da3e18a3 100644 --- a/docs/3.1/noise_8h_source.html +++ b/docs/3.1/noise_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/pages.html b/docs/3.1/pages.html index 0a1e97dc..a13a9776 100644 --- a/docs/3.1/pages.html +++ b/docs/3.1/pages.html @@ -85,14 +85,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - +
     PORTING
     README
     FastLED3.0
     FastLED3.1.1pre
     Todo List
    diff --git a/docs/3.1/pixeltypes_8h_source.html b/docs/3.1/pixeltypes_8h_source.html index f7638ba5..607979b3 100644 --- a/docs/3.1/pixeltypes_8h_source.html +++ b/docs/3.1/pixeltypes_8h_source.html @@ -347,7 +347,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    265  }
    266 
    267  // subtract a constant of '1' from each channel, saturating at 0x00
    -
    268  inline CRGB operator-- (int DUMMY_ARG) __attribute__((always_inline))
    +
    268  inline CRGB operator-- (int ) __attribute__((always_inline))
    269  {
    270  CRGB retval(*this);
    271  --(*this);
    @@ -362,7 +362,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    280  }
    281 
    282  // add a constant of '1' from each channel, saturating at 0xFF
    -
    283  inline CRGB operator++ (int DUMMY_ARG) __attribute__((always_inline))
    +
    283  inline CRGB operator++ (int ) __attribute__((always_inline))
    284  {
    285  CRGB retval(*this);
    286  ++(*this);
    @@ -432,475 +432,495 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    350  return *this;
    351  }
    352 
    -
    353  // fadeToBlackBy is a synonym for nscale8( ..., 255-fadefactor)
    -
    354  inline CRGB& fadeToBlackBy (uint8_t fadefactor )
    -
    355  {
    -
    356  nscale8x3( r, g, b, 255 - fadefactor);
    -
    357  return *this;
    -
    358  }
    -
    359 
    -
    360  // "or" operator brings each channel up to the higher of the two values
    -
    361  inline CRGB& operator|= (const CRGB& rhs )
    -
    362  {
    -
    363  if( rhs.r > r) r = rhs.r;
    -
    364  if( rhs.g > g) g = rhs.g;
    -
    365  if( rhs.b > b) b = rhs.b;
    -
    366  return *this;
    -
    367  }
    -
    368  inline CRGB& operator|= (uint8_t d )
    -
    369  {
    -
    370  if( d > r) r = d;
    -
    371  if( d > g) g = d;
    -
    372  if( d > b) b = d;
    -
    373  return *this;
    -
    374  }
    -
    375 
    -
    376  // "and" operator brings each channel down to the lower of the two values
    -
    377  inline CRGB& operator&= (const CRGB& rhs )
    -
    378  {
    -
    379  if( rhs.r < r) r = rhs.r;
    -
    380  if( rhs.g < g) g = rhs.g;
    -
    381  if( rhs.b < b) b = rhs.b;
    -
    382  return *this;
    -
    383  }
    -
    384  inline CRGB& operator&= (uint8_t d )
    -
    385  {
    -
    386  if( d < r) r = d;
    -
    387  if( d < g) g = d;
    -
    388  if( d < b) b = d;
    -
    389  return *this;
    -
    390  }
    -
    391 
    -
    392  // this allows testing a CRGB for zero-ness
    -
    393  inline operator bool() const __attribute__((always_inline))
    -
    394  {
    -
    395  return r || g || b;
    -
    396  }
    -
    397 
    -
    398  // invert each channel
    -
    399  inline CRGB operator- ()
    -
    400  {
    -
    401  CRGB retval;
    -
    402  retval.r = 255 - r;
    -
    403  retval.g = 255 - g;
    -
    404  retval.b = 255 - b;
    -
    405  return retval;
    -
    406  }
    -
    407 
    -
    408 #ifdef SmartMatrix_h
    -
    409  operator rgb24() const {
    -
    410  rgb24 ret;
    -
    411  ret.red = r;
    -
    412  ret.green = g;
    -
    413  ret.blue = b;
    -
    414  return ret;
    -
    415  }
    -
    416 #endif
    +
    353  // scale down a RGB to N 256ths of it's current brightness, using
    +
    354  // 'plain math' dimming rules, which means that if the low light levels
    +
    355  // may dim all the way to 100% black.
    +
    356  inline CRGB& nscale8 (const CRGB & scaledown )
    +
    357  {
    +
    358  r = ::scale8(r, scaledown.r);
    +
    359  g = ::scale8(g, scaledown.g);
    +
    360  b = ::scale8(b, scaledown.b);
    +
    361  return *this;
    +
    362  }
    +
    363 
    +
    364  inline CRGB scale8 (const CRGB & scaledown ) const
    +
    365  {
    +
    366  CRGB out;
    +
    367  out.r = ::scale8(r, scaledown.r);
    +
    368  out.g = ::scale8(g, scaledown.g);
    +
    369  out.b = ::scale8(b, scaledown.b);
    +
    370  return out;
    +
    371  }
    +
    372 
    +
    373  // fadeToBlackBy is a synonym for nscale8( ..., 255-fadefactor)
    +
    374  inline CRGB& fadeToBlackBy (uint8_t fadefactor )
    +
    375  {
    +
    376  nscale8x3( r, g, b, 255 - fadefactor);
    +
    377  return *this;
    +
    378  }
    +
    379 
    +
    380  // "or" operator brings each channel up to the higher of the two values
    +
    381  inline CRGB& operator|= (const CRGB& rhs )
    +
    382  {
    +
    383  if( rhs.r > r) r = rhs.r;
    +
    384  if( rhs.g > g) g = rhs.g;
    +
    385  if( rhs.b > b) b = rhs.b;
    +
    386  return *this;
    +
    387  }
    +
    388  inline CRGB& operator|= (uint8_t d )
    +
    389  {
    +
    390  if( d > r) r = d;
    +
    391  if( d > g) g = d;
    +
    392  if( d > b) b = d;
    +
    393  return *this;
    +
    394  }
    +
    395 
    +
    396  // "and" operator brings each channel down to the lower of the two values
    +
    397  inline CRGB& operator&= (const CRGB& rhs )
    +
    398  {
    +
    399  if( rhs.r < r) r = rhs.r;
    +
    400  if( rhs.g < g) g = rhs.g;
    +
    401  if( rhs.b < b) b = rhs.b;
    +
    402  return *this;
    +
    403  }
    +
    404  inline CRGB& operator&= (uint8_t d )
    +
    405  {
    +
    406  if( d < r) r = d;
    +
    407  if( d < g) g = d;
    +
    408  if( d < b) b = d;
    +
    409  return *this;
    +
    410  }
    +
    411 
    +
    412  // this allows testing a CRGB for zero-ness
    +
    413  inline operator bool() const __attribute__((always_inline))
    +
    414  {
    +
    415  return r || g || b;
    +
    416  }
    417 
    -
    418  inline uint8_t getLuma ( ) const {
    -
    419  //Y' = 0.2126 R' + 0.7152 G' + 0.0722 B'
    -
    420  // 54 183 18 (!)
    -
    421 
    -
    422  uint8_t luma = scale8_LEAVING_R1_DIRTY( r, 54) + \
    -
    423  scale8_LEAVING_R1_DIRTY( g, 183) + \
    - -
    425  cleanup_R1();
    -
    426  return luma;
    -
    427  }
    -
    428 
    -
    429  inline uint8_t getAverageLight( ) const {
    -
    430  const uint8_t eightysix = 86;
    -
    431  uint8_t avg = scale8_LEAVING_R1_DIRTY( r, eightysix) + \
    -
    432  scale8_LEAVING_R1_DIRTY( g, eightysix) + \
    -
    433  scale8_LEAVING_R1_DIRTY( b, eightysix);
    -
    434  cleanup_R1();
    -
    435  return avg;
    -
    436  }
    +
    418  // invert each channel
    +
    419  inline CRGB operator- ()
    +
    420  {
    +
    421  CRGB retval;
    +
    422  retval.r = 255 - r;
    +
    423  retval.g = 255 - g;
    +
    424  retval.b = 255 - b;
    +
    425  return retval;
    +
    426  }
    +
    427 
    +
    428 #if (defined SmartMatrix_h || defined SmartMatrix3_h)
    +
    429  operator rgb24() const {
    +
    430  rgb24 ret;
    +
    431  ret.red = r;
    +
    432  ret.green = g;
    +
    433  ret.blue = b;
    +
    434  return ret;
    +
    435  }
    +
    436 #endif
    437 
    -
    438  inline void maximizeBrightness( uint8_t limit = 255 ) {
    -
    439  uint8_t max = red;
    -
    440  if( green > max) max = green;
    -
    441  if( blue > max) max = blue;
    -
    442  uint16_t factor = ((uint16_t)(limit) * 256) / max;
    -
    443  red = (red * factor) / 256;
    -
    444  green = (green * factor) / 256;
    -
    445  blue = (blue * factor) / 256;
    -
    446  }
    -
    447 
    -
    448  inline CRGB lerp8( CRGB & other, fract8 frac)
    -
    449  {
    -
    450  CRGB ret;
    -
    451 
    -
    452  ret.r = lerp8by8(r,other.r,frac);
    -
    453  ret.g = lerp8by8(g,other.g,frac);
    -
    454  ret.b = lerp8by8(b,other.b,frac);
    -
    455 
    -
    456  return ret;
    -
    457  }
    -
    458 
    -
    459  inline CRGB lerp16( CRGB & other, fract16 frac)
    -
    460  {
    -
    461  CRGB ret;
    -
    462 
    -
    463  ret.r = lerp16by16(r<<8,other.r<<8,frac)>>8;
    -
    464  ret.g = lerp16by16(g<<8,other.g<<8,frac)>>8;
    -
    465  ret.b = lerp16by16(b<<8,other.b<<8,frac)>>8;
    -
    466 
    -
    467  return ret;
    -
    468  }
    -
    469 
    -
    470  // getParity returns 0 or 1, depending on the
    -
    471  // lowest bit of the sum of the color components.
    -
    472  inline uint8_t getParity()
    -
    473  {
    -
    474  uint8_t sum = r + g + b;
    -
    475  return (sum & 0x01);
    -
    476  }
    -
    477 
    -
    478  // setParity adjusts the color in the smallest
    -
    479  // way possible so that the parity of the color
    -
    480  // is now the desired value. This allows you to
    -
    481  // 'hide' one bit of information in the color.
    -
    482  //
    -
    483  // Ideally, we find one color channel which already
    -
    484  // has data in it, and modify just that channel by one.
    -
    485  // We don't want to light up a channel that's black
    -
    486  // if we can avoid it, and if the pixel is 'grayscale',
    -
    487  // (meaning that R==G==B), we modify all three channels
    -
    488  // at once, to preserve the neutral hue.
    -
    489  //
    -
    490  // There's no such thing as a free lunch; in many cases
    -
    491  // this 'hidden bit' may actually be visible, but this
    -
    492  // code makes reasonable efforts to hide it as much
    -
    493  // as is reasonably possible.
    -
    494  //
    -
    495  // Also, an effort is made to have make it such that
    -
    496  // repeatedly setting the parity to different values
    -
    497  // will not cause the color to 'drift'. Toggling
    -
    498  // the parity twice should generally result in the
    -
    499  // original color again.
    -
    500  //
    -
    501  inline void setParity( uint8_t parity)
    -
    502  {
    -
    503  uint8_t curparity = getParity();
    -
    504 
    -
    505  if( parity == curparity) return;
    -
    506 
    -
    507  if( parity ) {
    -
    508  // going 'up'
    -
    509  if( (b > 0) && (b < 255)) {
    -
    510  if( r == g && g == b) {
    -
    511  r++;
    -
    512  g++;
    -
    513  }
    -
    514  b++;
    -
    515  } else if( (r > 0) && (r < 255)) {
    -
    516  r++;
    -
    517  } else if( (g > 0) && (g < 255)) {
    -
    518  g++;
    -
    519  } else {
    -
    520  if( r == g && g == b) {
    -
    521  r ^= 0x01;
    -
    522  g ^= 0x01;
    -
    523  }
    -
    524  b ^= 0x01;
    -
    525  }
    -
    526  } else {
    -
    527  // going 'down'
    -
    528  if( b > 1) {
    -
    529  if( r == g && g == b) {
    -
    530  r--;
    -
    531  g--;
    -
    532  }
    -
    533  b--;
    -
    534  } else if( g > 1) {
    -
    535  g--;
    -
    536  } else if( r > 1) {
    -
    537  r--;
    -
    538  } else {
    -
    539  if( r == g && g == b) {
    -
    540  r ^= 0x01;
    -
    541  g ^= 0x01;
    -
    542  }
    -
    543  b ^= 0x01;
    -
    544  }
    -
    545  }
    -
    546  }
    -
    547 
    -
    549  typedef enum {
    -
    550  AliceBlue=0xF0F8FF,
    -
    551  Amethyst=0x9966CC,
    -
    552  AntiqueWhite=0xFAEBD7,
    -
    553  Aqua=0x00FFFF,
    -
    554  Aquamarine=0x7FFFD4,
    -
    555  Azure=0xF0FFFF,
    -
    556  Beige=0xF5F5DC,
    -
    557  Bisque=0xFFE4C4,
    -
    558  Black=0x000000,
    -
    559  BlanchedAlmond=0xFFEBCD,
    -
    560  Blue=0x0000FF,
    -
    561  BlueViolet=0x8A2BE2,
    -
    562  Brown=0xA52A2A,
    -
    563  BurlyWood=0xDEB887,
    -
    564  CadetBlue=0x5F9EA0,
    -
    565  Chartreuse=0x7FFF00,
    -
    566  Chocolate=0xD2691E,
    -
    567  Coral=0xFF7F50,
    -
    568  CornflowerBlue=0x6495ED,
    -
    569  Cornsilk=0xFFF8DC,
    -
    570  Crimson=0xDC143C,
    -
    571  Cyan=0x00FFFF,
    -
    572  DarkBlue=0x00008B,
    -
    573  DarkCyan=0x008B8B,
    -
    574  DarkGoldenrod=0xB8860B,
    -
    575  DarkGray=0xA9A9A9,
    -
    576  DarkGrey=0xA9A9A9,
    -
    577  DarkGreen=0x006400,
    -
    578  DarkKhaki=0xBDB76B,
    -
    579  DarkMagenta=0x8B008B,
    -
    580  DarkOliveGreen=0x556B2F,
    -
    581  DarkOrange=0xFF8C00,
    -
    582  DarkOrchid=0x9932CC,
    -
    583  DarkRed=0x8B0000,
    -
    584  DarkSalmon=0xE9967A,
    -
    585  DarkSeaGreen=0x8FBC8F,
    -
    586  DarkSlateBlue=0x483D8B,
    -
    587  DarkSlateGray=0x2F4F4F,
    -
    588  DarkSlateGrey=0x2F4F4F,
    -
    589  DarkTurquoise=0x00CED1,
    -
    590  DarkViolet=0x9400D3,
    -
    591  DeepPink=0xFF1493,
    -
    592  DeepSkyBlue=0x00BFFF,
    -
    593  DimGray=0x696969,
    -
    594  DimGrey=0x696969,
    -
    595  DodgerBlue=0x1E90FF,
    -
    596  FireBrick=0xB22222,
    -
    597  FloralWhite=0xFFFAF0,
    -
    598  ForestGreen=0x228B22,
    -
    599  Fuchsia=0xFF00FF,
    -
    600  Gainsboro=0xDCDCDC,
    -
    601  GhostWhite=0xF8F8FF,
    -
    602  Gold=0xFFD700,
    -
    603  Goldenrod=0xDAA520,
    -
    604  Gray=0x808080,
    -
    605  Grey=0x808080,
    -
    606  Green=0x008000,
    -
    607  GreenYellow=0xADFF2F,
    -
    608  Honeydew=0xF0FFF0,
    -
    609  HotPink=0xFF69B4,
    -
    610  IndianRed=0xCD5C5C,
    -
    611  Indigo=0x4B0082,
    -
    612  Ivory=0xFFFFF0,
    -
    613  Khaki=0xF0E68C,
    -
    614  Lavender=0xE6E6FA,
    -
    615  LavenderBlush=0xFFF0F5,
    -
    616  LawnGreen=0x7CFC00,
    -
    617  LemonChiffon=0xFFFACD,
    -
    618  LightBlue=0xADD8E6,
    -
    619  LightCoral=0xF08080,
    -
    620  LightCyan=0xE0FFFF,
    -
    621  LightGoldenrodYellow=0xFAFAD2,
    -
    622  LightGreen=0x90EE90,
    -
    623  LightGrey=0xD3D3D3,
    -
    624  LightPink=0xFFB6C1,
    -
    625  LightSalmon=0xFFA07A,
    -
    626  LightSeaGreen=0x20B2AA,
    -
    627  LightSkyBlue=0x87CEFA,
    -
    628  LightSlateGray=0x778899,
    -
    629  LightSlateGrey=0x778899,
    -
    630  LightSteelBlue=0xB0C4DE,
    -
    631  LightYellow=0xFFFFE0,
    -
    632  Lime=0x00FF00,
    -
    633  LimeGreen=0x32CD32,
    -
    634  Linen=0xFAF0E6,
    -
    635  Magenta=0xFF00FF,
    -
    636  Maroon=0x800000,
    -
    637  MediumAquamarine=0x66CDAA,
    -
    638  MediumBlue=0x0000CD,
    -
    639  MediumOrchid=0xBA55D3,
    -
    640  MediumPurple=0x9370DB,
    -
    641  MediumSeaGreen=0x3CB371,
    -
    642  MediumSlateBlue=0x7B68EE,
    -
    643  MediumSpringGreen=0x00FA9A,
    -
    644  MediumTurquoise=0x48D1CC,
    -
    645  MediumVioletRed=0xC71585,
    -
    646  MidnightBlue=0x191970,
    -
    647  MintCream=0xF5FFFA,
    -
    648  MistyRose=0xFFE4E1,
    -
    649  Moccasin=0xFFE4B5,
    -
    650  NavajoWhite=0xFFDEAD,
    -
    651  Navy=0x000080,
    -
    652  OldLace=0xFDF5E6,
    -
    653  Olive=0x808000,
    -
    654  OliveDrab=0x6B8E23,
    -
    655  Orange=0xFFA500,
    -
    656  OrangeRed=0xFF4500,
    -
    657  Orchid=0xDA70D6,
    -
    658  PaleGoldenrod=0xEEE8AA,
    -
    659  PaleGreen=0x98FB98,
    -
    660  PaleTurquoise=0xAFEEEE,
    -
    661  PaleVioletRed=0xDB7093,
    -
    662  PapayaWhip=0xFFEFD5,
    -
    663  PeachPuff=0xFFDAB9,
    -
    664  Peru=0xCD853F,
    -
    665  Pink=0xFFC0CB,
    -
    666  Plaid=0xCC5533,
    -
    667  Plum=0xDDA0DD,
    -
    668  PowderBlue=0xB0E0E6,
    -
    669  Purple=0x800080,
    -
    670  Red=0xFF0000,
    -
    671  RosyBrown=0xBC8F8F,
    -
    672  RoyalBlue=0x4169E1,
    -
    673  SaddleBrown=0x8B4513,
    -
    674  Salmon=0xFA8072,
    -
    675  SandyBrown=0xF4A460,
    -
    676  SeaGreen=0x2E8B57,
    -
    677  Seashell=0xFFF5EE,
    -
    678  Sienna=0xA0522D,
    -
    679  Silver=0xC0C0C0,
    -
    680  SkyBlue=0x87CEEB,
    -
    681  SlateBlue=0x6A5ACD,
    -
    682  SlateGray=0x708090,
    -
    683  SlateGrey=0x708090,
    -
    684  Snow=0xFFFAFA,
    -
    685  SpringGreen=0x00FF7F,
    -
    686  SteelBlue=0x4682B4,
    -
    687  Tan=0xD2B48C,
    -
    688  Teal=0x008080,
    -
    689  Thistle=0xD8BFD8,
    -
    690  Tomato=0xFF6347,
    -
    691  Turquoise=0x40E0D0,
    -
    692  Violet=0xEE82EE,
    -
    693  Wheat=0xF5DEB3,
    -
    694  White=0xFFFFFF,
    -
    695  WhiteSmoke=0xF5F5F5,
    -
    696  Yellow=0xFFFF00,
    -
    697  YellowGreen=0x9ACD32,
    -
    698 
    -
    699  // LED RGB color that roughly approximates
    -
    700  // the color of incandescent fairy lights,
    -
    701  // assuming that you're using FastLED
    -
    702  // color correction on your LEDs (recommended).
    -
    703  FairyLight=0xFFE42D,
    -
    704  // If you are using no color correction, use this
    -
    705  FairyLightNCC=0xFF9D2A
    -
    706 
    -
    707  } HTMLColorCode;
    -
    708 };
    -
    709 
    -
    710 
    -
    711 inline __attribute__((always_inline)) bool operator== (const CRGB& lhs, const CRGB& rhs)
    -
    712 {
    -
    713  return (lhs.r == rhs.r) && (lhs.g == rhs.g) && (lhs.b == rhs.b);
    -
    714 }
    -
    715 
    -
    716 inline __attribute__((always_inline)) bool operator!= (const CRGB& lhs, const CRGB& rhs)
    -
    717 {
    -
    718  return !(lhs == rhs);
    -
    719 }
    -
    720 
    -
    721 inline __attribute__((always_inline)) bool operator< (const CRGB& lhs, const CRGB& rhs)
    -
    722 {
    -
    723  uint16_t sl, sr;
    -
    724  sl = lhs.r + lhs.g + lhs.b;
    -
    725  sr = rhs.r + rhs.g + rhs.b;
    -
    726  return sl < sr;
    -
    727 }
    -
    728 
    -
    729 inline __attribute__((always_inline)) bool operator> (const CRGB& lhs, const CRGB& rhs)
    -
    730 {
    -
    731  uint16_t sl, sr;
    -
    732  sl = lhs.r + lhs.g + lhs.b;
    -
    733  sr = rhs.r + rhs.g + rhs.b;
    -
    734  return sl > sr;
    -
    735 }
    -
    736 
    -
    737 inline __attribute__((always_inline)) bool operator>= (const CRGB& lhs, const CRGB& rhs)
    -
    738 {
    -
    739  uint16_t sl, sr;
    -
    740  sl = lhs.r + lhs.g + lhs.b;
    -
    741  sr = rhs.r + rhs.g + rhs.b;
    -
    742  return sl >= sr;
    -
    743 }
    -
    744 
    -
    745 inline __attribute__((always_inline)) bool operator<= (const CRGB& lhs, const CRGB& rhs)
    -
    746 {
    -
    747  uint16_t sl, sr;
    -
    748  sl = lhs.r + lhs.g + lhs.b;
    -
    749  sr = rhs.r + rhs.g + rhs.b;
    -
    750  return sl <= sr;
    -
    751 }
    -
    752 
    -
    753 
    -
    754 __attribute__((always_inline))
    -
    755 inline CRGB operator+( const CRGB& p1, const CRGB& p2)
    -
    756 {
    -
    757  return CRGB( qadd8( p1.r, p2.r),
    -
    758  qadd8( p1.g, p2.g),
    -
    759  qadd8( p1.b, p2.b));
    -
    760 }
    -
    761 
    -
    762 __attribute__((always_inline))
    -
    763 inline CRGB operator-( const CRGB& p1, const CRGB& p2)
    -
    764 {
    -
    765  return CRGB( qsub8( p1.r, p2.r),
    -
    766  qsub8( p1.g, p2.g),
    -
    767  qsub8( p1.b, p2.b));
    -
    768 }
    -
    769 
    -
    770 __attribute__((always_inline))
    -
    771 inline CRGB operator*( const CRGB& p1, uint8_t d)
    -
    772 {
    -
    773  return CRGB( qmul8( p1.r, d),
    -
    774  qmul8( p1.g, d),
    -
    775  qmul8( p1.b, d));
    -
    776 }
    -
    777 
    -
    778 __attribute__((always_inline))
    -
    779 inline CRGB operator/( const CRGB& p1, uint8_t d)
    -
    780 {
    -
    781  return CRGB( p1.r/d, p1.g/d, p1.b/d);
    -
    782 }
    -
    783 
    -
    784 
    -
    785 __attribute__((always_inline))
    -
    786 inline CRGB operator&( const CRGB& p1, const CRGB& p2)
    -
    787 {
    -
    788  return CRGB( p1.r < p2.r ? p1.r : p2.r,
    -
    789  p1.g < p2.g ? p1.g : p2.g,
    -
    790  p1.b < p2.b ? p1.b : p2.b);
    -
    791 }
    -
    792 
    -
    793 __attribute__((always_inline))
    -
    794 inline CRGB operator|( const CRGB& p1, const CRGB& p2)
    -
    795 {
    -
    796  return CRGB( p1.r > p2.r ? p1.r : p2.r,
    -
    797  p1.g > p2.g ? p1.g : p2.g,
    -
    798  p1.b > p2.b ? p1.b : p2.b);
    -
    799 }
    -
    800 
    -
    801 __attribute__((always_inline))
    -
    802 inline CRGB operator%( const CRGB& p1, uint8_t d)
    -
    803 {
    -
    804  CRGB retval( p1);
    -
    805  retval.nscale8_video( d);
    -
    806  return retval;
    -
    807 }
    -
    808 
    -
    809 
    -
    810 
    -
    814 enum EOrder {
    -
    815  RGB=0012,
    -
    816  RBG=0021,
    -
    817  GRB=0102,
    -
    818  GBR=0120,
    -
    819  BRG=0201,
    -
    820  BGR=0210
    -
    821 };
    -
    822 
    -
    823 FASTLED_NAMESPACE_END
    -
    825 
    -
    826 #endif
    +
    438  inline uint8_t getLuma ( ) const {
    +
    439  //Y' = 0.2126 R' + 0.7152 G' + 0.0722 B'
    +
    440  // 54 183 18 (!)
    +
    441 
    +
    442  uint8_t luma = scale8_LEAVING_R1_DIRTY( r, 54) + \
    +
    443  scale8_LEAVING_R1_DIRTY( g, 183) + \
    + +
    445  cleanup_R1();
    +
    446  return luma;
    +
    447  }
    +
    448 
    +
    449  inline uint8_t getAverageLight( ) const {
    +
    450  const uint8_t eightysix = 86;
    +
    451  uint8_t avg = scale8_LEAVING_R1_DIRTY( r, eightysix) + \
    +
    452  scale8_LEAVING_R1_DIRTY( g, eightysix) + \
    +
    453  scale8_LEAVING_R1_DIRTY( b, eightysix);
    +
    454  cleanup_R1();
    +
    455  return avg;
    +
    456  }
    +
    457 
    +
    458  inline void maximizeBrightness( uint8_t limit = 255 ) {
    +
    459  uint8_t max = red;
    +
    460  if( green > max) max = green;
    +
    461  if( blue > max) max = blue;
    +
    462  uint16_t factor = ((uint16_t)(limit) * 256) / max;
    +
    463  red = (red * factor) / 256;
    +
    464  green = (green * factor) / 256;
    +
    465  blue = (blue * factor) / 256;
    +
    466  }
    +
    467 
    +
    468  inline CRGB lerp8( CRGB & other, fract8 frac)
    +
    469  {
    +
    470  CRGB ret;
    +
    471 
    +
    472  ret.r = lerp8by8(r,other.r,frac);
    +
    473  ret.g = lerp8by8(g,other.g,frac);
    +
    474  ret.b = lerp8by8(b,other.b,frac);
    +
    475 
    +
    476  return ret;
    +
    477  }
    +
    478 
    +
    479  inline CRGB lerp16( CRGB & other, fract16 frac)
    +
    480  {
    +
    481  CRGB ret;
    +
    482 
    +
    483  ret.r = lerp16by16(r<<8,other.r<<8,frac)>>8;
    +
    484  ret.g = lerp16by16(g<<8,other.g<<8,frac)>>8;
    +
    485  ret.b = lerp16by16(b<<8,other.b<<8,frac)>>8;
    +
    486 
    +
    487  return ret;
    +
    488  }
    +
    489 
    +
    490  // getParity returns 0 or 1, depending on the
    +
    491  // lowest bit of the sum of the color components.
    +
    492  inline uint8_t getParity()
    +
    493  {
    +
    494  uint8_t sum = r + g + b;
    +
    495  return (sum & 0x01);
    +
    496  }
    +
    497 
    +
    498  // setParity adjusts the color in the smallest
    +
    499  // way possible so that the parity of the color
    +
    500  // is now the desired value. This allows you to
    +
    501  // 'hide' one bit of information in the color.
    +
    502  //
    +
    503  // Ideally, we find one color channel which already
    +
    504  // has data in it, and modify just that channel by one.
    +
    505  // We don't want to light up a channel that's black
    +
    506  // if we can avoid it, and if the pixel is 'grayscale',
    +
    507  // (meaning that R==G==B), we modify all three channels
    +
    508  // at once, to preserve the neutral hue.
    +
    509  //
    +
    510  // There's no such thing as a free lunch; in many cases
    +
    511  // this 'hidden bit' may actually be visible, but this
    +
    512  // code makes reasonable efforts to hide it as much
    +
    513  // as is reasonably possible.
    +
    514  //
    +
    515  // Also, an effort is made to have make it such that
    +
    516  // repeatedly setting the parity to different values
    +
    517  // will not cause the color to 'drift'. Toggling
    +
    518  // the parity twice should generally result in the
    +
    519  // original color again.
    +
    520  //
    +
    521  inline void setParity( uint8_t parity)
    +
    522  {
    +
    523  uint8_t curparity = getParity();
    +
    524 
    +
    525  if( parity == curparity) return;
    +
    526 
    +
    527  if( parity ) {
    +
    528  // going 'up'
    +
    529  if( (b > 0) && (b < 255)) {
    +
    530  if( r == g && g == b) {
    +
    531  r++;
    +
    532  g++;
    +
    533  }
    +
    534  b++;
    +
    535  } else if( (r > 0) && (r < 255)) {
    +
    536  r++;
    +
    537  } else if( (g > 0) && (g < 255)) {
    +
    538  g++;
    +
    539  } else {
    +
    540  if( r == g && g == b) {
    +
    541  r ^= 0x01;
    +
    542  g ^= 0x01;
    +
    543  }
    +
    544  b ^= 0x01;
    +
    545  }
    +
    546  } else {
    +
    547  // going 'down'
    +
    548  if( b > 1) {
    +
    549  if( r == g && g == b) {
    +
    550  r--;
    +
    551  g--;
    +
    552  }
    +
    553  b--;
    +
    554  } else if( g > 1) {
    +
    555  g--;
    +
    556  } else if( r > 1) {
    +
    557  r--;
    +
    558  } else {
    +
    559  if( r == g && g == b) {
    +
    560  r ^= 0x01;
    +
    561  g ^= 0x01;
    +
    562  }
    +
    563  b ^= 0x01;
    +
    564  }
    +
    565  }
    +
    566  }
    +
    567 
    +
    569  typedef enum {
    +
    570  AliceBlue=0xF0F8FF,
    +
    571  Amethyst=0x9966CC,
    +
    572  AntiqueWhite=0xFAEBD7,
    +
    573  Aqua=0x00FFFF,
    +
    574  Aquamarine=0x7FFFD4,
    +
    575  Azure=0xF0FFFF,
    +
    576  Beige=0xF5F5DC,
    +
    577  Bisque=0xFFE4C4,
    +
    578  Black=0x000000,
    +
    579  BlanchedAlmond=0xFFEBCD,
    +
    580  Blue=0x0000FF,
    +
    581  BlueViolet=0x8A2BE2,
    +
    582  Brown=0xA52A2A,
    +
    583  BurlyWood=0xDEB887,
    +
    584  CadetBlue=0x5F9EA0,
    +
    585  Chartreuse=0x7FFF00,
    +
    586  Chocolate=0xD2691E,
    +
    587  Coral=0xFF7F50,
    +
    588  CornflowerBlue=0x6495ED,
    +
    589  Cornsilk=0xFFF8DC,
    +
    590  Crimson=0xDC143C,
    +
    591  Cyan=0x00FFFF,
    +
    592  DarkBlue=0x00008B,
    +
    593  DarkCyan=0x008B8B,
    +
    594  DarkGoldenrod=0xB8860B,
    +
    595  DarkGray=0xA9A9A9,
    +
    596  DarkGrey=0xA9A9A9,
    +
    597  DarkGreen=0x006400,
    +
    598  DarkKhaki=0xBDB76B,
    +
    599  DarkMagenta=0x8B008B,
    +
    600  DarkOliveGreen=0x556B2F,
    +
    601  DarkOrange=0xFF8C00,
    +
    602  DarkOrchid=0x9932CC,
    +
    603  DarkRed=0x8B0000,
    +
    604  DarkSalmon=0xE9967A,
    +
    605  DarkSeaGreen=0x8FBC8F,
    +
    606  DarkSlateBlue=0x483D8B,
    +
    607  DarkSlateGray=0x2F4F4F,
    +
    608  DarkSlateGrey=0x2F4F4F,
    +
    609  DarkTurquoise=0x00CED1,
    +
    610  DarkViolet=0x9400D3,
    +
    611  DeepPink=0xFF1493,
    +
    612  DeepSkyBlue=0x00BFFF,
    +
    613  DimGray=0x696969,
    +
    614  DimGrey=0x696969,
    +
    615  DodgerBlue=0x1E90FF,
    +
    616  FireBrick=0xB22222,
    +
    617  FloralWhite=0xFFFAF0,
    +
    618  ForestGreen=0x228B22,
    +
    619  Fuchsia=0xFF00FF,
    +
    620  Gainsboro=0xDCDCDC,
    +
    621  GhostWhite=0xF8F8FF,
    +
    622  Gold=0xFFD700,
    +
    623  Goldenrod=0xDAA520,
    +
    624  Gray=0x808080,
    +
    625  Grey=0x808080,
    +
    626  Green=0x008000,
    +
    627  GreenYellow=0xADFF2F,
    +
    628  Honeydew=0xF0FFF0,
    +
    629  HotPink=0xFF69B4,
    +
    630  IndianRed=0xCD5C5C,
    +
    631  Indigo=0x4B0082,
    +
    632  Ivory=0xFFFFF0,
    +
    633  Khaki=0xF0E68C,
    +
    634  Lavender=0xE6E6FA,
    +
    635  LavenderBlush=0xFFF0F5,
    +
    636  LawnGreen=0x7CFC00,
    +
    637  LemonChiffon=0xFFFACD,
    +
    638  LightBlue=0xADD8E6,
    +
    639  LightCoral=0xF08080,
    +
    640  LightCyan=0xE0FFFF,
    +
    641  LightGoldenrodYellow=0xFAFAD2,
    +
    642  LightGreen=0x90EE90,
    +
    643  LightGrey=0xD3D3D3,
    +
    644  LightPink=0xFFB6C1,
    +
    645  LightSalmon=0xFFA07A,
    +
    646  LightSeaGreen=0x20B2AA,
    +
    647  LightSkyBlue=0x87CEFA,
    +
    648  LightSlateGray=0x778899,
    +
    649  LightSlateGrey=0x778899,
    +
    650  LightSteelBlue=0xB0C4DE,
    +
    651  LightYellow=0xFFFFE0,
    +
    652  Lime=0x00FF00,
    +
    653  LimeGreen=0x32CD32,
    +
    654  Linen=0xFAF0E6,
    +
    655  Magenta=0xFF00FF,
    +
    656  Maroon=0x800000,
    +
    657  MediumAquamarine=0x66CDAA,
    +
    658  MediumBlue=0x0000CD,
    +
    659  MediumOrchid=0xBA55D3,
    +
    660  MediumPurple=0x9370DB,
    +
    661  MediumSeaGreen=0x3CB371,
    +
    662  MediumSlateBlue=0x7B68EE,
    +
    663  MediumSpringGreen=0x00FA9A,
    +
    664  MediumTurquoise=0x48D1CC,
    +
    665  MediumVioletRed=0xC71585,
    +
    666  MidnightBlue=0x191970,
    +
    667  MintCream=0xF5FFFA,
    +
    668  MistyRose=0xFFE4E1,
    +
    669  Moccasin=0xFFE4B5,
    +
    670  NavajoWhite=0xFFDEAD,
    +
    671  Navy=0x000080,
    +
    672  OldLace=0xFDF5E6,
    +
    673  Olive=0x808000,
    +
    674  OliveDrab=0x6B8E23,
    +
    675  Orange=0xFFA500,
    +
    676  OrangeRed=0xFF4500,
    +
    677  Orchid=0xDA70D6,
    +
    678  PaleGoldenrod=0xEEE8AA,
    +
    679  PaleGreen=0x98FB98,
    +
    680  PaleTurquoise=0xAFEEEE,
    +
    681  PaleVioletRed=0xDB7093,
    +
    682  PapayaWhip=0xFFEFD5,
    +
    683  PeachPuff=0xFFDAB9,
    +
    684  Peru=0xCD853F,
    +
    685  Pink=0xFFC0CB,
    +
    686  Plaid=0xCC5533,
    +
    687  Plum=0xDDA0DD,
    +
    688  PowderBlue=0xB0E0E6,
    +
    689  Purple=0x800080,
    +
    690  Red=0xFF0000,
    +
    691  RosyBrown=0xBC8F8F,
    +
    692  RoyalBlue=0x4169E1,
    +
    693  SaddleBrown=0x8B4513,
    +
    694  Salmon=0xFA8072,
    +
    695  SandyBrown=0xF4A460,
    +
    696  SeaGreen=0x2E8B57,
    +
    697  Seashell=0xFFF5EE,
    +
    698  Sienna=0xA0522D,
    +
    699  Silver=0xC0C0C0,
    +
    700  SkyBlue=0x87CEEB,
    +
    701  SlateBlue=0x6A5ACD,
    +
    702  SlateGray=0x708090,
    +
    703  SlateGrey=0x708090,
    +
    704  Snow=0xFFFAFA,
    +
    705  SpringGreen=0x00FF7F,
    +
    706  SteelBlue=0x4682B4,
    +
    707  Tan=0xD2B48C,
    +
    708  Teal=0x008080,
    +
    709  Thistle=0xD8BFD8,
    +
    710  Tomato=0xFF6347,
    +
    711  Turquoise=0x40E0D0,
    +
    712  Violet=0xEE82EE,
    +
    713  Wheat=0xF5DEB3,
    +
    714  White=0xFFFFFF,
    +
    715  WhiteSmoke=0xF5F5F5,
    +
    716  Yellow=0xFFFF00,
    +
    717  YellowGreen=0x9ACD32,
    +
    718 
    +
    719  // LED RGB color that roughly approximates
    +
    720  // the color of incandescent fairy lights,
    +
    721  // assuming that you're using FastLED
    +
    722  // color correction on your LEDs (recommended).
    +
    723  FairyLight=0xFFE42D,
    +
    724  // If you are using no color correction, use this
    +
    725  FairyLightNCC=0xFF9D2A
    +
    726 
    +
    727  } HTMLColorCode;
    +
    728 };
    +
    729 
    +
    730 
    +
    731 inline __attribute__((always_inline)) bool operator== (const CRGB& lhs, const CRGB& rhs)
    +
    732 {
    +
    733  return (lhs.r == rhs.r) && (lhs.g == rhs.g) && (lhs.b == rhs.b);
    +
    734 }
    +
    735 
    +
    736 inline __attribute__((always_inline)) bool operator!= (const CRGB& lhs, const CRGB& rhs)
    +
    737 {
    +
    738  return !(lhs == rhs);
    +
    739 }
    +
    740 
    +
    741 inline __attribute__((always_inline)) bool operator< (const CRGB& lhs, const CRGB& rhs)
    +
    742 {
    +
    743  uint16_t sl, sr;
    +
    744  sl = lhs.r + lhs.g + lhs.b;
    +
    745  sr = rhs.r + rhs.g + rhs.b;
    +
    746  return sl < sr;
    +
    747 }
    +
    748 
    +
    749 inline __attribute__((always_inline)) bool operator> (const CRGB& lhs, const CRGB& rhs)
    +
    750 {
    +
    751  uint16_t sl, sr;
    +
    752  sl = lhs.r + lhs.g + lhs.b;
    +
    753  sr = rhs.r + rhs.g + rhs.b;
    +
    754  return sl > sr;
    +
    755 }
    +
    756 
    +
    757 inline __attribute__((always_inline)) bool operator>= (const CRGB& lhs, const CRGB& rhs)
    +
    758 {
    +
    759  uint16_t sl, sr;
    +
    760  sl = lhs.r + lhs.g + lhs.b;
    +
    761  sr = rhs.r + rhs.g + rhs.b;
    +
    762  return sl >= sr;
    +
    763 }
    +
    764 
    +
    765 inline __attribute__((always_inline)) bool operator<= (const CRGB& lhs, const CRGB& rhs)
    +
    766 {
    +
    767  uint16_t sl, sr;
    +
    768  sl = lhs.r + lhs.g + lhs.b;
    +
    769  sr = rhs.r + rhs.g + rhs.b;
    +
    770  return sl <= sr;
    +
    771 }
    +
    772 
    +
    773 
    +
    774 __attribute__((always_inline))
    +
    775 inline CRGB operator+( const CRGB& p1, const CRGB& p2)
    +
    776 {
    +
    777  return CRGB( qadd8( p1.r, p2.r),
    +
    778  qadd8( p1.g, p2.g),
    +
    779  qadd8( p1.b, p2.b));
    +
    780 }
    +
    781 
    +
    782 __attribute__((always_inline))
    +
    783 inline CRGB operator-( const CRGB& p1, const CRGB& p2)
    +
    784 {
    +
    785  return CRGB( qsub8( p1.r, p2.r),
    +
    786  qsub8( p1.g, p2.g),
    +
    787  qsub8( p1.b, p2.b));
    +
    788 }
    +
    789 
    +
    790 __attribute__((always_inline))
    +
    791 inline CRGB operator*( const CRGB& p1, uint8_t d)
    +
    792 {
    +
    793  return CRGB( qmul8( p1.r, d),
    +
    794  qmul8( p1.g, d),
    +
    795  qmul8( p1.b, d));
    +
    796 }
    +
    797 
    +
    798 __attribute__((always_inline))
    +
    799 inline CRGB operator/( const CRGB& p1, uint8_t d)
    +
    800 {
    +
    801  return CRGB( p1.r/d, p1.g/d, p1.b/d);
    +
    802 }
    +
    803 
    +
    804 
    +
    805 __attribute__((always_inline))
    +
    806 inline CRGB operator&( const CRGB& p1, const CRGB& p2)
    +
    807 {
    +
    808  return CRGB( p1.r < p2.r ? p1.r : p2.r,
    +
    809  p1.g < p2.g ? p1.g : p2.g,
    +
    810  p1.b < p2.b ? p1.b : p2.b);
    +
    811 }
    +
    812 
    +
    813 __attribute__((always_inline))
    +
    814 inline CRGB operator|( const CRGB& p1, const CRGB& p2)
    +
    815 {
    +
    816  return CRGB( p1.r > p2.r ? p1.r : p2.r,
    +
    817  p1.g > p2.g ? p1.g : p2.g,
    +
    818  p1.b > p2.b ? p1.b : p2.b);
    +
    819 }
    +
    820 
    +
    821 __attribute__((always_inline))
    +
    822 inline CRGB operator%( const CRGB& p1, uint8_t d)
    +
    823 {
    +
    824  CRGB retval( p1);
    +
    825  retval.nscale8_video( d);
    +
    826  return retval;
    +
    827 }
    +
    828 
    +
    829 
    +
    830 
    +
    834 enum EOrder {
    +
    835  RGB=0012,
    +
    836  RBG=0021,
    +
    837  GRB=0102,
    +
    838  GBR=0120,
    +
    839  BRG=0201,
    +
    840  BGR=0210
    +
    841 };
    +
    842 
    +
    843 FASTLED_NAMESPACE_END
    +
    845 
    +
    846 #endif
    LIB8STATIC uint8_t qmul8(uint8_t i, uint8_t j)
    saturating 8x8 bit multiplication, with 8 bit result
    Definition: math8.h:267
    HSVHue
    Pre-defined hue values for HSV objects.
    Definition: pixeltypes.h:76
    Representation of an RGB pixel (Red, Green, Blue)
    Definition: pixeltypes.h:88
    @@ -920,11 +940,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    __attribute__((always_inline)) bool operator
    Do an 8byte by 8bit rotation.
    Definition: fastled_delay.h:85
    ColorTemperature
    Definition: color.h:33
    Representation of an HSV pixel (hue, saturation, value (aka brightness)).
    Definition: pixeltypes.h:21
    -
    HTMLColorCode
    Predefined RGB colors.
    Definition: pixeltypes.h:549
    +
    HTMLColorCode
    Predefined RGB colors.
    Definition: pixeltypes.h:569
    diff --git a/docs/3.1/platforms_8h_source.html b/docs/3.1/platforms_8h_source.html index e19dc040..9071fe15 100644 --- a/docs/3.1/platforms_8h_source.html +++ b/docs/3.1/platforms_8h_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/power__mgt_8h_source.html b/docs/3.1/power__mgt_8h_source.html index 79fb49d7..3bd6d211 100644 --- a/docs/3.1/power__mgt_8h_source.html +++ b/docs/3.1/power__mgt_8h_source.html @@ -101,43 +101,43 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    14 // set_max_power_in_volts_and_milliamps( 5, 400);
    15 //
    16 
    -
    18 void set_max_power_in_volts_and_milliamps( uint8_t volts, uint32_t milliamps);
    -
    20 void set_max_power_in_milliwatts( uint32_t powerInmW);
    -
    21 
    -
    24 void set_max_power_indicator_LED( uint8_t pinNumber); // zero = no indicator LED
    -
    25 
    -
    26 
    -
    27 // Power Control 'show' and 'delay' functions
    -
    28 //
    -
    29 // These are drop-in replacements for FastLED.show() and FastLED.delay()
    -
    30 // In order to use these, you have to actually replace your calls to
    -
    31 // FastLED.show() and FastLED.delay() with these two functions.
    -
    32 //
    -
    33 // Example:
    -
    34 // // was: FastLED.show();
    -
    35 // // now is:
    -
    36 // show_at_max_brightness_for_power();
    -
    37 //
    -
    38 
    -
    41 void show_at_max_brightness_for_power();
    -
    44 void delay_at_max_brightness_for_power( uint16_t ms);
    -
    45 
    -
    46 
    -
    47 // Power Control internal helper functions
    -
    48 
    -
    52 uint32_t calculate_unscaled_power_mW( const CRGB* ledbuffer, uint16_t numLeds);
    -
    53 
    -
    59 uint8_t calculate_max_brightness_for_power_mW( uint8_t target_brightness, uint32_t max_power_mW);
    -
    60 
    -
    61 FASTLED_NAMESPACE_END
    -
    63 // POWER_MGT_H
    +
    19 void set_max_power_in_volts_and_milliamps( uint8_t volts, uint32_t milliamps);
    +
    21 void set_max_power_in_milliwatts( uint32_t powerInmW);
    +
    22 
    +
    26 void set_max_power_indicator_LED( uint8_t pinNumber); // zero = no indicator LED
    +
    27 
    +
    28 
    +
    29 // Power Control 'show' and 'delay' functions
    +
    30 //
    +
    31 // These are drop-in replacements for FastLED.show() and FastLED.delay()
    +
    32 // In order to use these, you have to actually replace your calls to
    +
    33 // FastLED.show() and FastLED.delay() with these two functions.
    +
    34 //
    +
    35 // Example:
    +
    36 // // was: FastLED.show();
    +
    37 // // now is:
    +
    38 // show_at_max_brightness_for_power();
    +
    39 //
    +
    40 
    +
    44 void show_at_max_brightness_for_power();
    +
    48 void delay_at_max_brightness_for_power( uint16_t ms);
    +
    49 
    +
    50 
    +
    51 // Power Control internal helper functions
    +
    52 
    +
    56 uint32_t calculate_unscaled_power_mW( const CRGB* ledbuffer, uint16_t numLeds);
    +
    57 
    +
    63 uint8_t calculate_max_brightness_for_power_mW( uint8_t target_brightness, uint32_t max_power_mW);
    64 
    -
    65 #endif
    +
    65 FASTLED_NAMESPACE_END
    +
    67 // POWER_MGT_H
    +
    68 
    +
    69 #endif
    Representation of an RGB pixel (Red, Green, Blue)
    Definition: pixeltypes.h:88
    diff --git a/docs/3.1/random8_8h_source.html b/docs/3.1/random8_8h_source.html index 61b37efc..1613550a 100644 --- a/docs/3.1/random8_8h_source.html +++ b/docs/3.1/random8_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/scale8_8h_source.html b/docs/3.1/scale8_8h_source.html index 18b2dcd7..382a4fa4 100644 --- a/docs/3.1/scale8_8h_source.html +++ b/docs/3.1/scale8_8h_source.html @@ -542,7 +542,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/search/all_11.js b/docs/3.1/search/all_11.js index 8cf3cca2..c5293cfd 100644 --- a/docs/3.1/search/all_11.js +++ b/docs/3.1/search/all_11.js @@ -6,5 +6,7 @@ var searchData= ['random16_5fadd_5fentropy',['random16_add_entropy',['../group___random.html#ga1078b2029a50e86c93ccf4e3e1d85e7d',1,'random8.h']]], ['random16_5fget_5fseed',['random16_get_seed',['../group___random.html#ga860bc64bfca4ada980e70cf1e03dedd8',1,'random8.h']]], ['random16_5fset_5fseed',['random16_set_seed',['../group___random.html#ga95e371c2438843e0ed1ed83412b28c99',1,'random8.h']]], - ['random8',['random8',['../group___random.html#ga4e63c74426f6516f28470dc1b814aefe',1,'random8(): random8.h'],['../group___random.html#ga216b1cfe4f62f92f5493515c6b74220c',1,'random8(uint8_t lim): random8.h'],['../group___random.html#ga2829e2c714f0a0f4617a65c4eddccec2',1,'random8(uint8_t min, uint8_t lim): random8.h']]] + ['random8',['random8',['../group___random.html#ga4e63c74426f6516f28470dc1b814aefe',1,'random8(): random8.h'],['../group___random.html#ga216b1cfe4f62f92f5493515c6b74220c',1,'random8(uint8_t lim): random8.h'],['../group___random.html#ga2829e2c714f0a0f4617a65c4eddccec2',1,'random8(uint8_t min, uint8_t lim): random8.h']]], + ['refhardwarespioutput',['REFHardwareSPIOutput',['../class_r_e_f_hardware_s_p_i_output.html',1,'']]], + ['release',['release',['../class_n_o_p_s_p_i_output.html#a0599fbdf5e04a633d24ff17033443237',1,'NOPSPIOutput']]] ]; diff --git a/docs/3.1/search/all_12.js b/docs/3.1/search/all_12.js index 80c845c9..8500b10c 100644 --- a/docs/3.1/search/all_12.js +++ b/docs/3.1/search/all_12.js @@ -11,12 +11,16 @@ var searchData= ['scale8_5fvideo_5fleaving_5fr1_5fdirty',['scale8_video_LEAVING_R1_DIRTY',['../group___scaling.html#gab341cef8d46232269bb70092fed9eb75',1,'scale8.h']]], ['scaling_20functions',['Scaling functions',['../group___scaling.html',1,'']]], ['seconds16',['seconds16',['../group__lib8tion.html#gaa2abcee2fe76fafd7f3a2aeab03e3b69',1,'lib8tion.h']]], + ['select',['select',['../class_n_o_p_s_p_i_output.html#ae07bb6f787879f28979cccec9ec4965d',1,'NOPSPIOutput']]], ['selectable',['Selectable',['../class_selectable.html',1,'']]], ['setbrightness',['setBrightness',['../class_c_fast_l_e_d.html#a730ba7d967e882b4b893689cf333b2eb',1,'CFastLED']]], ['setcorrection',['setCorrection',['../class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8',1,'CLEDController::setCorrection(CRGB correction)'],['../class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9',1,'CLEDController::setCorrection(LEDColorCorrection correction)'],['../class_c_fast_l_e_d.html#ad266c3e649cc12a6dc49a1e229acc282',1,'CFastLED::setCorrection()']]], ['setdither',['setDither',['../class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517',1,'CLEDController::setDither()'],['../class_c_fast_l_e_d.html#a7ae5d3864df01101d82d242c123ffb36',1,'CFastLED::setDither()']]], ['setleds',['setLeds',['../class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037',1,'CLEDController']]], + ['setmaxpowerinmilliwatts',['setMaxPowerInMilliWatts',['../class_c_fast_l_e_d.html#ab07d62cdec036af9ede70cbd06ece40f',1,'CFastLED']]], + ['setmaxpowerinvoltsandmilliamps',['setMaxPowerInVoltsAndMilliamps',['../class_c_fast_l_e_d.html#a996375a3f4a7b8c096f87d8a93c2b196',1,'CFastLED']]], ['setmaxrefreshrate',['setMaxRefreshRate',['../class_c_fast_l_e_d.html#a1f39e8404db214bbd6a776f52a77d8b1',1,'CFastLED']]], + ['setselect',['setSelect',['../class_n_o_p_s_p_i_output.html#a6fca9a7e475aecae123879044d33f195',1,'NOPSPIOutput']]], ['settemperature',['setTemperature',['../class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883',1,'CLEDController::setTemperature(CRGB temperature)'],['../class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4',1,'CLEDController::setTemperature(ColorTemperature temperature)'],['../class_c_fast_l_e_d.html#a28c2dfb0ec592db03f3063ade135f19f',1,'CFastLED::setTemperature()']]], ['sfract15',['sfract15',['../group__lib8tion.html#ga00cb5dc9e5b477a58669a3e40bc473c2',1,'lib8tion.h']]], ['sfract15tofloat',['sfract15ToFloat',['../group__lib8tion.html#gab947c1150e3b9056cb91685a14270173',1,'lib8tion.h']]], @@ -28,7 +32,9 @@ var searchData= ['sin16_5fc',['sin16_C',['../group___trig.html#ga0890962cb06b267617f4b06d7e9be5eb',1,'trig8.h']]], ['sin8_5favr',['sin8_avr',['../group___trig.html#ga6aa1f993cbbc427d80da1ee2ccca86e7',1,'trig8.h']]], ['sin8_5fc',['sin8_C',['../group___trig.html#ga46933a9b42921c6605588268d11f7c1e',1,'trig8.h']]], - ['size',['size',['../class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08',1,'CLEDController::size()'],['../class_c_fast_l_e_d.html#a18fba22754d2a1a206fc5db8d24a92d0',1,'CFastLED::size()']]], + ['size',['size',['../class_c_l_e_d_controller.html#a63f75cf7e55cf8da46db5fd27110bb3e',1,'CLEDController::size()'],['../class_c_fast_l_e_d.html#a18fba22754d2a1a206fc5db8d24a92d0',1,'CFastLED::size()']]], + ['sk6812',['SK6812',['../class_s_k6812.html',1,'']]], + ['sk6812controller',['SK6812Controller',['../class_s_k6812_controller.html',1,'']]], ['sm16716controller',['SM16716Controller',['../class_s_m16716_controller.html',1,'']]], ['softwarespioutput',['SoftwareSPIOutput',['../class_software_s_p_i_output.html',1,'']]], ['spioutput',['SPIOutput',['../class_s_p_i_output.html',1,'']]], diff --git a/docs/3.1/search/all_13.js b/docs/3.1/search/all_13.js index d2981845..f283eb35 100644 --- a/docs/3.1/search/all_13.js +++ b/docs/3.1/search/all_13.js @@ -6,6 +6,7 @@ var searchData= ['tm1804',['TM1804',['../class_t_m1804.html',1,'']]], ['tm1809',['TM1809',['../class_t_m1809.html',1,'']]], ['tm1809controller800khz',['TM1809Controller800Khz',['../class_t_m1809_controller800_khz.html',1,'']]], + ['tm1812',['TM1812',['../class_t_m1812.html',1,'']]], ['tm1829',['TM1829',['../class_t_m1829.html',1,'']]], ['tm1829controller1600khz',['TM1829Controller1600Khz',['../class_t_m1829_controller1600_khz.html',1,'']]], ['tm1829controller800khz',['TM1829Controller800Khz',['../class_t_m1829_controller800_khz.html',1,'']]], diff --git a/docs/3.1/search/all_15.js b/docs/3.1/search/all_15.js index a95343bb..24d563c5 100644 --- a/docs/3.1/search/all_15.js +++ b/docs/3.1/search/all_15.js @@ -1,5 +1,13 @@ var searchData= [ + ['waitfully',['waitFully',['../class_n_o_p_s_p_i_output.html#a6d1c46106879fc835ad6ba8149b20068',1,'NOPSPIOutput']]], + ['writebit',['writeBit',['../class_n_o_p_s_p_i_output.html#a9b0cd7fa63b1cff86c61f796aa8a6637',1,'NOPSPIOutput::writeBit(uint8_t b)'],['../class_n_o_p_s_p_i_output.html#a9b0cd7fa63b1cff86c61f796aa8a6637',1,'NOPSPIOutput::writeBit(uint8_t b)']]], + ['writebyte',['writeByte',['../class_n_o_p_s_p_i_output.html#af5485fc346e12c50480b969e5b242636',1,'NOPSPIOutput']]], + ['writebytes',['writeBytes',['../class_n_o_p_s_p_i_output.html#a7b33548cfee1f5cda7a8a48fa45ee460',1,'NOPSPIOutput']]], + ['writebytesvalue',['writeBytesValue',['../class_n_o_p_s_p_i_output.html#a2f8e72323c827eb869b222b5a36ebbc1',1,'NOPSPIOutput']]], + ['writebytesvalueraw',['writeBytesValueRaw',['../class_n_o_p_s_p_i_output.html#a7c67ce1f9d44cfcac9b94fa9f097835f',1,'NOPSPIOutput']]], + ['writepixels',['writePixels',['../class_n_o_p_s_p_i_output.html#aa192a8b0f727e7c9fc399e94532e287f',1,'NOPSPIOutput']]], + ['writeword',['writeWord',['../class_n_o_p_s_p_i_output.html#a31ccabe3e4987751ad67a5d06e502df2',1,'NOPSPIOutput']]], ['ws2801controller',['WS2801Controller',['../class_w_s2801_controller.html',1,'']]], ['ws2803controller',['WS2803Controller',['../class_w_s2803_controller.html',1,'']]], ['ws2811',['WS2811',['../class_w_s2811.html',1,'']]], diff --git a/docs/3.1/search/all_6.js b/docs/3.1/search/all_6.js index efe56411..eee27079 100644 --- a/docs/3.1/search/all_6.js +++ b/docs/3.1/search/all_6.js @@ -16,7 +16,7 @@ var searchData= ['fract16',['fract16',['../group__lib8tion.html#gaaf46b9f719ef3bdb574f8e967af6dbb5',1,'lib8tion.h']]], ['fract8',['fract8',['../group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644',1,'lib8tion.h']]], ['fast_20math_20functions',['Fast math functions',['../group__lib8tion.html',1,'']]], - ['fastled3_2e0',['FastLED3.0',['../md_release_notes.html',1,'']]], + ['fastled3_2e1_2e1pre',['FastLED3.1.1pre',['../md_release_notes.html',1,'']]], ['fast_20random_20number_20generators',['Fast random number generators',['../group___random.html',1,'']]], ['fast_20trig_20functions',['Fast trig functions',['../group___trig.html',1,'']]] ]; diff --git a/docs/3.1/search/all_9.js b/docs/3.1/search/all_9.js index 14606b29..0b9e9cc9 100644 --- a/docs/3.1/search/all_9.js +++ b/docs/3.1/search/all_9.js @@ -1,7 +1,7 @@ var searchData= [ ['ieee754binary32_5ft',['IEEE754binary32_t',['../union_i_e_e_e754binary32__t.html',1,'']]], - ['init',['init',['../class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608',1,'LPD8806Controller::init()'],['../class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4',1,'WS2801Controller::init()'],['../class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0',1,'APA102Controller::init()'],['../class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a',1,'P9813Controller::init()'],['../class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591',1,'SM16716Controller::init()'],['../class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913',1,'CLEDController::init()'],['../class_d_m_x_simple_controller.html#a251c7d09383870337853c360996871c3',1,'DMXSimpleController::init()'],['../class_d_m_x_serial_controller.html#a0cd937424d4f6eedb90acec81ca1fa27',1,'DMXSerialController::init()']]], + ['init',['init',['../class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608',1,'LPD8806Controller::init()'],['../class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4',1,'WS2801Controller::init()'],['../class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0',1,'APA102Controller::init()'],['../class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a',1,'P9813Controller::init()'],['../class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591',1,'SM16716Controller::init()'],['../class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913',1,'CLEDController::init()'],['../class_d_m_x_simple_controller.html#a251c7d09383870337853c360996871c3',1,'DMXSimpleController::init()'],['../class_d_m_x_serial_controller.html#a0cd937424d4f6eedb90acec81ca1fa27',1,'DMXSerialController::init()'],['../class_n_o_p_s_p_i_output.html#ad9ff9bf62427b69e3bb578699e0ce561',1,'NOPSPIOutput::init()']]], ['init_5fbinary_5fdithering',['init_binary_dithering',['../struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32',1,'PixelController']]], ['inoise16_5fraw',['inoise16_raw',['../group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd',1,'inoise16_raw(uint32_t x, uint32_t y, uint32_t z): noise.cpp'],['../group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd',1,'inoise16_raw(uint32_t x, uint32_t y, uint32_t z): noise.cpp']]], ['inputpin',['InputPin',['../class_input_pin.html',1,'']]] diff --git a/docs/3.1/search/all_d.js b/docs/3.1/search/all_d.js index 08d151e5..f2dc6604 100644 --- a/docs/3.1/search/all_d.js +++ b/docs/3.1/search/all_d.js @@ -4,6 +4,7 @@ var searchData= ['next',['next',['../class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565',1,'CLEDController']]], ['noise_20functions',['Noise functions',['../group___noise.html',1,'']]], ['noise_2eh',['noise.h',['../noise_8h.html',1,'']]], + ['nopspioutput',['NOPSPIOutput',['../class_n_o_p_s_p_i_output.html',1,'']]], ['nscale8_5fleaving_5fr1_5fdirty',['nscale8_LEAVING_R1_DIRTY',['../group___scaling.html#ga5f6dde3d9398f4b389c96e759a3f7b80',1,'scale8.h']]], ['nscale8_5fvideo_5fleaving_5fr1_5fdirty',['nscale8_video_LEAVING_R1_DIRTY',['../group___scaling.html#ga2a580fcaa010558218faae95d1936635',1,'scale8.h']]], ['nscale8x2',['nscale8x2',['../group___scaling.html#ga6f419761a744efed4bae8875ac07aef0',1,'scale8.h']]], diff --git a/docs/3.1/search/all_f.js b/docs/3.1/search/all_f.js index ed1093be..b332c0d4 100644 --- a/docs/3.1/search/all_f.js +++ b/docs/3.1/search/all_f.js @@ -5,5 +5,7 @@ var searchData= ['p9813controller',['P9813Controller',['../class_p9813_controller.html',1,'']]], ['pin',['Pin',['../class_pin.html',1,'']]], ['pixelcontroller',['PixelController',['../struct_pixel_controller.html',1,'PixelController< RGB_ORDER >'],['../struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71',1,'PixelController::PixelController(const PixelController &other)'],['../struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00',1,'PixelController::PixelController(const uint8_t *d, int len, CRGB &s, EDitherMode dither=BINARY_DITHER, bool advance=true, uint8_t skip=0)']]], + ['pl9823',['PL9823',['../class_p_l9823.html',1,'']]], + ['pl9823controller',['PL9823Controller',['../class_p_l9823_controller.html',1,'']]], ['power_20management_20functions',['Power management functions',['../group___power.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_10.js b/docs/3.1/search/classes_10.js index 938825cd..bf0b35e8 100644 --- a/docs/3.1/search/classes_10.js +++ b/docs/3.1/search/classes_10.js @@ -1,9 +1,14 @@ var searchData= [ - ['ucs1903',['UCS1903',['../class_u_c_s1903.html',1,'']]], - ['ucs1903b',['UCS1903B',['../class_u_c_s1903_b.html',1,'']]], - ['ucs1903bcontroller800khz',['UCS1903BController800Khz',['../class_u_c_s1903_b_controller800_khz.html',1,'']]], - ['ucs1903controller400khz',['UCS1903Controller400Khz',['../class_u_c_s1903_controller400_khz.html',1,'']]], - ['ucs1904',['UCS1904',['../class_u_c_s1904.html',1,'']]], - ['ucs1904controller800khz',['UCS1904Controller800Khz',['../class_u_c_s1904_controller800_khz.html',1,'']]] + ['tbytesforlong',['tBytesForLong',['../uniont_bytes_for_long.html',1,'']]], + ['tm1803',['TM1803',['../class_t_m1803.html',1,'']]], + ['tm1803controller400khz',['TM1803Controller400Khz',['../class_t_m1803_controller400_khz.html',1,'']]], + ['tm1804',['TM1804',['../class_t_m1804.html',1,'']]], + ['tm1809',['TM1809',['../class_t_m1809.html',1,'']]], + ['tm1809controller800khz',['TM1809Controller800Khz',['../class_t_m1809_controller800_khz.html',1,'']]], + ['tm1812',['TM1812',['../class_t_m1812.html',1,'']]], + ['tm1829',['TM1829',['../class_t_m1829.html',1,'']]], + ['tm1829controller1600khz',['TM1829Controller1600Khz',['../class_t_m1829_controller1600_khz.html',1,'']]], + ['tm1829controller800khz',['TM1829Controller800Khz',['../class_t_m1829_controller800_khz.html',1,'']]], + ['trgbgradientpaletteentryunion',['TRGBGradientPaletteEntryUnion',['../union_t_r_g_b_gradient_palette_entry_union.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_11.js b/docs/3.1/search/classes_11.js index a95343bb..938825cd 100644 --- a/docs/3.1/search/classes_11.js +++ b/docs/3.1/search/classes_11.js @@ -1,13 +1,9 @@ var searchData= [ - ['ws2801controller',['WS2801Controller',['../class_w_s2801_controller.html',1,'']]], - ['ws2803controller',['WS2803Controller',['../class_w_s2803_controller.html',1,'']]], - ['ws2811',['WS2811',['../class_w_s2811.html',1,'']]], - ['ws2811_5f400',['WS2811_400',['../class_w_s2811__400.html',1,'']]], - ['ws2811controller400khz',['WS2811Controller400Khz',['../class_w_s2811_controller400_khz.html',1,'']]], - ['ws2811controller800khz',['WS2811Controller800Khz',['../class_w_s2811_controller800_khz.html',1,'']]], - ['ws2812',['WS2812',['../class_w_s2812.html',1,'']]], - ['ws2812b',['WS2812B',['../class_w_s2812_b.html',1,'']]], - ['ws2812controller800khz',['WS2812Controller800Khz',['../class_w_s2812_controller800_khz.html',1,'']]], - ['ws2812controller800khz_3c_20data_5fpin_2c_20grb_20_3e',['WS2812Controller800Khz< DATA_PIN, GRB >',['../class_w_s2812_controller800_khz.html',1,'']]] + ['ucs1903',['UCS1903',['../class_u_c_s1903.html',1,'']]], + ['ucs1903b',['UCS1903B',['../class_u_c_s1903_b.html',1,'']]], + ['ucs1903bcontroller800khz',['UCS1903BController800Khz',['../class_u_c_s1903_b_controller800_khz.html',1,'']]], + ['ucs1903controller400khz',['UCS1903Controller400Khz',['../class_u_c_s1903_controller400_khz.html',1,'']]], + ['ucs1904',['UCS1904',['../class_u_c_s1904.html',1,'']]], + ['ucs1904controller800khz',['UCS1904Controller800Khz',['../class_u_c_s1904_controller800_khz.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_a.js b/docs/3.1/search/classes_a.js index 5694348f..90998429 100644 --- a/docs/3.1/search/classes_a.js +++ b/docs/3.1/search/classes_a.js @@ -1,4 +1,5 @@ var searchData= [ - ['neopixel',['NEOPIXEL',['../class_n_e_o_p_i_x_e_l.html',1,'']]] + ['neopixel',['NEOPIXEL',['../class_n_e_o_p_i_x_e_l.html',1,'']]], + ['nopspioutput',['NOPSPIOutput',['../class_n_o_p_s_p_i_output.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_c.js b/docs/3.1/search/classes_c.js index eb497370..ce15a21e 100644 --- a/docs/3.1/search/classes_c.js +++ b/docs/3.1/search/classes_c.js @@ -2,5 +2,7 @@ var searchData= [ ['p9813controller',['P9813Controller',['../class_p9813_controller.html',1,'']]], ['pin',['Pin',['../class_pin.html',1,'']]], - ['pixelcontroller',['PixelController',['../struct_pixel_controller.html',1,'']]] + ['pixelcontroller',['PixelController',['../struct_pixel_controller.html',1,'']]], + ['pl9823',['PL9823',['../class_p_l9823.html',1,'']]], + ['pl9823controller',['PL9823Controller',['../class_p_l9823_controller.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_e.js b/docs/3.1/search/classes_e.js index 177c396d..acf6872e 100644 --- a/docs/3.1/search/classes_e.js +++ b/docs/3.1/search/classes_e.js @@ -1,15 +1,4 @@ var searchData= [ - ['selectable',['Selectable',['../class_selectable.html',1,'']]], - ['sm16716controller',['SM16716Controller',['../class_s_m16716_controller.html',1,'']]], - ['softwarespioutput',['SoftwareSPIOutput',['../class_software_s_p_i_output.html',1,'']]], - ['spioutput',['SPIOutput',['../class_s_p_i_output.html',1,'']]], - ['spioutput_3c_20data_5fpin_2c_20clock_5fpin_2c_20spi_5fspeed_20_3e',['SPIOutput< DATA_PIN, CLOCK_PIN, SPI_SPEED >',['../class_s_p_i_output.html',1,'']]], - ['spioutput_3c_20spi2_5fdata_2c_20spi2_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['spioutput_3c_20spi2_5fdata_2c_20spi_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['spioutput_3c_20spi_5fdata_2c_20spi2_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['spioutput_3c_20spi_5fdata_2c_20spi_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['spioutput_3c_20spi_5fuart0_5fdata_2c_20spi_5fuart0_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['spioutput_3c_20spi_5fuart1_5fdata_2c_20spi_5fuart1_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], - ['sub4',['sub4',['../structsub4.html',1,'']]] + ['refhardwarespioutput',['REFHardwareSPIOutput',['../class_r_e_f_hardware_s_p_i_output.html',1,'']]] ]; diff --git a/docs/3.1/search/classes_f.js b/docs/3.1/search/classes_f.js index 6bda5b3c..c106254f 100644 --- a/docs/3.1/search/classes_f.js +++ b/docs/3.1/search/classes_f.js @@ -1,13 +1,17 @@ var searchData= [ - ['tbytesforlong',['tBytesForLong',['../uniont_bytes_for_long.html',1,'']]], - ['tm1803',['TM1803',['../class_t_m1803.html',1,'']]], - ['tm1803controller400khz',['TM1803Controller400Khz',['../class_t_m1803_controller400_khz.html',1,'']]], - ['tm1804',['TM1804',['../class_t_m1804.html',1,'']]], - ['tm1809',['TM1809',['../class_t_m1809.html',1,'']]], - ['tm1809controller800khz',['TM1809Controller800Khz',['../class_t_m1809_controller800_khz.html',1,'']]], - ['tm1829',['TM1829',['../class_t_m1829.html',1,'']]], - ['tm1829controller1600khz',['TM1829Controller1600Khz',['../class_t_m1829_controller1600_khz.html',1,'']]], - ['tm1829controller800khz',['TM1829Controller800Khz',['../class_t_m1829_controller800_khz.html',1,'']]], - ['trgbgradientpaletteentryunion',['TRGBGradientPaletteEntryUnion',['../union_t_r_g_b_gradient_palette_entry_union.html',1,'']]] + ['selectable',['Selectable',['../class_selectable.html',1,'']]], + ['sk6812',['SK6812',['../class_s_k6812.html',1,'']]], + ['sk6812controller',['SK6812Controller',['../class_s_k6812_controller.html',1,'']]], + ['sm16716controller',['SM16716Controller',['../class_s_m16716_controller.html',1,'']]], + ['softwarespioutput',['SoftwareSPIOutput',['../class_software_s_p_i_output.html',1,'']]], + ['spioutput',['SPIOutput',['../class_s_p_i_output.html',1,'']]], + ['spioutput_3c_20data_5fpin_2c_20clock_5fpin_2c_20spi_5fspeed_20_3e',['SPIOutput< DATA_PIN, CLOCK_PIN, SPI_SPEED >',['../class_s_p_i_output.html',1,'']]], + ['spioutput_3c_20spi2_5fdata_2c_20spi2_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI2_DATA, SPI2_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['spioutput_3c_20spi2_5fdata_2c_20spi_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI2_DATA, SPI_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['spioutput_3c_20spi_5fdata_2c_20spi2_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_DATA, SPI2_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['spioutput_3c_20spi_5fdata_2c_20spi_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_DATA, SPI_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['spioutput_3c_20spi_5fuart0_5fdata_2c_20spi_5fuart0_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['spioutput_3c_20spi_5fuart1_5fdata_2c_20spi_5fuart1_5fclock_2c_20spi_5fspeed_20_3e',['SPIOutput< SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED >',['../class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html',1,'']]], + ['sub4',['sub4',['../structsub4.html',1,'']]] ]; diff --git a/docs/3.1/search/functions_10.js b/docs/3.1/search/functions_10.js index 7c26a3b0..21924f95 100644 --- a/docs/3.1/search/functions_10.js +++ b/docs/3.1/search/functions_10.js @@ -4,5 +4,6 @@ var searchData= ['random16_5fadd_5fentropy',['random16_add_entropy',['../group___random.html#ga1078b2029a50e86c93ccf4e3e1d85e7d',1,'random8.h']]], ['random16_5fget_5fseed',['random16_get_seed',['../group___random.html#ga860bc64bfca4ada980e70cf1e03dedd8',1,'random8.h']]], ['random16_5fset_5fseed',['random16_set_seed',['../group___random.html#ga95e371c2438843e0ed1ed83412b28c99',1,'random8.h']]], - ['random8',['random8',['../group___random.html#ga4e63c74426f6516f28470dc1b814aefe',1,'random8(): random8.h'],['../group___random.html#ga216b1cfe4f62f92f5493515c6b74220c',1,'random8(uint8_t lim): random8.h'],['../group___random.html#ga2829e2c714f0a0f4617a65c4eddccec2',1,'random8(uint8_t min, uint8_t lim): random8.h']]] + ['random8',['random8',['../group___random.html#ga4e63c74426f6516f28470dc1b814aefe',1,'random8(): random8.h'],['../group___random.html#ga216b1cfe4f62f92f5493515c6b74220c',1,'random8(uint8_t lim): random8.h'],['../group___random.html#ga2829e2c714f0a0f4617a65c4eddccec2',1,'random8(uint8_t min, uint8_t lim): random8.h']]], + ['release',['release',['../class_n_o_p_s_p_i_output.html#a0599fbdf5e04a633d24ff17033443237',1,'NOPSPIOutput']]] ]; diff --git a/docs/3.1/search/functions_11.js b/docs/3.1/search/functions_11.js index 0eda8d4a..f87407ac 100644 --- a/docs/3.1/search/functions_11.js +++ b/docs/3.1/search/functions_11.js @@ -7,11 +7,15 @@ var searchData= ['scale8_5fvideo',['scale8_video',['../group___scaling.html#ga333095ffa436c94d3e77ee9dc39da1c1',1,'scale8.h']]], ['scale8_5fvideo_5fleaving_5fr1_5fdirty',['scale8_video_LEAVING_R1_DIRTY',['../group___scaling.html#gab341cef8d46232269bb70092fed9eb75',1,'scale8.h']]], ['seconds16',['seconds16',['../group__lib8tion.html#gaa2abcee2fe76fafd7f3a2aeab03e3b69',1,'lib8tion.h']]], + ['select',['select',['../class_n_o_p_s_p_i_output.html#ae07bb6f787879f28979cccec9ec4965d',1,'NOPSPIOutput']]], ['setbrightness',['setBrightness',['../class_c_fast_l_e_d.html#a730ba7d967e882b4b893689cf333b2eb',1,'CFastLED']]], ['setcorrection',['setCorrection',['../class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8',1,'CLEDController::setCorrection(CRGB correction)'],['../class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9',1,'CLEDController::setCorrection(LEDColorCorrection correction)'],['../class_c_fast_l_e_d.html#ad266c3e649cc12a6dc49a1e229acc282',1,'CFastLED::setCorrection()']]], ['setdither',['setDither',['../class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517',1,'CLEDController::setDither()'],['../class_c_fast_l_e_d.html#a7ae5d3864df01101d82d242c123ffb36',1,'CFastLED::setDither()']]], ['setleds',['setLeds',['../class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037',1,'CLEDController']]], + ['setmaxpowerinmilliwatts',['setMaxPowerInMilliWatts',['../class_c_fast_l_e_d.html#ab07d62cdec036af9ede70cbd06ece40f',1,'CFastLED']]], + ['setmaxpowerinvoltsandmilliamps',['setMaxPowerInVoltsAndMilliamps',['../class_c_fast_l_e_d.html#a996375a3f4a7b8c096f87d8a93c2b196',1,'CFastLED']]], ['setmaxrefreshrate',['setMaxRefreshRate',['../class_c_fast_l_e_d.html#a1f39e8404db214bbd6a776f52a77d8b1',1,'CFastLED']]], + ['setselect',['setSelect',['../class_n_o_p_s_p_i_output.html#a6fca9a7e475aecae123879044d33f195',1,'NOPSPIOutput']]], ['settemperature',['setTemperature',['../class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883',1,'CLEDController::setTemperature(CRGB temperature)'],['../class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4',1,'CLEDController::setTemperature(ColorTemperature temperature)'],['../class_c_fast_l_e_d.html#a28c2dfb0ec592db03f3063ade135f19f',1,'CFastLED::setTemperature()']]], ['sfract15tofloat',['sfract15ToFloat',['../group__lib8tion.html#gab947c1150e3b9056cb91685a14270173',1,'lib8tion.h']]], ['show',['show',['../class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5',1,'LPD8806Controller::show()'],['../class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0',1,'WS2801Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0',1,'WS2801Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332',1,'APA102Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332',1,'APA102Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81',1,'P9813Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81',1,'P9813Controller::show(const struct CRGB *data, int nLeds, CRGB scale)'],['../class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d',1,'SM16716Controller::show()'],['../class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f',1,'CLEDController::show(const struct CRGB *data, int nLeds, CRGB scale)=0'],['../class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb',1,'CLEDController::show(const struct CRGB *data, int nLeds, uint8_t brightness)'],['../class_d_m_x_simple_controller.html#a29df92ccb41090893fa3c49f22b47186',1,'DMXSimpleController::show()'],['../class_d_m_x_serial_controller.html#a3f3f3e606e495fd1bdcfd25c6bed7fe1',1,'DMXSerialController::show()'],['../class_c_fast_l_e_d.html#a83afdd1e2a21f33ac4f8d2610d6e331b',1,'CFastLED::show(uint8_t scale)'],['../class_c_fast_l_e_d.html#a3adb23ec5f919524928d576002cb45de',1,'CFastLED::show()']]], @@ -21,7 +25,7 @@ var searchData= ['sin16_5fc',['sin16_C',['../group___trig.html#ga0890962cb06b267617f4b06d7e9be5eb',1,'trig8.h']]], ['sin8_5favr',['sin8_avr',['../group___trig.html#ga6aa1f993cbbc427d80da1ee2ccca86e7',1,'trig8.h']]], ['sin8_5fc',['sin8_C',['../group___trig.html#ga46933a9b42921c6605588268d11f7c1e',1,'trig8.h']]], - ['size',['size',['../class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08',1,'CLEDController::size()'],['../class_c_fast_l_e_d.html#a18fba22754d2a1a206fc5db8d24a92d0',1,'CFastLED::size()']]], + ['size',['size',['../class_c_l_e_d_controller.html#a63f75cf7e55cf8da46db5fd27110bb3e',1,'CLEDController::size()'],['../class_c_fast_l_e_d.html#a18fba22754d2a1a206fc5db8d24a92d0',1,'CFastLED::size()']]], ['sqrt16',['sqrt16',['../group___math.html#ga66ecef97faa5f9b92c49766651c5afe9',1,'math8.h']]], ['squarewave8',['squarewave8',['../group__lib8tion.html#ga17ae8fcfd9c485bb1120d908f836637a',1,'lib8tion.h']]], ['sub8',['sub8',['../group___math.html#ga0c40c15ab5af36ddabded161941f2091',1,'math8.h']]] diff --git a/docs/3.1/search/functions_13.html b/docs/3.1/search/functions_13.html new file mode 100644 index 00000000..81a66b19 --- /dev/null +++ b/docs/3.1/search/functions_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/3.1/search/functions_13.js b/docs/3.1/search/functions_13.js new file mode 100644 index 00000000..f3ff0f5c --- /dev/null +++ b/docs/3.1/search/functions_13.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['waitfully',['waitFully',['../class_n_o_p_s_p_i_output.html#a6d1c46106879fc835ad6ba8149b20068',1,'NOPSPIOutput']]], + ['writebit',['writeBit',['../class_n_o_p_s_p_i_output.html#a9b0cd7fa63b1cff86c61f796aa8a6637',1,'NOPSPIOutput::writeBit(uint8_t b)'],['../class_n_o_p_s_p_i_output.html#a9b0cd7fa63b1cff86c61f796aa8a6637',1,'NOPSPIOutput::writeBit(uint8_t b)']]], + ['writebyte',['writeByte',['../class_n_o_p_s_p_i_output.html#af5485fc346e12c50480b969e5b242636',1,'NOPSPIOutput']]], + ['writebytes',['writeBytes',['../class_n_o_p_s_p_i_output.html#a7b33548cfee1f5cda7a8a48fa45ee460',1,'NOPSPIOutput']]], + ['writebytesvalue',['writeBytesValue',['../class_n_o_p_s_p_i_output.html#a2f8e72323c827eb869b222b5a36ebbc1',1,'NOPSPIOutput']]], + ['writebytesvalueraw',['writeBytesValueRaw',['../class_n_o_p_s_p_i_output.html#a7c67ce1f9d44cfcac9b94fa9f097835f',1,'NOPSPIOutput']]], + ['writepixels',['writePixels',['../class_n_o_p_s_p_i_output.html#aa192a8b0f727e7c9fc399e94532e287f',1,'NOPSPIOutput']]], + ['writeword',['writeWord',['../class_n_o_p_s_p_i_output.html#a31ccabe3e4987751ad67a5d06e502df2',1,'NOPSPIOutput']]] +]; diff --git a/docs/3.1/search/functions_9.js b/docs/3.1/search/functions_9.js index efc7e84a..45b49fe2 100644 --- a/docs/3.1/search/functions_9.js +++ b/docs/3.1/search/functions_9.js @@ -1,6 +1,6 @@ var searchData= [ - ['init',['init',['../class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608',1,'LPD8806Controller::init()'],['../class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4',1,'WS2801Controller::init()'],['../class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0',1,'APA102Controller::init()'],['../class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a',1,'P9813Controller::init()'],['../class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591',1,'SM16716Controller::init()'],['../class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913',1,'CLEDController::init()'],['../class_d_m_x_simple_controller.html#a251c7d09383870337853c360996871c3',1,'DMXSimpleController::init()'],['../class_d_m_x_serial_controller.html#a0cd937424d4f6eedb90acec81ca1fa27',1,'DMXSerialController::init()']]], + ['init',['init',['../class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608',1,'LPD8806Controller::init()'],['../class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4',1,'WS2801Controller::init()'],['../class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0',1,'APA102Controller::init()'],['../class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a',1,'P9813Controller::init()'],['../class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591',1,'SM16716Controller::init()'],['../class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913',1,'CLEDController::init()'],['../class_d_m_x_simple_controller.html#a251c7d09383870337853c360996871c3',1,'DMXSimpleController::init()'],['../class_d_m_x_serial_controller.html#a0cd937424d4f6eedb90acec81ca1fa27',1,'DMXSerialController::init()'],['../class_n_o_p_s_p_i_output.html#ad9ff9bf62427b69e3bb578699e0ce561',1,'NOPSPIOutput::init()']]], ['init_5fbinary_5fdithering',['init_binary_dithering',['../struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32',1,'PixelController']]], ['inoise16_5fraw',['inoise16_raw',['../group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd',1,'inoise16_raw(uint32_t x, uint32_t y, uint32_t z): noise.cpp'],['../group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd',1,'inoise16_raw(uint32_t x, uint32_t y, uint32_t z): noise.cpp']]] ]; diff --git a/docs/3.1/search/pages_0.js b/docs/3.1/search/pages_0.js index 6d85403d..4ff498e3 100644 --- a/docs/3.1/search/pages_0.js +++ b/docs/3.1/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['fastled3_2e0',['FastLED3.0',['../md_release_notes.html',1,'']]] + ['fastled3_2e1_2e1pre',['FastLED3.1.1pre',['../md_release_notes.html',1,'']]] ]; diff --git a/docs/3.1/search/searchdata.js b/docs/3.1/search/searchdata.js index cc437762..854e70e9 100644 --- a/docs/3.1/search/searchdata.js +++ b/docs/3.1/search/searchdata.js @@ -1,9 +1,9 @@ var indexSectionsWithContent = { 0: "_abcdefghijlmnopqrstuw", - 1: "abcdfgijlmnopqstuw", + 1: "abcdfgijlmnopqrstuw", 2: "bcfn", - 3: "_abcdefghilmnopqrst", + 3: "_abcdefghilmnopqrstw", 4: "fr", 5: "afqs", 6: "cehl", diff --git a/docs/3.1/struct_c_h_s_v-members.html b/docs/3.1/struct_c_h_s_v-members.html index ed232de5..38b30877 100644 --- a/docs/3.1/struct_c_h_s_v-members.html +++ b/docs/3.1/struct_c_h_s_v-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    diff --git a/docs/3.1/struct_c_h_s_v.html b/docs/3.1/struct_c_h_s_v.html index ab997dd9..f85032d3 100644 --- a/docs/3.1/struct_c_h_s_v.html +++ b/docs/3.1/struct_c_h_s_v.html @@ -172,7 +172,7 @@ union { diff --git a/docs/3.1/struct_c_r_g_b-members.html b/docs/3.1/struct_c_r_g_b-members.html index 0b3af92a..05351337 100644 --- a/docs/3.1/struct_c_r_g_b-members.html +++ b/docs/3.1/struct_c_r_g_b-members.html @@ -218,56 +218,58 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); NavajoWhite enum value (defined in CRGB)CRGB Navy enum value (defined in CRGB)CRGB nscale8(uint8_t scaledown) (defined in CRGB)CRGBinline - nscale8_video(uint8_t scaledown) (defined in CRGB)CRGBinline - OldLace enum value (defined in CRGB)CRGB - Olive enum value (defined in CRGB)CRGB - OliveDrab enum value (defined in CRGB)CRGB - operator bool() const __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator rgb24() const (defined in CRGB)CRGBinline - operator%=(uint8_t scaledown) (defined in CRGB)CRGBinline - operator&=(const CRGB &rhs) (defined in CRGB)CRGBinline - operator&=(uint8_t d) (defined in CRGB)CRGBinline - operator*=(uint8_t d) (defined in CRGB)CRGBinline - operator++() __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator++(int DUMMY_ARG) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator+=(const CRGB &rhs) (defined in CRGB)CRGBinline - operator-() (defined in CRGB)CRGBinline - operator--() __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator--(int DUMMY_ARG) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator-=(const CRGB &rhs) (defined in CRGB)CRGBinline - operator/=(uint8_t d) (defined in CRGB)CRGBinline - operator=(const CRGB &rhs) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator=(const uint32_t colorcode) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator=(const CHSV &rhs) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator>>=(uint8_t d) (defined in CRGB)CRGBinline - operator[](uint8_t x) __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator[](uint8_t x) const __attribute__((always_inline)) (defined in CRGB)CRGBinline - operator|=(const CRGB &rhs) (defined in CRGB)CRGBinline - operator|=(uint8_t d) (defined in CRGB)CRGBinline - Orange enum value (defined in CRGB)CRGB - OrangeRed enum value (defined in CRGB)CRGB - Orchid enum value (defined in CRGB)CRGB - PaleGoldenrod enum value (defined in CRGB)CRGB - PaleGreen enum value (defined in CRGB)CRGB - PaleTurquoise enum value (defined in CRGB)CRGB - PaleVioletRed enum value (defined in CRGB)CRGB - PapayaWhip enum value (defined in CRGB)CRGB - PeachPuff enum value (defined in CRGB)CRGB - Peru enum value (defined in CRGB)CRGB - Pink enum value (defined in CRGB)CRGB - Plaid enum value (defined in CRGB)CRGB - Plum enum value (defined in CRGB)CRGB - PowderBlue enum value (defined in CRGB)CRGB - Purple enum value (defined in CRGB)CRGB - r (defined in CRGB)CRGB - raw (defined in CRGB)CRGB - Red enum value (defined in CRGB)CRGB + nscale8(const CRGB &scaledown) (defined in CRGB)CRGBinline + nscale8_video(uint8_t scaledown) (defined in CRGB)CRGBinline + OldLace enum value (defined in CRGB)CRGB + Olive enum value (defined in CRGB)CRGB + OliveDrab enum value (defined in CRGB)CRGB + operator bool() const __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator rgb24() const (defined in CRGB)CRGBinline + operator%=(uint8_t scaledown) (defined in CRGB)CRGBinline + operator&=(const CRGB &rhs) (defined in CRGB)CRGBinline + operator&=(uint8_t d) (defined in CRGB)CRGBinline + operator*=(uint8_t d) (defined in CRGB)CRGBinline + operator++() __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator++(int) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator+=(const CRGB &rhs) (defined in CRGB)CRGBinline + operator-() (defined in CRGB)CRGBinline + operator--() __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator--(int) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator-=(const CRGB &rhs) (defined in CRGB)CRGBinline + operator/=(uint8_t d) (defined in CRGB)CRGBinline + operator=(const CRGB &rhs) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator=(const uint32_t colorcode) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator=(const CHSV &rhs) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator>>=(uint8_t d) (defined in CRGB)CRGBinline + operator[](uint8_t x) __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator[](uint8_t x) const __attribute__((always_inline)) (defined in CRGB)CRGBinline + operator|=(const CRGB &rhs) (defined in CRGB)CRGBinline + operator|=(uint8_t d) (defined in CRGB)CRGBinline + Orange enum value (defined in CRGB)CRGB + OrangeRed enum value (defined in CRGB)CRGB + Orchid enum value (defined in CRGB)CRGB + PaleGoldenrod enum value (defined in CRGB)CRGB + PaleGreen enum value (defined in CRGB)CRGB + PaleTurquoise enum value (defined in CRGB)CRGB + PaleVioletRed enum value (defined in CRGB)CRGB + PapayaWhip enum value (defined in CRGB)CRGB + PeachPuff enum value (defined in CRGB)CRGB + Peru enum value (defined in CRGB)CRGB + Pink enum value (defined in CRGB)CRGB + Plaid enum value (defined in CRGB)CRGB + Plum enum value (defined in CRGB)CRGB + PowderBlue enum value (defined in CRGB)CRGB + Purple enum value (defined in CRGB)CRGB + r (defined in CRGB)CRGB + raw (defined in CRGB)CRGB red (defined in CRGB)CRGB - RosyBrown enum value (defined in CRGB)CRGB - RoyalBlue enum value (defined in CRGB)CRGB - SaddleBrown enum value (defined in CRGB)CRGB - Salmon enum value (defined in CRGB)CRGB - SandyBrown enum value (defined in CRGB)CRGB + Red enum value (defined in CRGB)CRGB + RosyBrown enum value (defined in CRGB)CRGB + RoyalBlue enum value (defined in CRGB)CRGB + SaddleBrown enum value (defined in CRGB)CRGB + Salmon enum value (defined in CRGB)CRGB + SandyBrown enum value (defined in CRGB)CRGB + scale8(const CRGB &scaledown) const (defined in CRGB)CRGBinline SeaGreen enum value (defined in CRGB)CRGB Seashell enum value (defined in CRGB)CRGB setColorCode(uint32_t colorcode) __attribute__((always_inline)) (defined in CRGB)CRGBinline @@ -299,7 +301,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/struct_c_r_g_b.html b/docs/3.1/struct_c_r_g_b.html index 6fd56065..871dcddd 100644 --- a/docs/3.1/struct_c_r_g_b.html +++ b/docs/3.1/struct_c_r_g_b.html @@ -357,15 +357,15 @@ const uint8_t & operat CRGBoperator-- () __attribute__((always_inline))   - -CRGB operator-- (int DUMMY_ARG) __attribute__((always_inline)) -  + +CRGB operator-- (int) __attribute__((always_inline)) +  CRGBoperator++ () __attribute__((always_inline))   - -CRGB operator++ (int DUMMY_ARG) __attribute__((always_inline)) -  + +CRGB operator++ (int) __attribute__((always_inline)) +  CRGBoperator/= (uint8_t d)   @@ -387,6 +387,12 @@ const uint8_t & operat CRGBnscale8 (uint8_t scaledown)   + +CRGBnscale8 (const CRGB &scaledown) +  + +CRGB scale8 (const CRGB &scaledown) const +  CRGBfadeToBlackBy (uint8_t fadefactor)   @@ -485,7 +491,7 @@ union { diff --git a/docs/3.1/struct_multi_pixel_controller-members.html b/docs/3.1/struct_multi_pixel_controller-members.html index 853fb0b0..fc3344c0 100644 --- a/docs/3.1/struct_multi_pixel_controller-members.html +++ b/docs/3.1/struct_multi_pixel_controller-members.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/struct_multi_pixel_controller.html b/docs/3.1/struct_multi_pixel_controller.html index 5aef0696..f4bd81dc 100644 --- a/docs/3.1/struct_multi_pixel_controller.html +++ b/docs/3.1/struct_multi_pixel_controller.html @@ -268,7 +268,7 @@ int uint8_t scale { re diff --git a/docs/3.1/struct_pixel_controller-members.html b/docs/3.1/struct_pixel_controller-members.html index 6adae635..7e673389 100644 --- a/docs/3.1/struct_pixel_controller-members.html +++ b/docs/3.1/struct_pixel_controller-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/struct_pixel_controller.html b/docs/3.1/struct_pixel_controller.html index 975b06a5..29155db0 100644 --- a/docs/3.1/struct_pixel_controller.html +++ b/docs/3.1/struct_pixel_controller.html @@ -302,7 +302,7 @@ template<EOrder RGB_ORDER> diff --git a/docs/3.1/structsub4-members.html b/docs/3.1/structsub4-members.html index cbb5ce9d..182d91c2 100644 --- a/docs/3.1/structsub4-members.html +++ b/docs/3.1/structsub4-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/structsub4.html b/docs/3.1/structsub4.html index 59736da6..db3fc57b 100644 --- a/docs/3.1/structsub4.html +++ b/docs/3.1/structsub4.html @@ -205,7 +205,7 @@ uint32_t d7:1 diff --git a/docs/3.1/todo.html b/docs/3.1/todo.html index a5ac53e2..6e31e704 100644 --- a/docs/3.1/todo.html +++ b/docs/3.1/todo.html @@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/trig8_8h_source.html b/docs/3.1/trig8_8h_source.html index fe125533..b023b78d 100644 --- a/docs/3.1/trig8_8h_source.html +++ b/docs/3.1/trig8_8h_source.html @@ -304,7 +304,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/union_i_e_e_e754binary32__t-members.html b/docs/3.1/union_i_e_e_e754binary32__t-members.html index eb4e757b..2e13dc60 100644 --- a/docs/3.1/union_i_e_e_e754binary32__t-members.html +++ b/docs/3.1/union_i_e_e_e754binary32__t-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/union_i_e_e_e754binary32__t.html b/docs/3.1/union_i_e_e_e754binary32__t.html index bb53de4b..35aa5623 100644 --- a/docs/3.1/union_i_e_e_e754binary32__t.html +++ b/docs/3.1/union_i_e_e_e754binary32__t.html @@ -157,7 +157,7 @@ struct { diff --git a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html index 2017a7df..f6f4bbcc 100644 --- a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html +++ b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html index 772c338c..c3944f77 100644 --- a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html +++ b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html @@ -124,7 +124,7 @@ uint8_t bytes [4] diff --git a/docs/3.1/unionbitswap__type-members.html b/docs/3.1/unionbitswap__type-members.html index fd2f9c08..67f9f6a3 100644 --- a/docs/3.1/unionbitswap__type-members.html +++ b/docs/3.1/unionbitswap__type-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/unionbitswap__type.html b/docs/3.1/unionbitswap__type.html index a551a8e3..d25684c7 100644 --- a/docs/3.1/unionbitswap__type.html +++ b/docs/3.1/unionbitswap__type.html @@ -132,7 +132,7 @@ struct { diff --git a/docs/3.1/unionjust8bits-members.html b/docs/3.1/unionjust8bits-members.html index fe48b8af..ce35dc5f 100644 --- a/docs/3.1/unionjust8bits-members.html +++ b/docs/3.1/unionjust8bits-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/unionjust8bits.html b/docs/3.1/unionjust8bits.html index 5589a4fd..91b5a8ae 100644 --- a/docs/3.1/unionjust8bits.html +++ b/docs/3.1/unionjust8bits.html @@ -140,7 +140,7 @@ struct { diff --git a/docs/3.1/uniont_bytes_for_long-members.html b/docs/3.1/uniont_bytes_for_long-members.html index 4b95d5b0..a3310060 100644 --- a/docs/3.1/uniont_bytes_for_long-members.html +++ b/docs/3.1/uniont_bytes_for_long-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/3.1/uniont_bytes_for_long.html b/docs/3.1/uniont_bytes_for_long.html index 6515cece..ba21b7f6 100644 --- a/docs/3.1/uniont_bytes_for_long.html +++ b/docs/3.1/uniont_bytes_for_long.html @@ -108,7 +108,7 @@ uint8_t raw [4] -- cgit v1.2.3