From 03a203fe2a7d1c2067348ea1a335151b67df5d7a Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Mon, 20 Oct 2025 13:02:49 +0300 Subject: [PATCH] =?UTF-8?q?evovle=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D0=B5=D0=BD=20=D0=BD=D0=B0=20float=20+=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BD=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5=20=D0=BE=D0=BF=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit т.к. нет особо смысла супер быстро рассчитывать параметры. это просто вспомогательный инструмент для их параметров --- Doc/html/____general__flash_8c_source.html | 31 +- Doc/html/____general__flash_8h_source.html | 47 +- Doc/html/____general__spi_8c_source.html | 31 +- Doc/html/____general__spi_8h_source.html | 47 +- Doc/html/____general__uart_8c_source.html | 31 +- Doc/html/____general__uart_8h_source.html | 47 +- Doc/html/annotated.html | 22 +- Doc/html/bc_s.png | Bin 0 -> 676 bytes Doc/html/bc_sd.png | Bin 0 -> 635 bytes Doc/html/bit__access_8h.html | 100 +- Doc/html/bit__access_8h__dep__incl.map | 8 +- Doc/html/bit__access_8h__dep__incl.md5 | 2 +- Doc/html/bit__access_8h__dep__incl.png | Bin 2910 -> 3486 bytes Doc/html/bit__access_8h__incl.map | 16 +- Doc/html/bit__access_8h__incl.md5 | 2 +- Doc/html/bit__access_8h__incl.png | Bin 4026 -> 4374 bytes Doc/html/bit__access_8h_source.html | 31 +- Doc/html/classes.html | 22 +- Doc/html/clipboard.js | 4 +- Doc/html/closed.png | Bin 0 -> 132 bytes Doc/html/darkmode_toggle.js | 6 - Doc/html/dir_000002_000000.html | 33 +- .../dir_9c80311a018e1f8cfb6659b73d634be4.html | 55 +- ...r_9c80311a018e1f8cfb6659b73d634be4_dep.map | 2 +- ...r_9c80311a018e1f8cfb6659b73d634be4_dep.md5 | 2 +- .../dir_9e11e9a41112194af3eee6cc728f9515.html | 51 +- ...r_9e11e9a41112194af3eee6cc728f9515_dep.map | 2 +- ...r_9e11e9a41112194af3eee6cc728f9515_dep.md5 | 2 +- .../dir_eb423fea8a9c4b9b32b922020ec391e1.html | 76 +- ...r_eb423fea8a9c4b9b32b922020ec391e1_dep.map | 2 +- ...r_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 | 2 +- Doc/html/doc.svg | 12 + Doc/html/docd.svg | 12 + Doc/html/doxygen.css | 1592 +++++++---------- Doc/html/doxygen_crawl.html | 399 ++--- Doc/html/dynsections.js | 75 +- Doc/html/evolve__optimizer_8h.html | 122 +- Doc/html/evolve__optimizer_8h.js | 11 +- Doc/html/evolve__optimizer_8h__dep__incl.map | 8 +- Doc/html/evolve__optimizer_8h__dep__incl.md5 | 2 +- Doc/html/evolve__optimizer_8h__dep__incl.png | Bin 2962 -> 3534 bytes Doc/html/evolve__optimizer_8h__incl.map | 24 +- Doc/html/evolve__optimizer_8h__incl.md5 | 2 +- Doc/html/evolve__optimizer_8h__incl.png | Bin 6256 -> 6465 bytes Doc/html/evolve__optimizer_8h_source.html | 634 ++++--- Doc/html/files.html | 64 +- Doc/html/folderclosed.svg | 11 + Doc/html/folderclosedd.svg | 11 + Doc/html/folderopen.svg | 17 + Doc/html/folderopend.svg | 12 + Doc/html/functions.html | 59 +- Doc/html/functions_vars.html | 59 +- Doc/html/general__gpio_8c.html | 74 +- Doc/html/general__gpio_8c__incl.map | 20 +- Doc/html/general__gpio_8c__incl.md5 | 2 +- Doc/html/general__gpio_8c__incl.png | Bin 5053 -> 5401 bytes Doc/html/general__gpio_8c_source.html | 31 +- Doc/html/general__gpio_8h.html | 129 +- Doc/html/general__gpio_8h__dep__incl.map | 30 +- Doc/html/general__gpio_8h__dep__incl.md5 | 2 +- Doc/html/general__gpio_8h__dep__incl.png | Bin 17021 -> 21812 bytes Doc/html/general__gpio_8h__incl.map | 16 +- Doc/html/general__gpio_8h__incl.md5 | 2 +- Doc/html/general__gpio_8h__incl.png | Bin 4033 -> 4364 bytes Doc/html/general__gpio_8h_source.html | 35 +- Doc/html/general__tim_8c.html | 81 +- Doc/html/general__tim_8c__incl.map | 26 +- Doc/html/general__tim_8c__incl.md5 | 2 +- Doc/html/general__tim_8c__incl.png | Bin 8453 -> 8812 bytes Doc/html/general__tim_8c_source.html | 33 +- Doc/html/general__tim_8h.html | 130 +- Doc/html/general__tim_8h__dep__incl.map | 12 +- Doc/html/general__tim_8h__dep__incl.md5 | 2 +- Doc/html/general__tim_8h__dep__incl.png | Bin 5296 -> 6891 bytes Doc/html/general__tim_8h__incl.map | 22 +- Doc/html/general__tim_8h__incl.md5 | 2 +- Doc/html/general__tim_8h__incl.png | Bin 7341 -> 7680 bytes Doc/html/general__tim_8h_source.html | 47 +- Doc/html/globals.html | 65 +- Doc/html/globals_defs.html | 61 +- Doc/html/globals_enum.html | 22 +- Doc/html/globals_eval.html | 22 +- Doc/html/globals_func.html | 36 +- Doc/html/graph_legend.html | 26 +- ...__b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html | 105 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html | 84 +- ...r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html | 120 +- .../group___e_v_o_l_v_e___c_o_n_f_i_g.html | 47 +- ...oup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html | 266 ++- ...group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js | 18 +- Doc/html/group___g_p_i_o___i_n_i_t.html | 49 +- Doc/html/group___l_i_b_s___c_o_n_f_i_g.html | 49 +- Doc/html/group___m_y___l_i_b_s___g_p_i_o.html | 51 +- Doc/html/group___m_y___l_i_b_s___t_i_m.html | 54 +- Doc/html/group___m_y_l_i_b_s___a_l_l.html | 51 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.html | 51 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html | 63 +- ...m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html | 64 +- ...oup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html | 75 +- ...__m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html | 58 +- ...p___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html | 48 +- ...oup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html | 51 +- ...__m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html | 55 +- ...__m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html | 68 +- .../group___m_y_l_i_b_s___t_i_m___o_c.html | 56 +- Doc/html/group___t_i_m___i_n_i_t.html | 59 +- Doc/html/group___t_r_a_c_e.html | 54 +- Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html | 60 +- Doc/html/group___t_r_a_c_e___g_p_i_o.html | 67 +- ...group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html | 54 +- ...group___t_r_a_c_e___r_t_t___f_l_a_s_h.html | 66 +- Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html | 74 +- Doc/html/group___t_r_a_c_k_e_r_s.html | 246 ++- .../group___u_t_i_l_s___d_e_f_i_n_e_s.html | 84 +- Doc/html/index.html | 46 +- Doc/html/jquery.js | 190 +- Doc/html/mainpage_8h_source.html | 31 +- Doc/html/menu.js | 17 +- Doc/html/menudata.js | 4 +- Doc/html/minus.svg | 8 + Doc/html/minusd.svg | 8 + Doc/html/mylibs__config_8h.html | 159 +- Doc/html/mylibs__config_8h__dep__incl.map | 78 +- Doc/html/mylibs__config_8h__dep__incl.md5 | 2 +- Doc/html/mylibs__config_8h__dep__incl.png | Bin 70866 -> 83154 bytes Doc/html/mylibs__config_8h__incl.map | 8 +- Doc/html/mylibs__config_8h__incl.md5 | 2 +- Doc/html/mylibs__config_8h__incl.png | Bin 2312 -> 2515 bytes Doc/html/mylibs__config_8h_source.html | 31 +- Doc/html/mylibs__defs_8h.html | 181 +- Doc/html/mylibs__defs_8h__dep__incl.map | 74 +- Doc/html/mylibs__defs_8h__dep__incl.md5 | 2 +- Doc/html/mylibs__defs_8h__dep__incl.png | Bin 67656 -> 78637 bytes Doc/html/mylibs__defs_8h__incl.map | 12 +- Doc/html/mylibs__defs_8h__incl.md5 | 2 +- Doc/html/mylibs__defs_8h__incl.png | Bin 3194 -> 3403 bytes Doc/html/mylibs__defs_8h_source.html | 31 +- Doc/html/mylibs__include_8h.html | 118 +- Doc/html/mylibs__include_8h__incl.map | 78 +- Doc/html/mylibs__include_8h__incl.md5 | 2 +- Doc/html/mylibs__include_8h__incl.png | Bin 44344 -> 44435 bytes Doc/html/mylibs__include_8h_source.html | 37 +- Doc/html/nav_f.png | Bin 0 -> 153 bytes Doc/html/nav_fd.png | Bin 0 -> 169 bytes Doc/html/nav_g.png | Bin 0 -> 95 bytes Doc/html/nav_h.png | Bin 0 -> 98 bytes Doc/html/nav_hd.png | Bin 0 -> 114 bytes Doc/html/navtree.css | 230 +-- Doc/html/navtree.js | 589 +----- Doc/html/navtreedata.js | 15 +- Doc/html/navtreeindex0.js | 34 +- Doc/html/navtreeindex1.js | 4 + Doc/html/open.png | Bin 0 -> 123 bytes Doc/html/plus.svg | 9 + Doc/html/plusd.svg | 9 + Doc/html/resize.js | 109 ++ Doc/html/search/all_10.js | 60 +- Doc/html/search/all_15.js | 4 +- Doc/html/search/all_16.js | 2 +- Doc/html/search/all_1a.js | 6 +- Doc/html/search/all_1b.js | 2 +- Doc/html/search/all_2.js | 2 +- Doc/html/search/all_4.js | 29 +- Doc/html/search/all_6.js | 2 +- Doc/html/search/all_8.js | 3 +- Doc/html/search/all_9.js | 2 +- Doc/html/search/all_a.js | 21 +- Doc/html/search/all_d.js | 4 +- Doc/html/search/all_e.js | 26 +- Doc/html/search/all_f.js | 33 +- Doc/html/search/close.svg | 18 + Doc/html/search/functions_0.js | 4 +- Doc/html/search/groups_f.js | 16 +- Doc/html/search/mag.svg | 24 + Doc/html/search/mag_d.svg | 24 + Doc/html/search/mag_sel.svg | 31 + Doc/html/search/mag_seld.svg | 31 + Doc/html/search/pages_0.js | 3 +- Doc/html/search/search.css | 177 +- Doc/html/search/search.js | 24 +- Doc/html/search/searchdata.js | 4 +- Doc/html/search/variables_0.js | 2 +- Doc/html/search/variables_5.js | 7 +- Doc/html/search/variables_6.js | 7 +- Doc/html/search/variables_a.js | 25 +- Doc/html/splitbar.png | Bin 0 -> 314 bytes Doc/html/splitbard.png | Bin 0 -> 282 bytes .../struct_evolve_optimizer__t-members.html | 29 +- Doc/html/struct_evolve_optimizer__t.html | 125 +- Doc/html/struct_evolve_optimizer__t.js | 7 +- ...ruct_g_p_i_o___l_e_d_type_def-members.html | 22 +- Doc/html/struct_g_p_i_o___l_e_d_type_def.html | 48 +- ...uct_g_p_i_o___switch_type_def-members.html | 22 +- .../struct_g_p_i_o___switch_type_def.html | 48 +- .../struct_h_f___stack_frame__t-members.html | 22 +- Doc/html/struct_h_f___stack_frame__t.html | 50 +- ...truct_r_t_t___flash_header__t-members.html | 22 +- Doc/html/struct_r_t_t___flash_header__t.html | 45 +- ...uct_s_p_i___settings_type_def-members.html | 22 +- .../struct_s_p_i___settings_type_def.html | 52 +- ...ruct_t_i_m___encoder_type_def-members.html | 22 +- Doc/html/struct_t_i_m___encoder_type_def.html | 60 +- ..._t_i_m___encoder_type_def__coll__graph.map | 4 +- ..._t_i_m___encoder_type_def__coll__graph.md5 | 2 +- ..._t_i_m___encoder_type_def__coll__graph.png | Bin 1853 -> 1780 bytes ...uct_t_i_m___settings_type_def-members.html | 22 +- .../struct_t_i_m___settings_type_def.html | 64 +- ...t_u_a_r_t___settings_type_def-members.html | 22 +- .../struct_u_a_r_t___settings_type_def.html | 48 +- Doc/html/sync_off.png | Bin 0 -> 853 bytes Doc/html/sync_on.png | Bin 0 -> 845 bytes Doc/html/tab_a.png | Bin 0 -> 142 bytes Doc/html/tab_ad.png | Bin 0 -> 135 bytes Doc/html/tab_b.png | Bin 0 -> 169 bytes Doc/html/tab_bd.png | Bin 0 -> 173 bytes Doc/html/tab_h.png | Bin 0 -> 177 bytes Doc/html/tab_hd.png | Bin 0 -> 180 bytes Doc/html/tab_s.png | Bin 0 -> 184 bytes Doc/html/tab_sd.png | Bin 0 -> 188 bytes Doc/html/tabs.css | 2 +- Doc/html/topics.html | 40 +- Doc/html/trace_8h.html | 89 +- Doc/html/trace_8h__dep__incl.map | 8 +- Doc/html/trace_8h__dep__incl.md5 | 2 +- Doc/html/trace_8h__dep__incl.png | Bin 2854 -> 3376 bytes Doc/html/trace_8h__incl.map | 4 +- Doc/html/trace_8h__incl.md5 | 2 +- Doc/html/trace_8h__incl.png | Bin 6855 -> 7065 bytes Doc/html/trace_8h_source.html | 49 +- Doc/html/trackers_8h.html | 131 +- Doc/html/trackers_8h__dep__incl.map | 8 +- Doc/html/trackers_8h__dep__incl.md5 | 2 +- Doc/html/trackers_8h__dep__incl.png | Bin 2894 -> 3527 bytes Doc/html/trackers_8h__incl.map | 16 +- Doc/html/trackers_8h__incl.md5 | 2 +- Doc/html/trackers_8h__incl.png | Bin 4009 -> 4286 bytes Doc/html/trackers_8h_source.html | 31 +- .../unionuint16___bit_type_def-members.html | 22 +- Doc/html/unionuint16___bit_type_def.html | 97 +- .../unionuint32___bit_type_def-members.html | 22 +- Doc/html/unionuint32___bit_type_def.html | 145 +- .../unionuint64___bit_type_def-members.html | 22 +- Doc/html/unionuint64___bit_type_def.html | 241 ++- .../unionuint8___bit_type_def-members.html | 22 +- Doc/html/unionuint8___bit_type_def.html | 73 +- Doc/latex/Makefile | 25 +- Doc/latex/____general__flash_8c_source.tex | 2 +- Doc/latex/____general__flash_8h_source.tex | 18 +- Doc/latex/____general__spi_8c_source.tex | 2 +- Doc/latex/____general__spi_8h_source.tex | 18 +- Doc/latex/____general__uart_8c_source.tex | 2 +- Doc/latex/____general__uart_8h_source.tex | 18 +- Doc/latex/bit__access_8h.tex | 16 +- Doc/latex/bit__access_8h__dep__incl.md5 | 2 +- Doc/latex/bit__access_8h__dep__incl.pdf | Bin 20659 -> 21021 bytes Doc/latex/bit__access_8h__incl.md5 | 2 +- Doc/latex/bit__access_8h__incl.pdf | Bin 22134 -> 22104 bytes Doc/latex/bit__access_8h_source.tex | 2 +- Doc/latex/doxygen.sty | 85 +- Doc/latex/evolve__optimizer_8h.tex | 28 +- Doc/latex/evolve__optimizer_8h__dep__incl.md5 | 2 +- Doc/latex/evolve__optimizer_8h__dep__incl.pdf | Bin 22284 -> 22257 bytes Doc/latex/evolve__optimizer_8h__incl.md5 | 2 +- Doc/latex/evolve__optimizer_8h__incl.pdf | Bin 23565 -> 23527 bytes Doc/latex/evolve__optimizer_8h_source.tex | 565 +++--- Doc/latex/files.tex | 36 +- Doc/latex/general__gpio_8c.tex | 6 +- Doc/latex/general__gpio_8c__incl.md5 | 2 +- Doc/latex/general__gpio_8c__incl.pdf | Bin 22451 -> 22401 bytes Doc/latex/general__gpio_8c_source.tex | 2 +- Doc/latex/general__gpio_8h.tex | 8 +- Doc/latex/general__gpio_8h__dep__incl.md5 | 2 +- Doc/latex/general__gpio_8h__dep__incl.pdf | Bin 22847 -> 22865 bytes Doc/latex/general__gpio_8h__incl.md5 | 2 +- Doc/latex/general__gpio_8h__incl.pdf | Bin 22498 -> 22456 bytes Doc/latex/general__gpio_8h_source.tex | 6 +- Doc/latex/general__tim_8c.tex | 6 +- Doc/latex/general__tim_8c__incl.md5 | 2 +- Doc/latex/general__tim_8c__incl.pdf | Bin 22735 -> 22698 bytes Doc/latex/general__tim_8c_source.tex | 2 +- Doc/latex/general__tim_8h.tex | 20 +- Doc/latex/general__tim_8h__dep__incl.md5 | 2 +- Doc/latex/general__tim_8h__dep__incl.pdf | Bin 21347 -> 21740 bytes Doc/latex/general__tim_8h__incl.md5 | 2 +- Doc/latex/general__tim_8h__incl.pdf | Bin 22787 -> 22755 bytes Doc/latex/general__tim_8h_source.tex | 18 +- ...___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.tex | 56 +- .../group___d_e_l_a_y_s___d_e_f_i_n_e_s.tex | 56 +- ..._r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex | 82 +- .../group___e_v_o_l_v_e___c_o_n_f_i_g.tex | 22 +- ...roup___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex | 187 +- Doc/latex/group___g_p_i_o___i_n_i_t.tex | 34 +- Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex | 34 +- Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex | 2 +- Doc/latex/group___m_y___l_i_b_s___t_i_m.tex | 2 +- Doc/latex/group___m_y_l_i_b_s___a_l_l.tex | 2 +- .../group___m_y_l_i_b_s___c_o_n_f_i_g.tex | 2 +- .../group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex | 2 +- ..._m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex | 24 +- ...roup___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex | 56 +- ...___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex | 16 +- ...up___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex | 2 +- ...roup___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex | 22 +- ...___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex | 22 +- ...___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex | 40 +- .../group___m_y_l_i_b_s___t_i_m___o_c.tex | 16 +- Doc/latex/group___t_i_m___i_n_i_t.tex | 94 +- Doc/latex/group___t_r_a_c_e.tex | 2 +- Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex | 100 +- Doc/latex/group___t_r_a_c_e___g_p_i_o.tex | 33 +- .../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex | 16 +- .../group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex | 28 +- Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex | 32 +- Doc/latex/group___t_r_a_c_k_e_r_s.tex | 260 +-- .../group___u_t_i_l_s___d_e_f_i_n_e_s.tex | 56 +- Doc/latex/index.tex | 10 +- Doc/latex/longtable_doxygen.sty | 15 +- Doc/latex/mainpage_8h_source.tex | 2 +- Doc/latex/make.bat | 15 +- Doc/latex/mylibs__config_8h.tex | 6 +- Doc/latex/mylibs__config_8h__dep__incl.md5 | 2 +- Doc/latex/mylibs__config_8h__dep__incl.pdf | Bin 26500 -> 26116 bytes Doc/latex/mylibs__config_8h__incl.md5 | 2 +- Doc/latex/mylibs__config_8h__incl.pdf | Bin 21708 -> 21677 bytes Doc/latex/mylibs__config_8h_source.tex | 2 +- Doc/latex/mylibs__defs_8h.tex | 34 +- Doc/latex/mylibs__defs_8h__dep__incl.md5 | 2 +- Doc/latex/mylibs__defs_8h__dep__incl.pdf | Bin 26365 -> 25936 bytes Doc/latex/mylibs__defs_8h__incl.md5 | 2 +- Doc/latex/mylibs__defs_8h__incl.pdf | Bin 22009 -> 21974 bytes Doc/latex/mylibs__defs_8h_source.tex | 2 +- Doc/latex/mylibs__include_8h.tex | 4 +- Doc/latex/mylibs__include_8h__incl.md5 | 2 +- Doc/latex/mylibs__include_8h__incl.pdf | Bin 26467 -> 26404 bytes Doc/latex/mylibs__include_8h_source.tex | 6 +- Doc/latex/refman.tex | 48 +- Doc/latex/struct_evolve_optimizer__t.tex | 104 +- Doc/latex/struct_g_p_i_o___l_e_d_type_def.tex | 40 +- .../struct_g_p_i_o___switch_type_def.tex | 40 +- Doc/latex/struct_h_f___stack_frame__t.tex | 52 +- Doc/latex/struct_r_t_t___flash_header__t.tex | 22 +- .../struct_s_p_i___settings_type_def.tex | 64 +- Doc/latex/struct_t_i_m___encoder_type_def.tex | 58 +- ..._t_i_m___encoder_type_def__coll__graph.md5 | 2 +- ..._t_i_m___encoder_type_def__coll__graph.pdf | Bin 17028 -> 17047 bytes .../struct_t_i_m___settings_type_def.tex | 76 +- .../struct_u_a_r_t___settings_type_def.tex | 40 +- Doc/latex/trace_8h.tex | 12 +- Doc/latex/trace_8h__dep__incl.md5 | 2 +- Doc/latex/trace_8h__dep__incl.pdf | Bin 20652 -> 21021 bytes Doc/latex/trace_8h__incl.md5 | 2 +- Doc/latex/trace_8h__incl.pdf | Bin 22340 -> 22771 bytes Doc/latex/trace_8h_source.tex | 20 +- Doc/latex/trackers_8h.tex | 46 +- Doc/latex/trackers_8h__dep__incl.md5 | 2 +- Doc/latex/trackers_8h__dep__incl.pdf | Bin 21172 -> 21034 bytes Doc/latex/trackers_8h__incl.md5 | 2 +- Doc/latex/trackers_8h__incl.pdf | Bin 22651 -> 22097 bytes Doc/latex/trackers_8h_source.tex | 2 +- Doc/latex/unionuint16___bit_type_def.tex | 108 +- Doc/latex/unionuint32___bit_type_def.tex | 204 ++- Doc/latex/unionuint64___bit_type_def.tex | 396 ++-- Doc/latex/unionuint8___bit_type_def.tex | 60 +- MyLibsGeneral/Inc/evolve_optimizer.h | 218 ++- 364 files changed, 7523 insertions(+), 7886 deletions(-) create mode 100644 Doc/html/bc_s.png create mode 100644 Doc/html/bc_sd.png create mode 100644 Doc/html/closed.png create mode 100644 Doc/html/doc.svg create mode 100644 Doc/html/docd.svg create mode 100644 Doc/html/folderclosed.svg create mode 100644 Doc/html/folderclosedd.svg create mode 100644 Doc/html/folderopen.svg create mode 100644 Doc/html/folderopend.svg create mode 100644 Doc/html/minus.svg create mode 100644 Doc/html/minusd.svg create mode 100644 Doc/html/nav_f.png create mode 100644 Doc/html/nav_fd.png create mode 100644 Doc/html/nav_g.png create mode 100644 Doc/html/nav_h.png create mode 100644 Doc/html/nav_hd.png create mode 100644 Doc/html/open.png create mode 100644 Doc/html/plus.svg create mode 100644 Doc/html/plusd.svg create mode 100644 Doc/html/resize.js create mode 100644 Doc/html/search/close.svg create mode 100644 Doc/html/search/mag.svg create mode 100644 Doc/html/search/mag_d.svg create mode 100644 Doc/html/search/mag_sel.svg create mode 100644 Doc/html/search/mag_seld.svg create mode 100644 Doc/html/splitbar.png create mode 100644 Doc/html/splitbard.png create mode 100644 Doc/html/sync_off.png create mode 100644 Doc/html/sync_on.png create mode 100644 Doc/html/tab_a.png create mode 100644 Doc/html/tab_ad.png create mode 100644 Doc/html/tab_b.png create mode 100644 Doc/html/tab_bd.png create mode 100644 Doc/html/tab_h.png create mode 100644 Doc/html/tab_hd.png create mode 100644 Doc/html/tab_s.png create mode 100644 Doc/html/tab_sd.png diff --git a/Doc/html/____general__flash_8c_source.html b/Doc/html/____general__flash_8c_source.html index 62a1810..35f7ff8 100644 --- a/Doc/html/____general__flash_8c_source.html +++ b/Doc/html/____general__flash_8c_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_flash.c Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_flash.c Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
192
- diff --git a/Doc/html/____general__flash_8h_source.html b/Doc/html/____general__flash_8h_source.html index 463e16a..4b017c4 100644 --- a/Doc/html/____general__flash_8h_source.html +++ b/Doc/html/____general__flash_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_flash.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_flash.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
7
8//////////////////////////////////////////////////////////////////////
9/////////////////////////---USER SETTINGS---/////////////////////////
-
10
+
10
11
12/////////////////////////---USER SETTINGS---/////////////////////////
-
13#include "mylibs_defs.h"
+
13#include "mylibs_defs.h"
14
15
16
17/////////////////////////////////////////////////////////////////////
18////////////////////////////---DEFINES---////////////////////////////
-
19
+
19
20////////////////////////////---DEFINES---////////////////////////////
-
21
+
21
22
23/////////////////////////////////////////////////////////////////////
24///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
25
+
25
26///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
27
+
27
28
29/////////////////////////////////////////////////////////////////////
30///////////////////////////---FUNCTIONS---///////////////////////////
-
31
+
31
32HAL_StatusTypeDef FLASH_Enable_DualBankMode(void);
33HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection);
34/* functions for reading bytes/halswords/words */
@@ -142,17 +150,16 @@ $(function(){initNavTree('____general__flash_8h_source.html','',''); });
40HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data);
41HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data);
42///////////////////////////---FUNCTIONS---///////////////////////////
-
43
+
43
44#endif // __FLASH_GENERAL_H_
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
- diff --git a/Doc/html/____general__spi_8c_source.html b/Doc/html/____general__spi_8c_source.html index ad92bfa..f4b3e36 100644 --- a/Doc/html/____general__spi_8c_source.html +++ b/Doc/html/____general__spi_8c_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_spi.c Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_spi.c Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
- diff --git a/Doc/html/____general__spi_8h_source.html b/Doc/html/____general__spi_8h_source.html index e83c1f2..31fdfcd 100644 --- a/Doc/html/____general__spi_8h_source.html +++ b/Doc/html/____general__spi_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
8
9//////////////////////////////////////////////////////////////////////
10/////////////////////////---USER SETTINGS---/////////////////////////
-
11#define HAL_SPI_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
+
11#define HAL_SPI_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
12 // also need to add hal_spi.c (source code)
13
14#define USE_SPI1
@@ -118,22 +126,22 @@ $(function(){initNavTree('____general__spi_8h_source.html','',''); });
16#define USE_SPI3
17
18/////////////////////////---USER SETTINGS---/////////////////////////
-
19#include "mylibs_defs.h"
+
19#include "mylibs_defs.h"
20
21
22
23/////////////////////////////////////////////////////////////////////
24////////////////////////////---DEFINES---////////////////////////////
-
25
+
25
26
27
28////////////////////////////---DEFINES---////////////////////////////
-
29
+
29
30
31/////////////////////////////////////////////////////////////////////
32///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
33typedef struct // struct with settings for custom function
+
33typedef struct // struct with settings for custom function
34{
35 SPI_HandleTypeDef hspi;
36
@@ -152,11 +160,11 @@ $(function(){initNavTree('____general__spi_8h_source.html','',''); });
50///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
51
+
51
52
53/////////////////////////////////////////////////////////////////////
54///////////////////////////---FUNCTIONS---///////////////////////////
-
55/**
+
55/**
56 * @brief Initialize SPI with SPI_SettingsTypeDef structure.
57 * @param sspi - указатель на структуру с настройками SPI.
58 * @return HAL status.
@@ -200,18 +208,17 @@ $(function(){initNavTree('____general__spi_8h_source.html','',''); });
96 */
97HAL_StatusTypeDef Check_SPI_Init_Struct(SPI_SettingsTypeDef *sspi);
98///////////////////////////---FUNCTIONS---///////////////////////////
-
99
+
99
100#endif // __SPI_GENERAL_H_
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
- diff --git a/Doc/html/____general__uart_8c_source.html b/Doc/html/____general__uart_8c_source.html index 041ddc5..aa257bf 100644 --- a/Doc/html/____general__uart_8c_source.html +++ b/Doc/html/____general__uart_8c_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_uart.c Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/__general_uart.c Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
- diff --git a/Doc/html/____general__uart_8h_source.html b/Doc/html/____general__uart_8h_source.html index 810ca3d..4f87464 100644 --- a/Doc/html/____general__uart_8h_source.html +++ b/Doc/html/____general__uart_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_uart.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_uart.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
8
9//////////////////////////////////////////////////////////////////////
10/////////////////////////---USER SETTINGS---/////////////////////////
-
11#define HAL_UART_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
+
11#define HAL_UART_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
12//#define HAL_USART_MODULE_ENABLED // maybe also need to add hal_uart.h/.c (source code)
13
14//#define USE_USART1
@@ -122,13 +130,13 @@ $(function(){initNavTree('____general__uart_8h_source.html','',''); });
20/* note: used uart defines in modbus.h */
21
22/////////////////////////---USER SETTINGS---/////////////////////////
-
23#include "interface_config.h" /* used uart defines in modbus.h */
+
23#include "interface_config.h" /* used uart defines in modbus.h */
24
25
26
27/////////////////////////////////////////////////////////////////////
28////////////////////////////---DEFINES---////////////////////////////
-
29#include "mylibs_defs.h"
+
29#include "mylibs_defs.h"
30/**
31 * @brief Analog for HAL define. Remade with pointer to structure.
32 * @note @ref __HAL_LINKDMA.
@@ -140,12 +148,12 @@ $(function(){initNavTree('____general__uart_8h_source.html','',''); });
38
39
40////////////////////////////---DEFINES---////////////////////////////
-
41
+
41
42
43/////////////////////////////////////////////////////////////////////
44///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
45typedef struct // struct with settings for custom function
+
45typedef struct // struct with settings for custom function
46{
47 UART_HandleTypeDef huart;
48
@@ -160,11 +168,11 @@ $(function(){initNavTree('____general__uart_8h_source.html','',''); });
58///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
59
+
59
60
61/////////////////////////////////////////////////////////////////////
62///////////////////////////---FUNCTIONS---///////////////////////////
-
63/**
+
63/**
64 * @brief Initialize UART with UART_SettingsTypeDef structure.
65 * @param suart - указатель на структуру с настройками UART.
66 * @return HAL status.
@@ -208,18 +216,17 @@ $(function(){initNavTree('____general__uart_8h_source.html','',''); });
104 */
105HAL_StatusTypeDef Check_UART_Init_Struct(UART_SettingsTypeDef *suart);
106///////////////////////////---FUNCTIONS---///////////////////////////
-
107
+
107
108#endif // __UART_GENERAL_H_
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
- diff --git a/Doc/html/annotated.html b/Doc/html/annotated.html index 17dc897..9b3b980 100644 --- a/Doc/html/annotated.html +++ b/Doc/html/annotated.html @@ -3,7 +3,7 @@ - + MyLibs: Class List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
-
diff --git a/Doc/html/bc_s.png b/Doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/Doc/html/bc_sd.png b/Doc/html/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/Doc/html/bit__access_8h.html b/Doc/html/bit__access_8h.html index eacf932..f0e236e 100644 --- a/Doc/html/bit__access_8h.html +++ b/Doc/html/bit__access_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
bit_access.h File Reference
@@ -104,72 +110,74 @@ $(function(){initNavTree('bit__access_8h.html','',''); });

Заголочный файл для дефайнов битового доступа. More...

#include "mylibs_defs.h"
-
Include dependency graph for bit_access.h:
+
+ + Include dependency graph for bit_access.h:
-
This graph shows which files directly or indirectly include this file:
+
+ + This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

- - - - - + + + + + + + +

+

Classes

union  uint8_BitTypeDef
union  uint16_BitTypeDef
union  uint32_BitTypeDef
union  uint64_BitTypeDef
union  uint8_BitTypeDef
 
union  uint16_BitTypeDef
 
union  uint32_BitTypeDef
 
union  uint64_BitTypeDef
 
- - + - + + - + + - + + +

+

Macros

#define uint8_bit(_uint8_, _bit_)
#define uint8_bit(_uint8_, _bit_)   (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
 Получить n-й бит из uint8_t.
#define uint16_bit(_uint8_, _bit_)
 
#define uint16_bit(_uint8_, _bit_)   (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
 Получить n-й бит из uint16_t.
#define uint32_bit(_uint8_, _bit_)
 
#define uint32_bit(_uint8_, _bit_)   (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
 Получить n-й бит из uint32_t.
#define uint64_bit(_uint8_, _bit_)
 
#define uint64_bit(_uint8_, _bit_)   (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
 Получить n-й бит из uint64_t.
 
-

Detailed Description

+

Detailed Description

Заголочный файл для дефайнов битового доступа.

Definition in file bit_access.h.

- -
diff --git a/Doc/html/bit__access_8h__dep__incl.map b/Doc/html/bit__access_8h__dep__incl.map index 11c4cbf..5c825d5 100644 --- a/Doc/html/bit__access_8h__dep__incl.map +++ b/Doc/html/bit__access_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/bit__access_8h__dep__incl.md5 b/Doc/html/bit__access_8h__dep__incl.md5 index 2f7fcbf..20054ed 100644 --- a/Doc/html/bit__access_8h__dep__incl.md5 +++ b/Doc/html/bit__access_8h__dep__incl.md5 @@ -1 +1 @@ -9d0f52ae67584f7f09caa88b8c7ab4e9 \ No newline at end of file +7a9fce78f461300acd0d2ab58815dc95 \ No newline at end of file diff --git a/Doc/html/bit__access_8h__dep__incl.png b/Doc/html/bit__access_8h__dep__incl.png index 79f6619c897b62c156eb065203a84350319b4e25..3ef9c175d0f39ca29444ce89d477ed5307a2c660 100644 GIT binary patch literal 3486 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 AHvj+t diff --git a/Doc/html/bit__access_8h__incl.map b/Doc/html/bit__access_8h__incl.map index 9afbbb7..b03b1f1 100644 --- a/Doc/html/bit__access_8h__incl.map +++ b/Doc/html/bit__access_8h__incl.map @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/Doc/html/bit__access_8h__incl.md5 b/Doc/html/bit__access_8h__incl.md5 index dd84ccf..78ce098 100644 --- a/Doc/html/bit__access_8h__incl.md5 +++ b/Doc/html/bit__access_8h__incl.md5 @@ -1 +1 @@ -4b8c2556090cdbb9271b9fbe97d7cf5b \ No newline at end of file +2dcaa807e109473ed5b8776ffa4971c6 \ No newline at end of file diff --git a/Doc/html/bit__access_8h__incl.png b/Doc/html/bit__access_8h__incl.png index 6e25770119bfb439eb0d6be2ab61fa27cba69f31..62b90d70c077c18f27eab9d18fb2d3bd22017b78 100644 GIT binary patch literal 4374 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 literal 4026 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 diff --git a/Doc/html/bit__access_8h_source.html b/Doc/html/bit__access_8h_source.html index 37a5171..9098471 100644 --- a/Doc/html/bit__access_8h_source.html +++ b/Doc/html/bit__access_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
- + - +
- - diff --git a/Doc/html/classes.html b/Doc/html/classes.html index 29c6937..23924c7 100644 --- a/Doc/html/classes.html +++ b/Doc/html/classes.html @@ -3,7 +3,7 @@ - + MyLibs: Class Index @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
-
diff --git a/Doc/html/clipboard.js b/Doc/html/clipboard.js index 9da9f3c..42c1fb0 100644 --- a/Doc/html/clipboard.js +++ b/Doc/html/clipboard.js @@ -28,8 +28,8 @@ SOFTWARE. */ let clipboard_title = "Copy to clipboard" -let clipboard_icon = `` -let clipboard_successIcon = `` +let clipboard_icon = `` +let clipboard_successIcon = `` let clipboard_successDuration = 1000 $(function() { diff --git a/Doc/html/closed.png b/Doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/Doc/html/darkmode_toggle.js b/Doc/html/darkmode_toggle.js index 9c1ca07..b9c7364 100644 --- a/Doc/html/darkmode_toggle.js +++ b/Doc/html/darkmode_toggle.js @@ -74,15 +74,10 @@ class DarkModeToggle extends HTMLElement { mainMenuVisible = menuStyle.display!=='none' } const searchBoxPos1 = document.getElementById("searchBoxPos1"); - const buttonLi = document.getElementById('toggle-dark-mode'); - if (buttonLi) { - buttonLi.parentNode.removeChild(buttonLi); - } if (searchBox) { // (1) search box visible searchBox.parentNode.appendChild(toggleButton) } else if (navRow1) { // (2) no search box, static menu bar const li = document.createElement('li'); - li.id = 'toggle-dark-mode'; li.style = 'float: right;' li.appendChild(toggleButton); toggleButton.style = 'width: 24px; height: 25px; padding-top: 11px; float: right;'; @@ -90,7 +85,6 @@ class DarkModeToggle extends HTMLElement { row.appendChild(li) } else if (mainMenu && mainMenuVisible) { // (3) no search box + dynamic menu bar expanded const li = document.createElement('li'); - li.id = 'toggle-dark-mode'; li.style = 'float: right;' li.appendChild(toggleButton); toggleButton.style = 'width: 14px; height: 36px; padding-top: 10px; float: right;'; diff --git a/Doc/html/dir_000002_000000.html b/Doc/html/dir_000002_000000.html index 39823a3..b7ab20a 100644 --- a/Doc/html/dir_000002_000000.html +++ b/Doc/html/dir_000002_000000.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src -> Inc Relation +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src -> Inc Relation + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -

Src → Inc Relation

File in MyLibsGeneral/SrcIncludes file in MyLibsGeneral/Inc
__general_spi.cgeneral_gpio.h
__general_uart.cgeneral_gpio.h
general_gpio.cgeneral_gpio.h
general_tim.cgeneral_tim.h
- -
diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html index 2a88587..4586fc7 100644 --- a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src Directory Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src Directory Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Src Directory Reference
-
Directory dependency graph for Src:
+
+ + Directory dependency graph for Src:
- - - - - + + + + + + + - + + +

+

Files

 
__general_flash.c
 
__general_spi.c
 
__general_uart.c
 
general_gpio.c
 __general_flash.c
 
 __general_spi.c
 
 __general_uart.c
 
 general_gpio.c
 Модуль для инициализации портов и работы с ними.
 
general_tim.c
 
 general_tim.c
 Модуль для инициализации таймеров и работы с ними.
 
- - diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map index 649ed93..783d929 100644 --- a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 index 26d1cc5..1cbce3c 100644 --- a/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 +++ b/Doc/html/dir_9c80311a018e1f8cfb6659b73d634be4_dep.md5 @@ -1 +1 @@ -387bb26d88dde230c0675e9727f07c60 \ No newline at end of file +84dda0250b351e30a8ed843193ca7a92 \ No newline at end of file diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html index 480c66b..ceb2fd5 100644 --- a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral Directory Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral Directory Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
MyLibsGeneral Directory Reference
-
Directory dependency graph for MyLibsGeneral:
+
+ + Directory dependency graph for MyLibsGeneral:
- - - + + + +

+

Directories

 
Inc
 
Src
 Inc
 
 Src
 
- - + +

+

Files

 
mainpage.h
 mainpage.h
 
- - diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map index 397ee7e..9406b23 100644 --- a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 index e96a2a1..9534313 100644 --- a/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 +++ b/Doc/html/dir_9e11e9a41112194af3eee6cc728f9515_dep.md5 @@ -1 +1 @@ -a1466c7fe0f5fc90492120d9a3a88167 \ No newline at end of file +9178b7f2911a2208010657da2be83ea6 \ No newline at end of file diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html index 62931e7..8a9cc60 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc Directory Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc Directory Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Inc Directory Reference
-
Directory dependency graph for Inc:
+
+ + Directory dependency graph for Inc:
- - - - - + + + + + + + - + + - + + - + + - + + - + + - + + - + + - + + +

+

Files

 
__general_flash.h
 
__general_spi.h
 
__general_uart.h
 
bit_access.h
 __general_flash.h
 
 __general_spi.h
 
 __general_uart.h
 
 bit_access.h
 Заголочный файл для дефайнов битового доступа.
 
evolve_optimizer.h
 
 evolve_optimizer.h
 Заголовочный файл для адаптивного подбора параметров
 
general_gpio.h
 
 general_gpio.h
 Заголовочный файл для модуля инициализации портов и работы с ними.
 
general_tim.h
 
 general_tim.h
 Заголовочный файл для модуля инициализации таймеров и работы с ними.
 
mylibs_config.h
 
 mylibs_config.h
 Конфигурации для библиотек MyLibs.
 
mylibs_defs.h
 
 mylibs_defs.h
 Заголочный файл для дефайнов библиотеки MyLibsGeneral.
 
mylibs_include.h
 
 mylibs_include.h
 Заголочный файл для всех библиотек
 
trace.h
 
 trace.h
 Заголочный файл для работы с трассировкой.
 
trackers.h
 
 trackers.h
 Заголочный файл для работы с трекерами Trackers defines.
 
- - diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map index 8f7cb36..e44b344 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.map @@ -1,4 +1,4 @@ - + diff --git a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 index f594f8b..bb4da48 100644 --- a/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 +++ b/Doc/html/dir_eb423fea8a9c4b9b32b922020ec391e1_dep.md5 @@ -1 +1 @@ -51bda8bf2e3b4eafeabf6cf3520068b7 \ No newline at end of file +88eae9c3335ed0a89cb7c7066ad193a7 \ No newline at end of file diff --git a/Doc/html/doc.svg b/Doc/html/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/Doc/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/Doc/html/docd.svg b/Doc/html/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/Doc/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/Doc/html/doxygen.css b/Doc/html/doxygen.css index 59138c1..7dbff89 100644 --- a/Doc/html/doxygen.css +++ b/Doc/html/doxygen.css @@ -1,12 +1,11 @@ -/* The standard CSS for doxygen 1.14.0*/ +/* The standard CSS for doxygen 1.10.0*/ html { /* page base colors */ --page-background-color: white; --page-foreground-color: black; --page-link-color: #3D578C; ---page-visited-link-color: #3D578C; ---page-external-link-color: #334975; +--page-visited-link-color: #4665A2; /* index */ --index-odd-item-bg-color: #F8F9FC; @@ -17,50 +16,46 @@ html { /* header */ --header-background-color: #F9FAFC; --header-separator-color: #C4CFE5; ---group-header-separator-color: #D9E0EE; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; --group-header-color: #354C7B; --inherit-header-color: gray; --footer-foreground-color: #2A3D61; ---footer-logo-width: 75px; +--footer-logo-width: 104px; --citation-label-color: #334975; --glow-color: cyan; --title-background-color: white; ---title-separator-color: #C4CFE5; +--title-separator-color: #5373B4; --directory-separator-color: #9CAFD4; --separator-color: #4A6AAA; --blockquote-background-color: #F7F8FB; --blockquote-border-color: #9CAFD4; ---scrollbar-thumb-color: #C4CFE5; +--scrollbar-thumb-color: #9CAFD4; --scrollbar-background-color: #F9FAFC; --icon-background-color: #728DC1; --icon-foreground-color: white; -/* --icon-doc-image: url('doc.svg'); --icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg');*/ ---icon-folder-open-fill-color: #C4CFE5; ---icon-folder-fill-color: #D8DFEE; ---icon-folder-border-color: #4665A2; ---icon-doc-fill-color: #D8DFEE; ---icon-doc-border-color: #4665A2; +--icon-folder-closed-image: url('folderclosed.svg'); /* brief member declaration list */ --memdecl-background-color: #F9FAFC; --memdecl-separator-color: #DEE4F0; --memdecl-foreground-color: #555; --memdecl-template-color: #4665A2; ---memdecl-border-color: #D5DDEC; /* detailed member list */ --memdef-border-color: #A8B8D9; --memdef-title-background-color: #E2E8F2; ---memdef-proto-background-color: #EEF1F7; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; --memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); --memdef-doc-background-color: white; --memdef-param-name-color: #602020; --memdef-template-color: #4665A2; @@ -79,34 +74,29 @@ html { /** navigation bar/tree/menu */ --nav-background-color: #F9FAFC; --nav-foreground-color: #364D7C; ---nav-border-color: #C4CFE5; ---nav-breadcrumb-separator-color: #C4CFE5; ---nav-breadcrumb-active-bg: #EEF1F7; ---nav-breadcrumb-color: #354C7B; ---nav-breadcrumb-border-color: #E1E7F2; ---nav-splitbar-bg-color: #DCE2EF; ---nav-splitbar-handle-color: #9CAFD4; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); --nav-font-size-level1: 13px; --nav-font-size-level2: 10px; --nav-font-size-level3: 9px; --nav-text-normal-color: #283A5D; --nav-text-hover-color: white; --nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); --nav-menu-button-color: #364D7C; --nav-menu-background-color: white; --nav-menu-foreground-color: #555555; ---nav-menu-active-bg: #DCE2EF; ---nav-menu-active-color: #9CAFD4; --nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #B6C4DF; ---nav-arrow-selected-color: #90A5CE; - -/* sync icon */ ---sync-icon-border-color: #C4CFE5; ---sync-icon-background-color: #F9FAFC; ---sync-icon-selected-background-color: #EEF1F7; ---sync-icon-color: #C4CFE5; ---sync-icon-selected-color: #6884BD; +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; /* table of contents */ --toc-background-color: #F4F6FA; @@ -117,20 +107,18 @@ html { /** search field */ --search-background-color: white; --search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); --search-active-color: black; ---search-filter-background-color: rgba(255,255,255,.7); ---search-filter-backdrop-filter: blur(4px); +--search-filter-background-color: #F9FAFC; --search-filter-foreground-color: black; ---search-filter-border-color: rgba(150,150,150,.4); +--search-filter-border-color: #90A5CE; --search-filter-highlight-text-color: white; --search-filter-highlight-bg-color: #3D578C; --search-results-foreground-color: #425E97; ---search-results-background-color: rgba(255,255,255,.8); ---search-results-backdrop-filter: blur(4px); ---search-results-border-color: rgba(150,150,150,.4); ---search-box-border-color: #B6C4DF; ---search-close-icon-bg-color: #A0A0A0; ---search-close-icon-fg-color: white; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; /** code fragments */ --code-keyword-color: #008000; @@ -159,21 +147,23 @@ html { --fragment-lineno-link-hover-bg-color: #C8C8C8; --fragment-copy-ok-color: #2EC82E; --tooltip-foreground-color: black; ---tooltip-background-color: rgba(255,255,255,0.8); ---tooltip-arrow-background-color: white; ---tooltip-border-color: rgba(150,150,150,0.7); ---tooltip-backdrop-filter: blur(3px); +--tooltip-background-color: white; +--tooltip-border-color: gray; --tooltip-doc-color: grey; --tooltip-declaration-color: #006318; --tooltip-link-color: #4665A2; ---tooltip-shadow: 0 4px 8px 0 rgba(0,0,0,.25); +--tooltip-shadow: 1px 1px 7px gray; --fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); /** font-family */ ---font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-normal: Roboto,sans-serif; --font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; --font-family-search: Arial,Verdana,sans-serif; --font-family-icon: Arial,Helvetica; @@ -208,8 +198,7 @@ html.dark-mode { --page-background-color: black; --page-foreground-color: #C9D1D9; --page-link-color: #90A5CE; ---page-visited-link-color: #90A5CE; ---page-external-link-color: #A3B4D7; +--page-visited-link-color: #A3B4D7; /* index */ --index-odd-item-bg-color: #0B101A; @@ -220,7 +209,8 @@ html.dark-mode { /* header */ --header-background-color: #070B11; --header-separator-color: #141C2E; ---group-header-separator-color: #1D2A43; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; --group-header-color: #90A5CE; --inherit-header-color: #A0A0A0; @@ -230,36 +220,35 @@ html.dark-mode { --glow-color: cyan; --title-background-color: #090D16; ---title-separator-color: #212F4B; +--title-separator-color: #354C79; --directory-separator-color: #283A5D; --separator-color: #283A5D; --blockquote-background-color: #101826; --blockquote-border-color: #283A5D; ---scrollbar-thumb-color: #2C3F65; +--scrollbar-thumb-color: #283A5D; --scrollbar-background-color: #070B11; --icon-background-color: #334975; --icon-foreground-color: #C4CFE5; ---icon-folder-open-fill-color: #4665A2; ---icon-folder-fill-color: #5373B4; ---icon-folder-border-color: #C4CFE5; ---icon-doc-fill-color: #6884BD; ---icon-doc-border-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); /* brief member declaration list */ --memdecl-background-color: #0B101A; --memdecl-separator-color: #2C3F65; --memdecl-foreground-color: #BBB; --memdecl-template-color: #7C95C6; ---memdecl-border-color: #233250; /* detailed member list */ --memdef-border-color: #233250; --memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); --memdef-proto-background-color: #19243A; --memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); --memdef-doc-background-color: black; --memdef-param-name-color: #D28757; --memdef-template-color: #7C95C6; @@ -278,34 +267,29 @@ html.dark-mode { /** navigation bar/tree/menu */ --nav-background-color: #101826; --nav-foreground-color: #364D7C; ---nav-border-color: #212F4B; ---nav-breadcrumb-separator-color: #212F4B; ---nav-breadcrumb-active-bg: #1D2A43; ---nav-breadcrumb-color: #90A5CE; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); --nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-bg-color: #283A5D; ---nav-splitbar-handle-color: #4665A2; +--nav-splitbar-image: url('splitbard.png'); --nav-font-size-level1: 13px; --nav-font-size-level2: 10px; --nav-font-size-level3: 9px; --nav-text-normal-color: #B6C4DF; --nav-text-hover-color: #DCE2EF; --nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); --nav-menu-button-color: #B6C4DF; --nav-menu-background-color: #05070C; --nav-menu-foreground-color: #BBBBBB; ---nav-menu-active-bg: #1D2A43; ---nav-menu-active-color: #C9D3E7; --nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #4665A2; ---nav-arrow-selected-color: #6884BD; - -/* sync icon */ ---sync-icon-border-color: #212F4B; ---sync-icon-background-color: #101826; ---sync-icon-selected-background-color: #1D2A43; ---sync-icon-color: #4665A2; ---sync-icon-selected-color: #5373B4; +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; /* table of contents */ --toc-background-color: #151E30; @@ -316,20 +300,18 @@ html.dark-mode { /** search field */ --search-background-color: black; --search-foreground-color: #C5C5C5; ---search-active-color: #F5F5F5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; --search-filter-background-color: #101826; --search-filter-foreground-color: #90A5CE; ---search-filter-backdrop-filter: none; --search-filter-border-color: #7C95C6; --search-filter-highlight-text-color: #BCC9E2; --search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: black; +--search-results-background-color: #101826; --search-results-foreground-color: #90A5CE; ---search-results-backdrop-filter: none; ---search-results-border-color: #334975; ---search-box-border-color: #334975; ---search-close-icon-bg-color: #909090; ---search-close-icon-fg-color: black; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; /** code fragments */ --code-keyword-color: #CC99CD; @@ -359,20 +341,22 @@ html.dark-mode { --fragment-copy-ok-color: #0EA80E; --tooltip-foreground-color: #C9D1D9; --tooltip-background-color: #202020; ---tooltip-arrow-background-color: #202020; ---tooltip-backdrop-filter: none; --tooltip-border-color: #C9D1D9; --tooltip-doc-color: #D9E1E9; --tooltip-declaration-color: #20C348; --tooltip-link-color: #79C0FF; --tooltip-shadow: none; --fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); /** font-family */ ---font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-normal: Roboto,sans-serif; --font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; --font-family-search: Arial,Verdana,sans-serif; --font-family-icon: Arial,Helvetica; @@ -403,8 +387,8 @@ html.dark-mode { } body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); + background-color: var(--page-background-color); + color: var(--page-foreground-color); } body, table, div, p, dl { @@ -414,22 +398,13 @@ body, table, div, p, dl { line-height: 22px; } -body.resizing { - user-select: none; - -webkit-user-select: none; -} - -#doc-content { - scrollbar-width: thin; -} - /* @group Heading Levels */ .title { font-family: var(--font-family-normal); line-height: 28px; - font-size: 160%; - font-weight: 400; + font-size: 150%; + font-weight: bold; margin: 10px 2px; } @@ -438,10 +413,7 @@ h1.groupheader { } h2.groupheader { - box-shadow: 12px 0 var(--page-background-color), - -12px 0 var(--page-background-color), - 12px 1px var(--group-header-separator-color), - -12px 1px var(--group-header-separator-color); + border-bottom: 1px solid var(--group-header-separator-color); color: var(--group-header-color); font-size: 150%; font-weight: normal; @@ -451,13 +423,6 @@ h2.groupheader { width: 100%; } -td h2.groupheader { - box-shadow: 13px 0 var(--page-background-color), - -13px 0 var(--page-background-color), - 13px 1px var(--group-header-separator-color), - -13px 1px var(--group-header-separator-color); -} - h3.groupheader { font-size: 100%; } @@ -484,8 +449,8 @@ p.startli, p.startdd { } th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; + font-size: 100%; + font-weight: 700; } p.starttd { @@ -530,11 +495,9 @@ h3.version { } div.navtab { - margin-right: 6px; - padding-right: 6px; + padding-right: 15px; text-align: right; line-height: 110%; - background-color: var(--nav-background-color); } div.navtab table { @@ -547,10 +510,19 @@ td.navtab { } td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; - border-radius: 0 6px 6px 0; - background-color: var(--nav-menu-active-bg); +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; } div.qindex{ @@ -625,11 +597,16 @@ a { color: var(--page-visited-link-color); } -span.label a:hover { +a:hover { text-decoration: none; background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); } +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + a.el { font-weight: bold; } @@ -637,12 +614,12 @@ a.el { a.elRef { } -a.el, a.el:visited, a.code, a.code:visited, a.line, a.line:visited { - color: var(--page-link-color); +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--page-external-link-color); + color: var(--code-external-link-color); } a.code.hl_class { /* style for links to class names in code snippets */ } @@ -678,125 +655,103 @@ dl.el { margin-left: -1cm; } -ul.check { - list-style:none; - text-indent: -16px; - padding-left: 38px; -} -li.unchecked:before { - content: "\2610\A0"; -} -li.checked:before { - content: "\2611\A0"; -} - -ol { - text-indent: 0px; -} - ul { - text-indent: 0px; - overflow: visible; + overflow: visible; } ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; } #side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ } #main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ } .fragment { - text-align: left; - direction: ltr; - overflow-x: auto; - overflow-y: hidden; - position: relative; - min-height: 12px; - margin: 10px 0px; - padding: 10px 10px; - border: 1px solid var(--fragment-border-color); - border-radius: 4px; - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } pre.fragment { - word-wrap: break-word; - font-size: 10pt; - line-height: 125%; - font-family: var(--font-family-monospace); -} - -span.tt { - white-space: pre; - font-family: var(--font-family-monospace); + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); } .clipboard { - width: 24px; - height: 24px; - right: 5px; - top: 5px; - opacity: 0; - position: absolute; - display: inline; - overflow: hidden; - justify-content: center; - align-items: center; - cursor: pointer; + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; } .clipboard.success { - border: 1px solid var(--fragment-foreground-color); - border-radius: 4px; + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; } .fragment:hover .clipboard, .clipboard.success { - opacity: .4; + opacity: .28; } .clipboard:hover, .clipboard.success { - opacity: 1 !important; + opacity: 1 !important; } .clipboard:active:not([class~=success]) svg { - transform: scale(.91); + transform: scale(.91); } .clipboard.success svg { - fill: var(--fragment-copy-ok-color); + fill: var(--fragment-copy-ok-color); } .clipboard.success { - border-color: var(--fragment-copy-ok-color); + border-color: var(--fragment-copy-ok-color); } div.line { font-family: var(--font-family-monospace); - font-size: 13px; + font-size: 13px; min-height: 13px; line-height: 1.2; - text-wrap: wrap; - word-break: break-all; + text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ word-wrap: break-word; /* IE 5.5+ */ - text-indent: -62px; - padding-left: 62px; + text-indent: -53px; + padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; @@ -812,8 +767,8 @@ div.line { } div.line:after { - content:"\000A"; - white-space: pre; + content:"\000A"; + white-space: pre; } div.line.glow { @@ -822,67 +777,26 @@ div.line.glow { } span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; display: inline-block; width: 12px; height: 12px; - margin-left: 4px; - margin-right: 1px; -} - -span.foldnone { - display: inline-block; - position: relative; - cursor: pointer; - user-select: none; -} - -span.fold.plus, span.fold.minus { - width: 10px; - height: 10px; - background-color: var(--fragment-background-color); - position: relative; - border: 1px solid var(--fold-line-color); - margin-right: 1px; -} - -span.fold.plus::before, span.fold.minus::before { - content: ''; - position: absolute; - background-color: var(--fold-line-color); -} - -span.fold.plus::before { - width: 2px; - height: 6px; - top: 2px; - left: 4px; -} - -span.fold.plus::after { - content: ''; - position: absolute; - width: 6px; - height: 2px; - top: 4px; - left: 2px; - background-color: var(--fold-line-color); -} - -span.fold.minus::before { - width: 6px; - height: 2px; - top: 4px; - left: 2px; + background-repeat:no-repeat; + background-position:center; } span.lineno { padding-right: 4px; - margin-right: 9px; + margin-right: 9px; text-align: right; border-right: 2px solid var(--fragment-lineno-border-color); color: var(--fragment-lineno-foreground-color); background-color: var(--fragment-lineno-background-color); - white-space: pre; + white-space: pre; } span.lineno a, span.lineno a:visited { color: var(--fragment-lineno-link-fg-color); @@ -904,27 +818,18 @@ span.lineno a:hover { } div.classindex ul { - list-style: none; - padding-left: 0; + list-style: none; + padding-left: 0; } div.classindex span.ai { - display: inline-block; + display: inline-block; } div.groupHeader { - box-shadow: 13px 0 var(--page-background-color), - -13px 0 var(--page-background-color), - 13px 1px var(--group-header-separator-color), - -13px 1px var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 110%; - font-weight: 500; - margin-left: 0px; - margin-top: 0em; - margin-bottom: 6px; - padding-top: 8px; - padding-bottom: 4px; + margin-left: 16px; + margin-top: 12px; + font-weight: bold; } div.groupText { @@ -934,13 +839,13 @@ div.groupText { body { color: var(--page-foreground-color); - margin: 0; + margin: 0; } div.contents { margin-top: 10px; margin-left: 12px; - margin-right: 12px; + margin-right: 8px; } p.formulaDsp { @@ -960,9 +865,9 @@ img.formulaInl, img.inline { div.center { text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; } div.center img { @@ -1037,10 +942,10 @@ span.vhdllogic { } blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; } /* @end */ @@ -1062,14 +967,9 @@ th.dirtab { } hr { + height: 0px; border: none; - margin-top: 16px; - margin-bottom: 16px; - height: 1px; - box-shadow: 13px 0 var(--page-background-color), - -13px 0 var(--page-background-color), - 13px 1px var(--group-header-separator-color), - -13px 1px var(--group-header-separator-color); + border-top: 1px solid var(--separator-color); } hr.footer { @@ -1084,6 +984,14 @@ table.memberdecls { } .memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } @@ -1093,23 +1001,13 @@ table.memberdecls { box-shadow: 0 0 15px var(--glow-color); } -.memberdecls tr[class^='memitem'] { - font-family: var(--font-family-monospace); -} - .mdescLeft, .mdescRight, -.memItemLeft, .memItemRight { - padding-top: 2px; - padding-bottom: 2px; -} - -.memTemplParams { - padding-left: 10px; - padding-top: 5px; -} - -.memItemLeft, .memItemRight, .memTemplParams { +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { @@ -1117,104 +1015,27 @@ table.memberdecls { color: var(--memdecl-foreground-color); } -tr[class^='memdesc'] { - box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,.075); +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; } -.mdescLeft { - border-left: 1px solid var(--memdecl-border-color); - border-bottom: 1px solid var(--memdecl-border-color); +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; } -.mdescRight { - border-right: 1px solid var(--memdecl-border-color); - border-bottom: 1px solid var(--memdecl-border-color); +.memItemRight, .memTemplItemRight { + width: 100%; } .memTemplParams { color: var(--memdecl-template-color); - white-space: nowrap; + white-space: nowrap; font-size: 80%; - border-left: 1px solid var(--memdecl-border-color); - border-right: 1px solid var(--memdecl-border-color); } -td.ititle { - border: 1px solid var(--memdecl-border-color); - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding-left: 10px; -} - -tr:not(:first-child) > td.ititle { - border-top: 0; - border-radius: 0; -} - -.memItemLeft { - white-space: nowrap; - border-left: 1px solid var(--memdecl-border-color); - border-bottom: 1px solid var(--memdecl-border-color); - padding-left: 10px; - transition: none; -} - -.memItemRight { - width: 100%; - border-right: 1px solid var(--memdecl-border-color); - border-bottom: 1px solid var(--memdecl-border-color); - padding-right: 10px; - transition: none; -} - -tr.heading + tr[class^='memitem'] td.memItemLeft, -tr.groupHeader + tr[class^='memitem'] td.memItemLeft, -tr.inherit_header + tr[class^='memitem'] td.memItemLeft { - border-top: 1px solid var(--memdecl-border-color); - border-top-left-radius: 4px; -} - -tr.heading + tr[class^='memitem'] td.memItemRight, -tr.groupHeader + tr[class^='memitem'] td.memItemRight, -tr.inherit_header + tr[class^='memitem'] td.memItemRight { - border-top: 1px solid var(--memdecl-border-color); - border-top-right-radius: 4px; -} - -tr.heading + tr[class^='memitem'] td.memTemplParams, -tr.heading + tr td.ititle, -tr.groupHeader + tr[class^='memitem'] td.memTemplParams, -tr.groupHeader + tr td.ititle, -tr.inherit_header + tr[class^='memitem'] td.memTemplParams { - border-top: 1px solid var(--memdecl-border-color); - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} - -table.memberdecls tr:last-child td.memItemLeft, -table.memberdecls tr:last-child td.mdescLeft, -table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemLeft, -table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemLeft, -table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescLeft, -table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescLeft { - border-bottom-left-radius: 4px; -} - -table.memberdecls tr:last-child td.memItemRight, -table.memberdecls tr:last-child td.mdescRight, -table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemRight, -table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemRight, -table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescRight, -table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescRight { - border-bottom-right-radius: 4px; -} - -tr.template .memItemLeft, tr.template .memItemRight { - border-top: none; - padding-top: 0; -} - - /* @end */ /* @group Member Details */ @@ -1229,43 +1050,24 @@ tr.template .memItemLeft, tr.template .memItemRight { border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; - background-color: var(--memdef-proto-background-color); + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); line-height: 1.25; - font-family: var(--font-family-monospace); - font-weight: 500; - font-size: 16px; + font-weight: 300; float:left; - box-shadow: 0 10px 0 -1px var(--memdef-proto-background-color), - 0 2px 8px 0 rgba(0,0,0,.075); - position: relative; -} - -.memtitle:after { - content: ''; - display: block; - background: var(--memdef-proto-background-color); - height: 10px; - bottom: -10px; - left: 0px; - right: -14px; - position: absolute; - border-top-right-radius: 6px; } .permalink { - font-family: var(--font-family-monospace); - font-weight: 500; - line-height: 1.25; - font-size: 16px; - display: inline-block; - vertical-align: middle; + font-size: 65%; + display: inline-block; + vertical-align: middle; } .memtemplate { font-size: 80%; color: var(--memdef-template-color); - font-family: var(--font-family-monospace); font-weight: normal; margin-left: 9px; } @@ -1278,21 +1080,22 @@ tr.template .memItemLeft, tr.template .memItemRight { padding: 0; margin-bottom: 10px; margin-right: 5px; - display: table !important; - width: 100%; - box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); - border-radius: 4px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; } .memitem.glow { - box-shadow: 0 0 15px var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); } .memname { - font-family: var(--font-family-monospace); - font-size: 13px; - font-weight: 400; - margin-left: 6px; + font-weight: 400; + margin-left: 6px; } .memname td { @@ -1300,39 +1103,53 @@ tr.template .memItemLeft, tr.template .memItemRight { } .memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - background-color: var(--memdef-proto-background-color); - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; } .overload { - font-family: var(--font-family-monospace); + font-family: var(--font-family-monospace); font-size: 65%; } .memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } dl.reflist dt { - padding: 5px; + padding: 5px; } dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; + margin: 0px 0px 10px 0px; + padding: 5px; } .paramkey { @@ -1347,9 +1164,9 @@ dl.reflist dd { .paramname { white-space: nowrap; - padding: 0px; - padding-bottom: 1px; - margin-left: 2px; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } .paramname em { @@ -1363,23 +1180,23 @@ dl.reflist dd { } .params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; + margin-left: 0px; + padding-left: 0px; } .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; + font-weight: bold; + vertical-align: top; } .params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; + font-style: italic; + vertical-align: top; } .params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; + font-family: var(--font-family-monospace); + vertical-align: top; } table.mlabels { @@ -1398,15 +1215,15 @@ td.mlabels-right { } span.mlabels { - margin-left: 8px; + margin-left: 8px; } span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); text-shadow: none; color: var(--label-foreground-color); margin-right: 4px; @@ -1424,37 +1241,39 @@ span.mlabel { /* these are for tree view inside a (index) page */ div.directory { - margin: 10px 0px; - width: 100%; + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; } .directory table { - border-collapse:collapse; + border-collapse:collapse; } .directory td { - margin: 0px; - padding: 0px; + margin: 0px; + padding: 0px; vertical-align: top; } .directory td.entry { - white-space: nowrap; - padding-right: 6px; + white-space: nowrap; + padding-right: 6px; padding-top: 3px; } .directory td.entry a { - outline:none; + outline:none; } .directory td.entry a img { - border: none; + border: none; } .directory td.desc { - width: 100%; - padding-left: 6px; + width: 100%; + padding-left: 6px; padding-right: 6px; padding-top: 3px; border-left: 1px solid rgba(0,0,0,0.05); @@ -1475,178 +1294,90 @@ div.directory { } .directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; } .directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; + cursor: pointer; + padding-left: 2px; + padding-right: 2px; color: var(--page-link-color); } .arrow { - color: var(--nav-background-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 14px; - transition: opacity 0.3s ease; -} - -span.arrowhead { - position: relative; - padding: 0; - margin: 0 0 0 2px; - display: inline-block; - width: 5px; - height: 5px; - border-right: 2px solid var(--nav-arrow-color); - border-bottom: 2px solid var(--nav-arrow-color); - transform: rotate(-45deg); - transition: transform 0.3s ease; -} - -span.arrowhead.opened { - transform: rotate(45deg); -} - -.selected span.arrowhead { - border-right: 2px solid var(--nav-arrow-selected-color); - border-bottom: 2px solid var(--nav-arrow-selected-color); + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; } .icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; } .icona { - width: 24px; - height: 22px; - display: inline-block; + width: 24px; + height: 22px; + display: inline-block; } -.iconfolder { - width: 24px; - height: 18px; - margin-top: 6px; - vertical-align:top; - display: inline-block; - position: relative; +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; } .icondoc { - width: 24px; - height: 18px; - margin-top: 3px; - vertical-align:top; - display: inline-block; - position: relative; + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; } -.folder-icon { - width: 16px; - height: 11px; - background-color: var(--icon-folder-fill-color); - border: 1px solid var(--icon-folder-border-color); - border-radius: 0 2px 2px 2px; - position: relative; - box-sizing: content-box; -} - -.folder-icon::after { - content: ''; - position: absolute; - top: 2px; - left: -1px; - width: 16px; - height: 7px; - background-color: var(--icon-folder-open-fill-color); - border: 1px solid var(--icon-folder-border-color); - border-radius: 7px 7px 2px 2px; - transform-origin: top left; - opacity: 0; - transition: all 0.3s linear; -} - -.folder-icon::before { - content: ''; - position: absolute; - top: -3px; - left: -1px; - width: 6px; - height: 2px; - background-color: var(--icon-folder-fill-color); - border-top: 1px solid var(--icon-folder-border-color); - border-left: 1px solid var(--icon-folder-border-color); - border-right: 1px solid var(--icon-folder-border-color); - border-radius: 2px 2px 0 0; -} - -.folder-icon.open::after { - top: 3px; - opacity: 1; -} - -.doc-icon { - left: 6px; - width: 12px; - height: 16px; - background-color: var(--icon-doc-border-color); - clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); - position: relative; - display: inline-block; -} -.doc-icon::before { - content: ""; - left: 1px; - top: 1px; - width: 10px; - height: 14px; - background-color: var(--icon-doc-fill-color); - clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); - position: absolute; - box-sizing: border-box; -} -.doc-icon::after { - content: ""; - left: 7px; - top: 0px; - width: 3px; - height: 3px; - background-color: transparent; - position: absolute; - border: 1px solid var(--icon-doc-border-color); -} - - - - /* @end */ div.dynheader { - margin-top: 8px; + margin-top: 8px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; @@ -1655,13 +1386,6 @@ div.dynheader { user-select: none; } -span.dynarrow { - position: relative; - display: inline-block; - width: 12px; - bottom: 1px; -} - address { font-style: normal; color: var(--footer-foreground-color); @@ -1673,8 +1397,8 @@ table.doxtable caption { table.doxtable { border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; + margin-top: 4px; + margin-bottom: 4px; } table.doxtable td, table.doxtable th { @@ -1691,145 +1415,127 @@ table.doxtable th { } table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { - padding: 3px 7px 2px; + padding: 3px 7px 2px; } -.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; } .fieldtable td.fieldname { - padding-top: 3px; + padding-top: 3px; } -.fieldtable td.fieldinit { - padding-top: 3px; - text-align: right; -} - - .fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); } .fieldtable td.fielddoc p:first-child { - margin-top: 0px; + margin-top: 0px; } .fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; + margin-bottom: 2px; } .fieldtable tr:last-child td { - border-bottom: none; + border-bottom: none; } .fieldtable th { - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); } -/* ----------- navigation breadcrumb styling ----------- */ -#nav-path ul { - height: 30px; - line-height: 30px; - color: var(--nav-text-normal-color); +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; overflow: hidden; - margin: 0px; - padding-left: 4px; - background-image: none; - background: var(--page-background-color); - border-bottom: 1px solid var(--nav-breadcrumb-separator-color); - font-size: var(--nav-font-size-level1); - font-family: var(--font-family-nav); - position: relative; - z-index: 100; + font-size: 13px; } -#main-nav { - border-bottom: 1px solid var(--nav-border-color); +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; } -.navpath li { +.navpath li +{ list-style-type:none; float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; color: var(--nav-foreground-color); } -.navpath li.footer { - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - font-size: 8pt; - color: var(--footer-foreground-color); +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; } -#nav-path li.navelem { - background-image: none; - display: flex; - align-items: center; - padding-left: 15px; +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } -.navpath li.navelem a { - text-shadow: none; - display: inline-block; - color: var(--nav-breadcrumb-color); - position: relative; - top: 0px; - height: 30px; - margin-right: -20px; +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; } -#nav-path li.navelem:after { - content: ''; - display: inline-block; - position: relative; - top: 0; - right: -15px; - width: 30px; - height: 30px; - transform: scaleX(0.5) scale(0.707) rotate(45deg); - z-index: 10; - background: var(--page-background-color); - box-shadow: 2px -2px 0 2px var(--nav-breadcrumb-separator-color); - border-radius: 0 5px 0 50px; -} - -#nav-path li.navelem:first-child { - margin-left: -6px; -} - -#nav-path li.navelem:hover, -#nav-path li.navelem:hover:after { - background-color: var(--nav-breadcrumb-active-bg); -} - -/* ---------------------- */ div.summary { @@ -1847,14 +1553,14 @@ div.summary a table.classindex { - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; } div.ingroups @@ -1871,8 +1577,10 @@ div.ingroups a div.header { - margin: 0px; + background-image: var(--header-gradient-image); + background-repeat:repeat-x; background-color: var(--header-background-color); + margin: 0px; border-bottom: 1px solid var(--header-separator-color); } @@ -1881,105 +1589,166 @@ div.headertitle padding: 5px 5px 5px 10px; } +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + dl { - padding: 0 0 0 0; + padding: 0 0 0 0; } -dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { - font-weight: bold !important; +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; } -dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, -dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { - padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; } -dl.section dd { - margin-bottom: 2px; +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; } -dl.warning, dl.attention, dl.important { - background: var(--warning-color-bg); - border-left: 8px solid var(--warning-color-hl); - color: var(--warning-color-text); -} - -dl.warning dt, dl.attention dt, dl.important dt { - color: var(--warning-color-hl); -} - -dl.note, dl.remark { - background: var(--note-color-bg); - border-left: 8px solid var(--note-color-hl); - color: var(--note-color-text); -} - -dl.note dt, dl.remark dt { - color: var(--note-color-hl); -} - -dl.todo { - background: var(--todo-color-bg); - border-left: 8px solid var(--todo-color-hl); - color: var(--todo-color-text); -} - -dl.todo dt { - color: var(--todo-color-hl); -} - -dl.test { - background: var(--test-color-bg); - border-left: 8px solid var(--test-color-hl); - color: var(--test-color-text); -} - -dl.test dt { - color: var(--test-color-hl); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.bug { - background: var(--bug-color-bg); - border-left: 8px solid var(--bug-color-hl); - color: var(--bug-color-text); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; } dl.deprecated { - background: var(--deprecated-color-bg); - border-left: 8px solid var(--deprecated-color-hl); - color: var(--deprecated-color-text); + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); } dl.deprecated dt a { - color: var(--deprecated-color-hl) !important; + color: var(--deprecated-color-hl) !important; } -dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, -dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, -dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { - margin-inline-start: 0px; +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; } dl.invariant, dl.pre, dl.post { - background: var(--invariant-color-bg); - border-left: 8px solid var(--invariant-color-hl); - color: var(--invariant-color-text); + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); } dl.invariant dt, dl.pre dt, dl.post dt { - color: var(--invariant-color-hl); + color: var(--invariant-color-hl); } @@ -2002,27 +1771,22 @@ dl.invariant dt, dl.pre dt, dl.post dt { #projectalign { - vertical-align: middle; - padding-left: 0.5em; + vertical-align: middle; + padding-left: 0.5em; } #projectname { font-size: 200%; font-family: var(--font-family-title); - margin: 0; - padding: 0; -} - -#side-nav #projectname -{ - font-size: 130%; + margin: 0px; + padding: 2px 0px; } #projectbrief { font-size: 90%; - font-family: var(--font-family-title); + font-family: var(--font-family-title); margin: 0px; padding: 0px; } @@ -2030,42 +1794,43 @@ dl.invariant dt, dl.pre dt, dl.post dt { #projectnumber { font-size: 50%; - font-family: var(--font-family-title); + font-family: 50% var(--font-family-title); margin: 0px; padding: 0px; } #titlearea { - padding: 0 0 0 5px; + padding: 0px; margin: 0px; + width: 100%; border-bottom: 1px solid var(--title-separator-color); background-color: var(--title-background-color); } .image { - text-align: center; + text-align: center; } .dotgraph { - text-align: center; + text-align: center; } .mscgraph { - text-align: center; + text-align: center; } .plantumlgraph { - text-align: center; + text-align: center; } .diagraph { - text-align: center; + text-align: center; } .caption @@ -2074,67 +1839,70 @@ dl.invariant dt, dl.pre dt, dl.post dt { } dl.citelist { - margin-bottom:50px; + margin-bottom:50px; } dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; } dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; + margin:2px 0 2px 72px; + padding:5px 0; } div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; } div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; } div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); + font: bold 12px/1.2 var(--font-family-toc); color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; + border-bottom: 0 none; + margin: 0; } div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li[class^='level'] { - margin-left: 15px; + list-style: none outside none; + border: medium none; + padding: 0px; } div.toc li.level1 { - margin-left: 0px; + margin-left: 0px; } -div.toc li.empty { - background-image: none; - margin-top: 0px; +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; } span.emoji { @@ -2144,12 +1912,13 @@ span.emoji { } span.obfuscator { - display: none; + display: none; } .inherit_header { - font-weight: 400; - cursor: pointer; + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; @@ -2159,49 +1928,49 @@ span.obfuscator { } .inherit_header td { - padding: 6px 0 2px 0; + padding: 6px 0px 2px 5px; } .inherit { - display: none; + display: none; } tr.heading h2 { - margin-top: 12px; - margin-bottom: 12px; + margin-top: 12px; + margin-bottom: 4px; } /* tooltip related style info */ .ttc { - position: absolute; - display: none; + position: absolute; + display: none; } #powerTip { cursor: default; - color: var(--tooltip-foreground-color); + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); background-color: var(--tooltip-background-color); - backdrop-filter: var(--tooltip-backdrop-filter); - -webkit-backdrop-filter: var(--tooltip-backdrop-filter); border: 1px solid var(--tooltip-border-color); - border-radius: 4px; + border-radius: 4px 4px 4px 4px; box-shadow: var(--tooltip-shadow); display: none; font-size: smaller; max-width: 80%; + opacity: 0.9; padding: 1ex 1em 1em; position: absolute; z-index: 2147483647; } #powerTip div.ttdoc { - color: var(--tooltip-doc-color); + color: var(--tooltip-doc-color); font-style: italic; } #powerTip div.ttname a { - font-weight: bold; + font-weight: bold; } #powerTip a { @@ -2209,18 +1978,18 @@ tr.heading h2 { } #powerTip div.ttname { - font-weight: bold; + font-weight: bold; } #powerTip div.ttdeci { - color: var(--tooltip-declaration-color); + color: var(--tooltip-declaration-color); } #powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); line-height: 16px; } @@ -2266,7 +2035,7 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-arrow-background-color); + border-top-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } @@ -2294,7 +2063,7 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-arrow-background-color); + border-bottom-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } @@ -2351,29 +2120,29 @@ tr.heading h2 { @media print { - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } } /* @group Markdown */ table.markdownTable { border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; + margin-top: 4px; + margin-bottom: 4px; } table.markdownTable td, table.markdownTable th { @@ -2404,13 +2173,9 @@ th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } -tt, code, kbd +tt, code, kbd, samp { - display: inline-block; -} -tt, code, kbd -{ - vertical-align: top; + display: inline-block; } /* @end */ @@ -2419,27 +2184,26 @@ u { } details>summary { - list-style-type: none; + list-style-type: none; } details > summary::-webkit-details-marker { - display: none; + display: none; } details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; + content: "\25ba"; + padding-right:4px; + font-size: 80%; } details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; + content: "\25bc"; + padding-right:4px; + font-size: 80%; } -:root { - scrollbar-width: thin; +body { scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); } diff --git a/Doc/html/doxygen_crawl.html b/Doc/html/doxygen_crawl.html index e209206..19a05df 100644 --- a/Doc/html/doxygen_crawl.html +++ b/Doc/html/doxygen_crawl.html @@ -4,304 +4,169 @@ Validator / crawler helper - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - + - - - - + - + - - - - - - - - - - + - - - - - - - - - - - + - - - - - - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/dynsections.js b/Doc/html/dynsections.js index d89724e..24dfe9c 100644 --- a/Doc/html/dynsections.js +++ b/Doc/html/dynsections.js @@ -23,11 +23,8 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function toggleVisibility(linkObj) { - return dynsection.toggleVisibility(linkObj); -} - let dynsection = { + // helper function updateStripes : function() { $('table.directory tr'). @@ -43,13 +40,15 @@ let dynsection = { const trigger = $('#'+base+'-trigger'); const src=$(trigger).attr('src'); if (content.is(':visible')===true) { - content.slideUp('fast'); + content.hide(); summary.show(); - $(linkObj).find('.arrowhead').addClass('closed').removeClass('opened'); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { - content.slideDown('fast'); + content.show(); summary.hide(); - $(linkObj).find('.arrowhead').removeClass('closed').addClass('opened'); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; }, @@ -60,12 +59,12 @@ let dynsection = { const i = $('#img'+this.id.substring(3)); const a = $('#arr'+this.id.substring(3)); if (l'); + $('span[class=lineno]:first').append(''); // add vertical lines to other rows $('span[class=lineno]').not(':eq(0)').append(''); // add toggle controls to lines with fold divs @@ -167,8 +169,9 @@ let codefold = { const start = $(this).attr('data-start'); const end = $(this).attr('data-end'); // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); + $(this).find('span[class=fold]:first').replaceWith(''); // append div for folded (closed) representation $(this).after(''); // extract the first line from the "open" section to represent closed content @@ -180,7 +183,7 @@ let codefold = { $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); } // replace minus with plus symbol - $(line).find('span[class=fold]').addClass('plus').removeClass('minus'); + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); // append ellipsis $(line).append(' '+start+''+end); // insert constructed line into closed div diff --git a/Doc/html/evolve__optimizer_8h.html b/Doc/html/evolve__optimizer_8h.html index 4e74b63..031520b 100644 --- a/Doc/html/evolve__optimizer_8h.html +++ b/Doc/html/evolve__optimizer_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
evolve_optimizer.h File Reference
@@ -106,79 +113,88 @@ $(function(){initNavTree('evolve__optimizer_8h.html','',''); });
#include "mylibs_defs.h"
#include <stdint.h>
#include <stdlib.h>
-
Include dependency graph for evolve_optimizer.h:
+
+ + Include dependency graph for evolve_optimizer.h:
-
This graph shows which files directly or indirectly include this file:
+
+ + This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

- - + +

+

Classes

struct  EvolveOptimizer_t
struct  EvolveOptimizer_t
 Структура эволюционного оптимизатора More...
 
- - - - - - + + + + + + + + + + + + + + + + +

+

Macros

#define PARAM_SCALE_Q16(x, min_val, max_val)
 Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
 Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
#define local_time()
#define PARAM_SCALE(x, min_val, max_val)   (((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
 Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
 
#define PARAM_UNSCALE(val, min_val, max_val)   (((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
 Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
 
#define local_time()   HAL_GetTick()
 Локальное время
 
#define EVOLVE_MUTATION_MIN_PCT   10
 Минимальная мутация (в процентах от Loss)
 
#define EVOLVE_MUTATION_MAX_PCT   100
 Максимальная мутация (в процентах от Loss)
 
#define ELOVLE_N_ELITE_CANDIDATE   2
 Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
 
- - - - - + + + + + +

+

Functions

__STATIC_INLINE int EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
 Инициализация эволюционного оптимизатора.
__STATIC_INLINE int EvolveOptimizer_Step (EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
 Один шаг эволюционного оптимизатора.
__STATIC_INLINE int EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
 Инициализация эволюционного оптимизатора.
 
__STATIC_INLINE int EvolveOptimizer_Step (EvolveOptimizer_t *opt, float *params, float loss)
 Один шаг эволюционного оптимизатора.
 
-

Detailed Description

+

Detailed Description

Заголовочный файл для адаптивного подбора параметров

Definition in file evolve_optimizer.h.

- -
diff --git a/Doc/html/evolve__optimizer_8h.js b/Doc/html/evolve__optimizer_8h.js index 30c542c..4382494 100644 --- a/Doc/html/evolve__optimizer_8h.js +++ b/Doc/html/evolve__optimizer_8h.js @@ -1,8 +1,11 @@ var evolve__optimizer_8h = [ - [ "PARAM_SCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc", null ], - [ "PARAM_UNSCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba", null ], + [ "PARAM_SCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], + [ "PARAM_UNSCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], [ "local_time", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gadaf3a90724197e1737d5c70c7bcc75e1", null ], - [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga75acd71c85d4e60dc0eb31bc5780086a", null ] + [ "EVOLVE_MUTATION_MIN_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6", null ], + [ "EVOLVE_MUTATION_MAX_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc", null ], + [ "ELOVLE_N_ELITE_CANDIDATE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], + [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21", null ], + [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef", null ] ]; \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.map b/Doc/html/evolve__optimizer_8h__dep__incl.map index 2741c58..415f98a 100644 --- a/Doc/html/evolve__optimizer_8h__dep__incl.map +++ b/Doc/html/evolve__optimizer_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.md5 b/Doc/html/evolve__optimizer_8h__dep__incl.md5 index 4ae7408..69e9dea 100644 --- a/Doc/html/evolve__optimizer_8h__dep__incl.md5 +++ b/Doc/html/evolve__optimizer_8h__dep__incl.md5 @@ -1 +1 @@ -41a81c5527cb10d478e05e49562aedc3 \ No newline at end of file +f553378750fe54c08a141590bf28abc6 \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__dep__incl.png b/Doc/html/evolve__optimizer_8h__dep__incl.png index 02dd10484d1dab494e853af970ea4f13c2640266..18e4a8e1668d27c8184d771b096e1f1ce5fd013c 100644 GIT binary patch literal 3534 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 - - - - - - - - - - - + + + + + + + + + + + + diff --git a/Doc/html/evolve__optimizer_8h__incl.md5 b/Doc/html/evolve__optimizer_8h__incl.md5 index 29bbece..ab56a56 100644 --- a/Doc/html/evolve__optimizer_8h__incl.md5 +++ b/Doc/html/evolve__optimizer_8h__incl.md5 @@ -1 +1 @@ -4993f7378dc2ed7a2e950385e8313f89 \ No newline at end of file +fd2e7c14c3afd7acdbec8e90d05455b4 \ No newline at end of file diff --git a/Doc/html/evolve__optimizer_8h__incl.png b/Doc/html/evolve__optimizer_8h__incl.png index 09857dc982af6b57fa35d714b2e78eea0d20295d..b22e7b3a8e714a4abf99b4a095254354707ec144 100644 GIT binary patch literal 6465 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 literal 6256 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 ZP32$n>>Hg=yZVIyXsPRgQL0vm{{U@**NgxF diff --git a/Doc/html/evolve__optimizer_8h_source.html b/Doc/html/evolve__optimizer_8h_source.html index 7bdfeb3..ac55157 100644 --- a/Doc/html/evolve__optimizer_8h_source.html +++ b/Doc/html/evolve__optimizer_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/evolve_optimizer.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
- + - +
-
20 заглушки, никак не влияющие на параметры и остальную программу
21- @ref EVOLVE_MAX_PARAMS - Максимальное количество параметров
22- @ref EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
-
23
-
24
-
25@par Пример использования:
-
26@code
-
27#include "evolve_optimizer.h"
-
28#define N_PARAMS 4
-
29#define N_CANDIDATES 100
-
30#define N_BEST 10
-
31#define IQ_MUTATION (PARAM_SCALE_Q16(0.1, 0, 1))
-
32int32_t params[N_PARAMS];
-
33EvolveOptimizer_t optimizer;
-
34
-
35// Формирование параметров
-
36uint16_t param_u16 = 800;
-
37float param_f = 0.01f;
-
38uint8_t param_u8 = 40;
-
39int16_t param_i16 = 1600;
-
40params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000);
-
41params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f);
-
42params[2] = PARAM_SCALE_Q16(param_u8, 10, 100);
-
43params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000);
-
44
-
45// Инициалиазция
-
46EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params);
-
47
-
48// Шаг эволюции
-
49int32_t loss = calc_iq_loss(); // расчет эффективности параметров
-
50EvolveOptimizer_Step(&optimizer, params, loss);
-
51
-
52// Взятие следующих для эволюции параметров
-
53param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000);
-
54param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f);
-
55param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100);
-
56param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000);
-
57@endcode
-
58* @{
-
59*****************************************************************************/
-
60#ifndef __EVOLVE_OPTIMIZER_H_
-
61#define __EVOLVE_OPTIMIZER_H_
-
62
-
63#include "mylibs_defs.h"
-
64#include <stdint.h>
-
65#include <stdlib.h>
-
66
-
67#ifdef ENABLE_EVOLVE_OPTIMIZATION
-
68/**
-
69 * @brief Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
-
70 */
-
-
71#define PARAM_SCALE_Q16(x, min_val, max_val) \
-
72((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f))
+
23- (опционально) @ref EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
+
24- (опционально) @ref EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
+
25- (опционально) @ref ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
+
26
+
27@par Пример использования:
+
28@code
+
29#include "evolve_optimizer.h"
+
30#define N_PARAMS 4
+
31#define N_CANDIDATES 100
+
32#define N_BEST 10
+
33#define MUTATION 0.1f
+
34float params[N_PARAMS];
+
35EvolveOptimizer_t optimizer;
+
36
+
37// Формирование параметров
+
38uint16_t param_u16 = 800;
+
39float param_f = 0.01f;
+
40uint8_t param_u8 = 40;
+
41int16_t param_i16 = 1600;
+
42params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);
+
43params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);
+
44params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
+
45params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
+
46
+
47// Инициалиазция
+
48EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
+
49
+
50// Шаг эволюции
+
51float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
+
52EvolveOptimizer_Step(&optimizer, params, loss);
+
53
+
54// Взятие следующих для эволюции параметров
+
55param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
+
56param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
+
57param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
+
58param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
+
59@endcode
+
60* @{
+
61*****************************************************************************/
+
62#ifndef __EVOLVE_OPTIMIZER_H_
+
63#define __EVOLVE_OPTIMIZER_H_
+
64
+
65#include "mylibs_defs.h"
+
66#include <stdint.h>
+
67#include <stdlib.h>
+
68
+
69#ifdef ENABLE_EVOLVE_OPTIMIZATION
+
70/**
+
71 * @brief Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
+
72 */
+
+
73#define PARAM_SCALE(x, min_val, max_val) \
+
74(((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
-
73
-
74/**
-
75 * @brief Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val]
-
76 */
-
-
77#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) \
-
78(((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
-
-
79
-
80#ifndef local_time
-
81#define local_time() HAL_GetTick() ///< Локальное время
-
82#endif
-
83
-
84/**
-
85 * @brief Структура эволюционного оптимизатора
-
86 */
-
-
87typedef struct {
-
88 uint16_t n_params; ///< Количество параметров
-
89 uint16_t n_cand; ///< Количество кандидатов
-
90 uint16_t n_best; ///< Количество лучших, усредняемых
-
91 uint16_t iq_mutation; ///< Амплитуда мутации в Q16.16
-
92 uint16_t cand_index; ///< Индекс кандидата для обработки
-
93 int32_t loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
-
94 int32_t candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
-
95 uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
- +
75
+
76/**
+
77 * @brief Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val]
+
78 */
+
+
79#define PARAM_UNSCALE(val, min_val, max_val) \
+
80(((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
+
81
+
82#ifndef local_time
+
83#define local_time() HAL_GetTick() ///< Локальное время
+
84#endif
+
85
+
86
+
87
+
88#ifndef EVOLVE_MUTATION_MIN_PCT
+
89#define EVOLVE_MUTATION_MIN_PCT 10 ///< Минимальная мутация (в процентах от Loss)
+
90#endif
+
91#ifndef EVOLVE_MUTATION_MAX_PCT
+
92#define EVOLVE_MUTATION_MAX_PCT 100 ///< Максимальная мутация (в процентах от Loss)
+
93#endif
+
94#ifndef ELOVLE_N_ELITE_CANDIDATE
+
95#define ELOVLE_N_ELITE_CANDIDATE 2 ///< Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
+
96#endif
97
-
98
-
99
-
100/**
-
101 * @cond EVOLVE_INTERNAL
-
102 */
-
103#define Q16_MUL(a,b) ((int32_t)(((int64_t)(a) * (int64_t)(b)) >> 16))
-
104
-
105// Вспомогательный указатель для сортировки
-
106static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
-
107
-
108static int cmp_idx(const void *a, const void *b) {
-
109 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
-
110 return -1;
-
111 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
-
112 return 1;
-
113 return 0;
-
114}
-
115/** @endcond */
-
116
-
117
-
118
+
98
+
99/**
+
100 * @brief Структура эволюционного оптимизатора
+
101 */
+
+
102typedef struct {
+
103 float stability; ///< Коэффициент насколько стабильная популяция (0..1)(@ref n_cand)
+
104 uint16_t n_params; ///< Количество параметров
+
105 uint16_t n_cand; ///< Количество кандидатов в популяции
+
106 uint16_t n_best; ///< Количество лучших, усредняемых
+
107 float mutation_amp; ///< Амплитуда мутации (0..1)
+
108 uint16_t cand_index; ///< Индекс кандидата для обработки
+
109 float loss[EVOLVE_MAX_CANDIDATES]; ///< Loss для каждого кандидата
+
110 float candidates[EVOLVE_MAX_CANDIDATES][EVOLVE_MAX_PARAMS]; ///< Параметры кандидатов
+
111 uint16_t sorted_idx[EVOLVE_MAX_CANDIDATES]; ///< Индексы отсортированных кандидатов
+ +
+
113
+
114
+
115
+
116/**
+
117 * @cond EVOLVE_INTERNAL
+
118 */
119
-
120
-
121/**
-
122 * @brief Инициализация эволюционного оптимизатора.
-
123 * @param opt Указатель на структуру оптимизатора
-
124 * @param n_params Количество параметров в одном кандидате
-
125 * @param n_cand Количество кандидатов
-
126 * @param n_best Количество лучших, усредняемых
-
127 * @param iq_mutation Амплитуда мутации в Q16.16
-
128 * @param start_params Начальные параметры (Q16.16)
-
129 * @return 0 — если окей,
-
130 * -1 — если ошибка
-
131 */
-
- -
133 uint16_t n_params,
-
134 uint16_t n_cand,
-
135 uint16_t n_best,
-
136 uint16_t iq_mutation,
-
137 int32_t* start_params)
-
138{
-
139 if((opt = NULL) || (start_params == NULL))
-
140 return -1;
-
141
-
142 if(n_params > EVOLVE_MAX_PARAMS)
-
143 return -1;
-
144 opt->n_params = n_params;
-
145
-
146 if(n_cand > EVOLVE_MAX_CANDIDATES)
-
147 return -1;
-
148 opt->n_cand = n_cand;
-
149
-
150 if(n_best > EVOLVE_MAX_CANDIDATES/2)
-
151 return -1;
-
152 opt->n_best = n_best;
-
153
-
154 if(iq_mutation > 32768)
-
155 return -1;
-
156 opt->iq_mutation = iq_mutation;
+
120// Вспомогательный указатель для сортировки
+
121static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор
+
122
+
123// функция условия сортировки
+
124static int cmp_idx(const void *a, const void *b) {
+
125 if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b])
+
126 return -1;
+
127 if (g_sort_opt->loss[*(const uint16_t*)a] > g_sort_opt->loss[*(const uint16_t*)b])
+
128 return 1;
+
129 return 0;
+
130}
+
131/** @endcond */
+
132
+
133
+
134
+
135
+
136
+
137/**
+
138 * @brief Инициализация эволюционного оптимизатора.
+
139 * @param opt Указатель на структуру оптимизатора
+
140 * @param n_params Количество параметров в одном кандидате
+
141 * @param n_cand Количество кандидатов
+
142 * @param n_best Количество лучших, усредняемых
+
143 * @param mutation_amp Амплитуда мутации (в диапазоне 0.0–1.0)
+
144 * @param start_params Начальные параметры (в диапазоне 0.0–1.0)
+
145 * @return 0 — если окей,
+
146 * -1 — если ошибка
+
147 */
+
+ +
149 uint16_t n_params,
+
150 uint16_t n_cand,
+
151 uint16_t n_best,
+
152 float mutation_amp,
+
153 float* start_params)
+
154{
+
155 if((opt == NULL) || (start_params == NULL))
+
156 return -1;
157
-
158 for (uint16_t i = 0; i < n_cand; i++) {
-
159 for (uint16_t j = 0; j < n_params; j++) {
-
160 opt->candidates[i][j] = start_params[j];
-
161 }
-
162 opt->loss[i] = 0;
-
163 }
-
164 uint32_t seed = local_time() + (ADC1->DR & 0xFF);
-
165 srand(seed);
-
166
-
167 return 0;
-
168}
+
158 if(n_params > EVOLVE_MAX_PARAMS)
+
159 return -1;
+
160 opt->n_params = n_params;
+
161
+
162 if(n_cand > EVOLVE_MAX_CANDIDATES)
+
163 return -1;
+
164 opt->n_cand = n_cand;
+
165
+
166 if(n_best > EVOLVE_MAX_CANDIDATES/2)
+
167 return -1;
+
168 opt->n_best = n_best;
+
169
+
170
+
171 if((mutation_amp > 1) || (mutation_amp < 0))
+
172 return -1;
+
173 if(mutation_amp <= 0.001f)
+
174 mutation_amp = 0.001f;
+
175 opt->mutation_amp = mutation_amp;
+
176
+
177 uint32_t seed = local_time();
+
178#ifdef ADC1
+
179 seed += (ADC1->DR & 0xFF);
+
180#endif
+
181 srand(seed);
+
182
+
183 for (uint16_t i = 0; i < n_cand; i++) {
+
184 for (uint16_t j = 0; j < n_params; j++) {
+
185 // Добавляем случайную мутацию вокруг стартового параметра
+
186 float base = start_params[j];
+
187 float inv_randmax = 1.0f / (float)RAND_MAX;
+
188 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp;
+
189 opt->candidates[i][j] = base + noise;
+
190 if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f;
+
191 if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f;
+
192 }
+
193 opt->loss[i] = 0.0f;
+
194 }
+
195
+
196 return 0;
+
197}
-
169
-
170
-
171/**
-
172 * @brief Один шаг эволюционного оптимизатора.
-
173 * @param opt Указатель на структуру оптимизатора
-
174 * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)
-
175 * @param loss Loss текущего кандидата (Q16.16)
-
176 * @return 0 — если окей,
-
177 * -1 — если ошибка
-
178 * @details
-
179 * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.
-
180 * Если накоплено n_cand кандидатов, генерируется новое поколение.
-
181 * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.
-
182 *
-
183 * На выходе params содержит параметры следующего кандидата для измерений.
-
184 * @note Функция использует глобальную внутреннюю переменную для сортировки.
-
185 * Надо убедится что только один экземпляр функции запущен в момент времени
-
186 */
-
- -
188 int32_t* params,
-
189 int32_t loss)
-
190{
-
191 if((opt = NULL) || (params == NULL))
-
192 return -1;
-
193
-
194 uint16_t n_params = opt->n_params;
-
195 if(n_params > EVOLVE_MAX_PARAMS)
-
196 return -1;
-
197
-
198 uint16_t n_cand = opt->n_cand;
-
199 if(n_cand > EVOLVE_MAX_CANDIDATES)
-
200 return -1;
-
201
-
202 uint16_t n_best = opt->n_best;
-
203 if(n_best > EVOLVE_MAX_CANDIDATES/2)
-
204 return -1;
-
205
-
206 uint16_t mut = opt->iq_mutation;
-
207 if(mut > 32768)
-
208 return -1;
-
209
-
210 // 1. Сохраняем loss текущего кандидата
-
211 opt->loss[opt->cand_index] = loss;
-
212 opt->cand_index++;
-
213
-
214 if (opt->cand_index >= n_cand) {
-
215 // 2. Сортируем текущее поколение по loss
-
216 for(uint16_t i = 0; i < opt->n_cand; i++)
-
217 opt->sorted_idx[i] = i;
-
218
-
219 g_sort_opt = opt;
-
220 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
-
221 g_sort_opt = NULL;
-
222// for (uint16_t i = 0; i < n_cand - 1; i++) {
-
223// for (uint16_t j = i + 1; j < n_cand; j++) {
-
224// if (opt->loss[j] < opt->loss[i]) {
-
225// int32_t tmp_loss = opt->loss[i];
-
226// opt->loss[i] = opt->loss[j];
-
227// opt->loss[j] = tmp_loss;
-
228
-
229// for (uint16_t k = 0; k < n_params; k++) {
-
230// int32_t tmp = opt->candidates[i][k];
-
231// opt->candidates[i][k] = opt->candidates[j][k];
-
232// opt->candidates[j][k] = tmp;
-
233// }
-
234// }
-
235// }
-
236// }
-
237
-
238 // 3. Генерируем новое поколение: каждый кандидат берется случайно из лучших с мутацией
-
239 uint16_t n_elite = 2; // количество элитных кандидатов, которые сохраняем без изменений
-
240 for (uint16_t c = 0; c < n_cand; c++) {
-
241 if (c < n_elite) {
-
242 // Копируем лучших кандидатов напрямую без мутации
-
243 for (uint16_t i = 0; i < n_params; i++) {
-
244 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i]; // просто сохраняем параметры
-
245 }
-
246 opt->loss[c] = 0;
-
247 } else {
-
248 // Остальные кандидаты формируются с кроссовером и мутацией
-
249 for (uint16_t i = 0; i < n_params; i++) {
-
250 int32_t noise = (rand() % (2 * mut)) - mut;
-
251 uint16_t parent = opt->sorted_idx[rand() % opt->n_best]; // каждый параметр из случайного лучшего
-
252 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
-
253 }
-
254 opt->loss[c] = 0;
-
255 }
-
256 }
-
257 opt->cand_index = 0;
-
258 }
-
259
-
260 // 4. Возвращаем параметры следующего кандидата
-
261 for (uint16_t i = 0; i < opt->n_params; i++)
-
262 params[i] = opt->candidates[opt->cand_index][i];
-
263
-
264 return 0;
-
265}
+
198
+
199
+
200/**
+
201 * @brief Один шаг эволюционного оптимизатора.
+
202 * @param opt Указатель на структуру оптимизатора
+
203 * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры)
+
204 * @param loss Loss текущего кандидата
+
205 * @return 0 — если окей,
+
206 * -1 — если ошибка
+
207 * @details
+
208 * Сохраняет loss текущего кандидата и формирует параметры следующего кандидата.
+
209 * Если накоплено n_cand кандидатов, генерируется новое поколение.
+
210 * Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.
+
211 *
+
212 * На выходе params содержит параметры следующего кандидата для измерений.
+
213 * @note Функция использует глобальную внутреннюю переменную для сортировки.
+
214 * Надо убедится что только один экземпляр функции запущен в момент времени
+
215 */
+
+ +
217 float* params,
+
218 float loss)
+
219{
+
220 if((opt == NULL) || (params == NULL))
+
221 return -1;
+
222
+
223 uint16_t n_params = opt->n_params;
+
224 if(n_params > EVOLVE_MAX_PARAMS)
+
225 return -1;
+
226
+
227 uint16_t n_cand = opt->n_cand;
+
228 if(n_cand > EVOLVE_MAX_CANDIDATES)
+
229 return -1;
+
230
+
231 uint16_t n_best = opt->n_best;
+
232 if(n_best > EVOLVE_MAX_CANDIDATES/2)
+
233 return -1;
+
234
+
235 float mut = opt->mutation_amp;
+
236 if((mut > 1) ||(mut < 0))
+
237 return -1;
+
238
+
239 // 1. Сохраняем loss текущего кандидата
+
240 opt->loss[opt->cand_index] = loss;
+
241 opt->cand_index++;
+
242
+
243 if (opt->cand_index >= n_cand) {
+
244 // 2. Сортируем текущее поколение по loss
+
245 for(uint16_t i = 0; i < opt->n_cand; i++)
+
246 opt->sorted_idx[i] = i;
+
247
+
248 g_sort_opt = opt;
+
249 qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx);
+
250 g_sort_opt = NULL;
+
251
+
252 // --- Адаптивная мутация в зависимости от Loss ---
+
253 float best_loss = opt->loss[opt->sorted_idx[0]];
+
254 float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]];
+
255 float diff = worst_loss - best_loss;
+
256
+
257 float sum_loss = 0.0f;
+
258 for (uint16_t i = 0; i < n_cand; i++)
+
259 sum_loss += opt->loss[i];
+
260 float avg_loss = sum_loss / (float)n_cand;
+
261
+
262
+
263 float loss_ratio = (diff > 0.0f) ? ((avg_loss - best_loss) / diff) : 0.5f;
+
264 if (loss_ratio < 0.0f) loss_ratio = 0.0f;
+
265 if (loss_ratio > 1.0f) loss_ratio = 1.0f;
+
266
+
267 // Записываем стабильность популяции в структуру
+
268 if(diff < 0.0f) diff = 0.0f;
+
269 if(diff > 1.0f) diff = 1.0f;
+
270 opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss));
+
271 if(opt->stability < 0.0f) opt->stability = 0.0f;
+
272 if(opt->stability > 1.0f) opt->stability = 1.0f;
+
273
+
274 float mut_pct = EVOLVE_MUTATION_MIN_PCT +
+ +
276 float adaptive_mut = mut * (mut_pct / 100.0f);
+
277 if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f;
+
278
+
279 // 3. Генерируем новое поколение
+
280 uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE;
+
281 for (uint16_t c = 0; c < n_cand; c++) {
+
282 if (c < n_elite) {
+
283 for (uint16_t i = 0; i < n_params; i++)
+
284 opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i];
+
285 opt->loss[c] = 0.0f;
+
286 } else {
+
287 for (uint16_t i = 0; i < n_params; i++) {
+
288 float inv_randmax = 1.0f / (float)RAND_MAX;
+
289 float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut;
+
290 uint16_t parent = opt->sorted_idx[rand() % opt->n_best];
+
291 opt->candidates[c][i] = opt->candidates[parent][i] + noise;
+
292 if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f;
+
293 if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f;
+
294 }
+
295 opt->loss[c] = 0.0f;
+
296 }
+
297 }
+
298 opt->cand_index = 0;
+
299 }
+
300
+
301 // 4. Возвращаем параметры следующего кандидата
+
302 for (uint16_t i = 0; i < opt->n_params; i++)
+
303 params[i] = opt->candidates[opt->cand_index][i];
+
304
+
305 return 0;
+
306}
-
266#else // ENABLE_EVOLVE_OPTIMIZATION
-
267//заглушки
-
268typedef struct {
-
269 uint16_t n_params;
-
270 uint16_t n_cand;
-
271 uint16_t n_best;
-
272 uint16_t iq_mutation;
-
273 int32_t loss[0];
-
274 int32_t candidates[0][0];
- -
276#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params)
-
277#define EvolveOptimizer_Step(opt, params, LossFunc)
-
278#define PARAM_SCALE_Q16(x, min_val, max_val) (x)
-
279#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val)
-
280#endif // ENABLE_EVOLVE_OPTIMIZATION
-
281
-
282#endif // __EVOLVE_OPTIMIZER_H_
-
283
-
284/** EVOLVE_OPTIMIZER
-
285 * @}
-
286 */
+
307#else // ENABLE_EVOLVE_OPTIMIZATION
+
308//заглушки
+
309typedef struct {
+
310 uint16_t n_params;
+
311 uint16_t n_cand;
+
312 uint16_t n_best;
+
313 float mutation_amp;
+
314 float loss[0];
+
315 float candidates[0][0];
+ +
317#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
+
318#define EvolveOptimizer_Step(opt, params, LossFunc)
+
319#define PARAM_SCALE(x, min_val, max_val) (x)
+
320#define PARAM_UNSCALE(val, min_val, max_val) (val)
+
321#endif // ENABLE_EVOLVE_OPTIMIZATION
+
322
+
323#endif // __EVOLVE_OPTIMIZER_H_
+
324
+
325/** EVOLVE_OPTIMIZER
+
326 * @}
+
327 */
#define EVOLVE_MAX_CANDIDATES
Максимальное количество кандидатов для обучения
#define EVOLVE_MAX_PARAMS
Максимальное количество параметров
-
__STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
Один шаг эволюционного оптимизатора.
-
#define local_time()
Локальное время
-
__STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
Инициализация эволюционного оптимизатора.
+
#define EVOLVE_MUTATION_MIN_PCT
Минимальная мутация (в процентах от Loss)
+
#define ELOVLE_N_ELITE_CANDIDATE
Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
+
__STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
Инициализация эволюционного оптимизатора.
+
#define EVOLVE_MUTATION_MAX_PCT
Максимальная мутация (в процентах от Loss)
+
#define local_time()
Локальное время
+
__STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, float *params, float loss)
Один шаг эволюционного оптимизатора.
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
-
Структура эволюционного оптимизатора
-
uint16_t cand_index
Индекс кандидата для обработки
-
uint16_t n_params
Количество параметров
-
uint16_t iq_mutation
Амплитуда мутации в Q16.16.
-
int32_t candidates[100][20]
Параметры кандидатов
-
uint16_t sorted_idx[100]
Индексы отсортированных кандидатов
-
uint16_t n_best
Количество лучших, усредняемых
-
uint16_t n_cand
Количество кандидатов
-
int32_t loss[100]
Loss для каждого кандидата
+
Структура эволюционного оптимизатора
+
uint16_t cand_index
Индекс кандидата для обработки
+
uint16_t n_params
Количество параметров
+
uint16_t sorted_idx[100]
Индексы отсортированных кандидатов
+
float stability
Коэффициент насколько стабильная популяция (0..1)(n_cand)
+
float loss[100]
Loss для каждого кандидата
+
uint16_t n_best
Количество лучших, усредняемых
+
uint16_t n_cand
Количество кандидатов в популяции
+
float candidates[100][20]
Параметры кандидатов
+
float mutation_amp
Амплитуда мутации (0..1)
-
diff --git a/Doc/html/files.html b/Doc/html/files.html index 4b8cceb..a27bf8e 100644 --- a/Doc/html/files.html +++ b/Doc/html/files.html @@ -3,7 +3,7 @@ - + MyLibs: File List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
- + -
@@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented files with brief descriptions:
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
 
MyLibsGeneral
 
Inc
 
__general_flash.h
 
__general_spi.h
 
__general_uart.h
 
bit_access.h
Заголочный файл для дефайнов битового доступа
 
evolve_optimizer.h
Заголовочный файл для адаптивного подбора параметров
 
general_gpio.h
Заголовочный файл для модуля инициализации портов и работы с ними
 
general_tim.h
Заголовочный файл для модуля инициализации таймеров и работы с ними
 
mylibs_config.h
Конфигурации для библиотек MyLibs
 
mylibs_defs.h
Заголочный файл для дефайнов библиотеки MyLibsGeneral
 
mylibs_include.h
Заголочный файл для всех библиотек
 
trace.h
Заголочный файл для работы с трассировкой
 
trackers.h
Заголочный файл для работы с трекерами Trackers defines
 
Src
 
__general_flash.c
 
__general_spi.c
 
__general_uart.c
 
general_gpio.c
Модуль для инициализации портов и работы с ними
 
general_tim.c
Модуль для инициализации таймеров и работы с ними
 
mainpage.h
  MyLibsGeneral
  Inc
 __general_flash.h
 __general_spi.h
 __general_uart.h
 bit_access.hЗаголочный файл для дефайнов битового доступа
 evolve_optimizer.hЗаголовочный файл для адаптивного подбора параметров
 general_gpio.hЗаголовочный файл для модуля инициализации портов и работы с ними
 general_tim.hЗаголовочный файл для модуля инициализации таймеров и работы с ними
 mylibs_config.hКонфигурации для библиотек MyLibs
 mylibs_defs.hЗаголочный файл для дефайнов библиотеки MyLibsGeneral
 mylibs_include.hЗаголочный файл для всех библиотек
 trace.hЗаголочный файл для работы с трассировкой
 trackers.hЗаголочный файл для работы с трекерами Trackers defines
  Src
 __general_flash.c
 __general_spi.c
 __general_uart.c
 general_gpio.cМодуль для инициализации портов и работы с ними
 general_tim.cМодуль для инициализации таймеров и работы с ними
 mainpage.h
-
diff --git a/Doc/html/folderclosed.svg b/Doc/html/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/Doc/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/Doc/html/folderclosedd.svg b/Doc/html/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/Doc/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/Doc/html/folderopen.svg b/Doc/html/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/Doc/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/Doc/html/folderopend.svg b/Doc/html/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/Doc/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/Doc/html/functions.html b/Doc/html/functions.html index b94a60a..4841303 100644 --- a/Doc/html/functions.html +++ b/Doc/html/functions.html @@ -3,7 +3,7 @@ - + MyLibs: Class Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented class members with links to the class documentation for each member:
-

- c -

-
diff --git a/Doc/html/functions_vars.html b/Doc/html/functions_vars.html index 31585ac..d9cec07 100644 --- a/Doc/html/functions_vars.html +++ b/Doc/html/functions_vars.html @@ -3,7 +3,7 @@ - + MyLibs: Class Members - Variables @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented variables with links to the class documentation for each member:
-

- c -

-
diff --git a/Doc/html/general__gpio_8c.html b/Doc/html/general__gpio_8c.html index 895b805..82278a7 100644 --- a/Doc/html/general__gpio_8c.html +++ b/Doc/html/general__gpio_8c.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
general_gpio.c File Reference
@@ -104,50 +109,61 @@ $(function(){initNavTree('general__gpio_8c.html','',''); });

Модуль для инициализации портов и работы с ними. More...

#include "general_gpio.h"
-
Include dependency graph for general_gpio.c:
+
+ + Include dependency graph for general_gpio.c:

Go to the source code of this file.

- + + + + + + + + + +

+

Functions

HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
 Включить тактирование порта GPIO.
 
HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
 Инициализировать светодиод (структуру светодиода)
 
HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
 Включить светодиод
 
HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
 Выключить светодиод
 
HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
 Выставить светодиод по переменной
 
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
 
HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
 
void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
 Управление динамическими режимами свечения светодиода
 
HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
 Инициализировать кнопку (структуру кнопки)
 
int GPIO_Read_Switch (GPIO_SwitchTypeDef *sw)
 Считать состоянии кнопки
 
-

Detailed Description

+

Detailed Description

Модуль для инициализации портов и работы с ними.

Реализация функций для работы с GPIO:

  • Включение тактирования портов
  • @@ -159,19 +175,11 @@ Functions

    Definition in file general_gpio.c.

- -
diff --git a/Doc/html/general__gpio_8c__incl.map b/Doc/html/general__gpio_8c__incl.map index 1d47388..99ab50e 100644 --- a/Doc/html/general__gpio_8c__incl.map +++ b/Doc/html/general__gpio_8c__incl.map @@ -1,11 +1,11 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/Doc/html/general__gpio_8c__incl.md5 b/Doc/html/general__gpio_8c__incl.md5 index 958ccc2..78771e7 100644 --- a/Doc/html/general__gpio_8c__incl.md5 +++ b/Doc/html/general__gpio_8c__incl.md5 @@ -1 +1 @@ -6e517891df2cdbcb0824fafba9ac3005 \ No newline at end of file +ef5806c364614a686ed2e7465f1e02dc \ No newline at end of file diff --git a/Doc/html/general__gpio_8c__incl.png b/Doc/html/general__gpio_8c__incl.png index f8a4a650cc1bf9365c667f77fd8ff3413523ca2d..e3e6c87e94446aee1b490642ac4468cf7f9758f7 100644 GIT binary patch literal 5401 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 - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/general_gpio.c Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({

- + - +
-
GPIO_TypeDef * Sw_Port
GPIO порт ножки кнопки
- diff --git a/Doc/html/general__gpio_8h.html b/Doc/html/general__gpio_8h.html index 7538746..b5bf390 100644 --- a/Doc/html/general__gpio_8h.html +++ b/Doc/html/general__gpio_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
general_gpio.h File Reference
@@ -104,69 +112,79 @@ $(function(){initNavTree('general__gpio_8h.html','',''); });

Заголовочный файл для модуля инициализации портов и работы с ними. More...

#include "mylibs_defs.h"
-
Include dependency graph for general_gpio.h:
+
+ + Include dependency graph for general_gpio.h:
-
This graph shows which files directly or indirectly include this file:
+
+ + This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

- - + - + + +

+

Classes

struct  GPIO_LEDTypeDef
struct  GPIO_LEDTypeDef
 Структура светодиода More...
struct  GPIO_SwitchTypeDef
 
struct  GPIO_SwitchTypeDef
 Структура кнопки More...
 
- + + + + + - + +

+

Macros

#define LED_PWM_TICKS   15
 Количество тиков в периоде ШИМ
 
#define LED_ON   1
 Состояние пина для включения светодиода
 
#define LED_OFF   0
 Состояние пина для выключения светодиода
 
#define SW_ON   1
 Состояние пина при нажатой кнопке
 
#define SW_OFF   0
 Состояние пина при отжатой кнопке
 
#define GPIO_TIM_Alternate_Mapping(INSTANCE)
 Маппинг альтернативной функции SPI между GPIO.
 Маппинг альтернативной функции TIM между GPIO.
 
- , LED_IS_FADING = 3 } +

+

Enumerations

enum  GPIO_LEDStateTypeDef { LED_IS_OFF = 0 , LED_IS_ON = 1 @@ -174,49 +192,52 @@ Enumerations
 Режимы работы светодиода More...
 
- + + + + + + + + + +

+

Functions

HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
 Включить тактирование порта GPIO.
 
HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
 Инициализировать кнопку (структуру кнопки)
 
int GPIO_Read_Switch (GPIO_SwitchTypeDef *swstart)
 Считать состоянии кнопки
 
HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
 Инициализировать светодиод (структуру светодиода)
 
HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
 Включить светодиод
 
HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
 Выключить светодиод
 
HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
 Выставить светодиод по переменной
 
HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
 
HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
 Активировать моргание светодиодом
 
void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
 Управление динамическими режимами свечения светодиода
 
-

Detailed Description

+

Detailed Description

Заголовочный файл для модуля инициализации портов и работы с ними.

Definition in file general_gpio.h.

- -
diff --git a/Doc/html/general__gpio_8h__dep__incl.map b/Doc/html/general__gpio_8h__dep__incl.map index 5752b36..1ee50f3 100644 --- a/Doc/html/general__gpio_8h__dep__incl.map +++ b/Doc/html/general__gpio_8h__dep__incl.map @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/Doc/html/general__gpio_8h__dep__incl.md5 b/Doc/html/general__gpio_8h__dep__incl.md5 index ad68897..b686327 100644 --- a/Doc/html/general__gpio_8h__dep__incl.md5 +++ b/Doc/html/general__gpio_8h__dep__incl.md5 @@ -1 +1 @@ -601832d7a86478887e6618268a8e6110 \ No newline at end of file +f42bf5193afb062a9c95d3c96bb4e0cd \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__dep__incl.png b/Doc/html/general__gpio_8h__dep__incl.png index 506ce3788e6bc0d8cdf10e5f073b9a9b7bf99555..8d29aae9270ddeb500ebcab4a8ba855553bb57e5 100644 GIT binary patch literal 21812 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 literal 17021 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

DFV{ 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 PSD4A=OL(I{{``Lci<0Lb diff --git a/Doc/html/general__gpio_8h__incl.map b/Doc/html/general__gpio_8h__incl.map index 2a678e8..f3ddf1d 100644 --- a/Doc/html/general__gpio_8h__incl.map +++ b/Doc/html/general__gpio_8h__incl.map @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/Doc/html/general__gpio_8h__incl.md5 b/Doc/html/general__gpio_8h__incl.md5 index e999f78..7a01ba7 100644 --- a/Doc/html/general__gpio_8h__incl.md5 +++ b/Doc/html/general__gpio_8h__incl.md5 @@ -1 +1 @@ -64dafee7a8d3ae5fb443763ec7bc3400 \ No newline at end of file +21dce52570063c58c664fb8c26d4473d \ No newline at end of file diff --git a/Doc/html/general__gpio_8h__incl.png b/Doc/html/general__gpio_8h__incl.png index 04247fc3069caead3024a2a3d5fce8d3f08faf04..0a47dfa0715d9e46e7aeb11ef904f6f7c60af761 100644 GIT binary patch literal 4364 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 literal 4033 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 - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({

- + - +
-
122
123/////////////////////////////////////////////////////////////////////
124///////////////////////////---FUNCTIONS---///////////////////////////
-
125/**
+
125/**
126 * @addtogroup MYLIBS_GPIO_GENERAL General tools
127 * @ingroup MY_LIBS_GPIO
128 * @brief Общие функции/макросы для работы с GPIO
@@ -288,7 +296,7 @@ $(function(){initNavTree('general__gpio_8h_source.html','',''); });
178 * @}
179 */
180///////////////////////////---FUNCTIONS---///////////////////////////
-
181
+
181
182
183#endif // __GPIO_GENERAL_H_
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
@@ -321,12 +329,11 @@ $(function(){initNavTree('general__gpio_8h_source.html','',''); });
GPIO_TypeDef * Sw_Port
GPIO порт ножки кнопки
- diff --git a/Doc/html/general__tim_8c.html b/Doc/html/general__tim_8c.html index bc889a7..bd4d793 100644 --- a/Doc/html/general__tim_8c.html +++ b/Doc/html/general__tim_8c.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_tim.c File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/general_tim.c File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
general_tim.c File Reference
@@ -104,55 +109,67 @@ $(function(){initNavTree('general__tim_8c.html','',''); });

Модуль для инициализации таймеров и работы с ними. More...

#include "general_tim.h"
-
Include dependency graph for general_tim.c:
+
+ + Include dependency graph for general_tim.c:

Go to the source code of this file.

- + + + + + + + + + + +

+

Functions

HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
 Инициализация таймера.
 
HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
 Инициализация режима энкодер у таймера.
 
HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
 Инициализация выхода ШИМ таймера.
 
HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
 Инициализация OC компаратора таймера.
 
HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
 Считать энкодер.
 
int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
 Считать кнопку энкодера.
 
HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (блокирующая).
 
HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
 Начать отсчет неблокирующей задержки.
 
HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (неблокирующая).
 
void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
 Инициализация CLK и NVIC таймеров.
 
void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
 Деинициализация CLK и NVIC таймеров.
 
-

Detailed Description

+

Detailed Description

Модуль для инициализации таймеров и работы с ними.

Реализация функций для работы с TIM:

  • Инициализация таймера и его каналов
  • @@ -163,19 +180,11 @@ Functions

    Definition in file general_tim.c.

- -
diff --git a/Doc/html/general__tim_8c__incl.map b/Doc/html/general__tim_8c__incl.map index 1096c09..c9dcd77 100644 --- a/Doc/html/general__tim_8c__incl.map +++ b/Doc/html/general__tim_8c__incl.map @@ -1,14 +1,14 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/Doc/html/general__tim_8c__incl.md5 b/Doc/html/general__tim_8c__incl.md5 index b3c8500..7a3d6eb 100644 --- a/Doc/html/general__tim_8c__incl.md5 +++ b/Doc/html/general__tim_8c__incl.md5 @@ -1 +1 @@ -b9386d564e6b4fd6c35f93b0536b2339 \ No newline at end of file +eb15c46347f395057c20d321276b7d03 \ No newline at end of file diff --git a/Doc/html/general__tim_8c__incl.png b/Doc/html/general__tim_8c__incl.png index 616abfe5664e201f7dbb808ac217117f039bb4dc..d4ca6a672e6da494030df10e3bd1afadd50e6ec1 100644 GIT binary patch literal 8812 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 literal 8453 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 - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Src/general_tim.c Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Src/general_tim.c Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
- + - +
-
#define check_null_ptr_1(p1)
Проверить один указатель на NULL.
Definition mylibs_defs.h:38
#define check_null_ptr_3(p1, p2, p3)
Проверить три указателя на NULL.
Definition mylibs_defs.h:44
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
Definition mylibs_defs.h:31
-
#define GPIO_TIM_Alternate_Mapping(INSTANCE)
Маппинг альтернативной функции SPI между GPIO.
+
#define GPIO_TIM_Alternate_Mapping(INSTANCE)
Маппинг альтернативной функции TIM между GPIO.
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
int GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart)
Считать состоянии кнопки
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
Инициализировать кнопку (структуру кнопки)
@@ -888,12 +896,11 @@ $(function(){initNavTree('general__tim_8c_source.html','',''); });
float sTimFreqHz
Желаемая частота таймера
- diff --git a/Doc/html/general__tim_8h.html b/Doc/html/general__tim_8h.html index 534318f..02f3cb8 100644 --- a/Doc/html/general__tim_8h.html +++ b/Doc/html/general__tim_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
+
general_tim.h File Reference
@@ -105,87 +113,109 @@ $(function(){initNavTree('general__tim_8h.html','',''); }); More...

#include "mylibs_defs.h"
#include "general_gpio.h"
-
Include dependency graph for general_tim.h:
+
+ + Include dependency graph for general_tim.h:
-
This graph shows which files directly or indirectly include this file:
+
+ + This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

- - + - + + +

+

Classes

struct  TIM_SettingsTypeDef
struct  TIM_SettingsTypeDef
 Структура инициализации таймера More...
struct  TIM_EncoderTypeDef
 
struct  TIM_EncoderTypeDef
 Структура инициализации енкодера More...
 
- + + + + + + + + + + + + + + + + +

+

Macros

#define HAL_TIM_MODULE_ENABLED
 
#define USE_TIM1
 Включить TIM1 в TIM_Base_MspInit.
 
#define USE_TIM2
 Включить TIM2 в TIM_Base_MspInit.
 
#define USE_TIM3
 Включить TIM3 в TIM_Base_MspInit.
 
#define USE_TIM4
 Включить TIM4 в TIM_Base_MspInit.
 
#define USE_TIM5
 Включить TIM5 в TIM_Base_MspInit.
 
#define USE_TIM6
 Включить TIM6 в TIM_Base_MspInit.
 
#define USE_TIM7
 Включить TIM7 в TIM_Base_MspInit.
 
#define USE_TIM8
 Включить TIM8 в TIM_Base_MspInit.
 
#define USE_TIM9
 Включить TIM9 в TIM_Base_MspInit.
 
#define USE_TIM10
 Включить TIM10 в TIM_Base_MspInit.
 
#define USE_TIM11
 Включить TIM11 в TIM_Base_MspInit.
 
#define USE_TIM12
 Включить TIM12 в TIM_Base_MspInit.
 
#define USE_TIM13
 Включить TIM13 в TIM_Base_MspInit.
 
#define USE_TIM14
 Включить TIM14 в TIM_Base_MspInit.
 
#define TIM_IT_CONF_Pos   0
 
#define TIM_IT_CONF   (1<<(TIM_IT_CONF_Pos))
 
- +
} +

+

Enumerations

enum  TIM_ITModeTypeDef { TIM_DEFAULT = 0 , TIM_IT_MODE = (1<<( 0 )) }
 Режим прерываний таймера More...
 
enum  TIM_MHzTickBaseTypeDef {
  TIM_Base_Disable = 0 , TIM_TickBase_1US = 1 @@ -198,37 +228,49 @@ Enumerations
 Длительность тика таймера (частота тактирования таймера) More...
 
- + + + + + + + + + + +

+

Functions

HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
 Инициализация выхода ШИМ таймера.
 
HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
 Инициализация OC компаратора таймера.
 
HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
 Инициализация режима энкодер у таймера.
 
HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
 Считать энкодер.
 
int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
 Считать кнопку энкодера.
 
HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
 Начать отсчет неблокирующей задержки.
 
HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (блокирующая).
 
HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
 Задержка в тиках таймера (неблокирующая).
 
HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
 Инициализация таймера.
 
void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
 Инициализация CLK и NVIC таймеров.
 
void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
 Деинициализация CLK и NVIC таймеров.
 
-

Detailed Description

+

Detailed Description

Заголовочный файл для модуля инициализации таймеров и работы с ними.

Definition in file general_tim.h.

-

Macro Definition Documentation

+

Macro Definition Documentation

◆ TIM_IT_CONF_Pos

@@ -263,19 +305,11 @@ Functions
- - diff --git a/Doc/html/general__tim_8h__dep__incl.map b/Doc/html/general__tim_8h__dep__incl.map index e76bc39..3dcd765 100644 --- a/Doc/html/general__tim_8h__dep__incl.map +++ b/Doc/html/general__tim_8h__dep__incl.map @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/Doc/html/general__tim_8h__dep__incl.md5 b/Doc/html/general__tim_8h__dep__incl.md5 index abe2711..2434b2c 100644 --- a/Doc/html/general__tim_8h__dep__incl.md5 +++ b/Doc/html/general__tim_8h__dep__incl.md5 @@ -1 +1 @@ -44714191f83fa51a72cbc1377ffdbdff \ No newline at end of file +74541afe89b6c16b8591605dc764fc98 \ No newline at end of file diff --git a/Doc/html/general__tim_8h__dep__incl.png b/Doc/html/general__tim_8h__dep__incl.png index c7c1671659597a001b31542966a438f42e3cd9d9..6bb7cd86bb3cbc2e24cb8628422ba8482fdbdac9 100644 GIT binary patch literal 6891 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 literal 5296 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 - - - - - - - - - - + + + + + + + + + + + diff --git a/Doc/html/general__tim_8h__incl.md5 b/Doc/html/general__tim_8h__incl.md5 index c5ffabb..d78e9c9 100644 --- a/Doc/html/general__tim_8h__incl.md5 +++ b/Doc/html/general__tim_8h__incl.md5 @@ -1 +1 @@ -8d2ac3de78aaeedbad6de045ad16b161 \ No newline at end of file +8ec1d8e42b4cabc9ae1262ea0306324b \ No newline at end of file diff --git a/Doc/html/general__tim_8h__incl.png b/Doc/html/general__tim_8h__incl.png index ac28d97f201037167334aba7572792f6a0547bcd..481c01cecb7b44c23399e184001d443963333866 100644 GIT binary patch literal 7680 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 l34l8^Sa0$DbLAhOqrS - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + - +
-
22
23/////////////////////////////////////////////////////////////////////
24/////////////////////////---USER SETTINGS---/////////////////////////
-
25/**
+
25/**
26 * @addtogroup TIM_INIT Init defines
27 * @ingroup MYLIBS_TIM_GENERAL
28 * @brief Настройка таймеров
@@ -150,12 +158,12 @@ $(function(){initNavTree('general__tim_8h_source.html','',''); });
48 * @}
49 */
50/////////////////////////---USER SETTINGS---/////////////////////////
-
51#include "mylibs_defs.h"
+
51#include "mylibs_defs.h"
52#include "general_gpio.h"
53
54/////////////////////////////////////////////////////////////////////
55////////////////////////////---DEFINES---////////////////////////////
-
56#define TIM_IT_CONF_Pos 0
+
56#define TIM_IT_CONF_Pos 0
57//#define TIM_PWM_CONF_Pos 1
58//#define TIM_CLCK_SRC_CONF_Pos 2
59//#define TIM_SLAVE_CONF_Pos 3
@@ -166,12 +174,12 @@ $(function(){initNavTree('general__tim_8h_source.html','',''); });
64//#define TIM_PWM_CONF (1<<(TIM_PWM_Pos))
65
66////////////////////////////---DEFINES---////////////////////////////]
-
67
+
67
68
69
70/////////////////////////////////////////////////////////////////////
71///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
72/**
+
72/**
73 * @brief Режим прерываний таймера
74 * @ingroup MYLIBS_TIM_GENERAL
75 */
@@ -264,10 +272,10 @@ $(function(){initNavTree('general__tim_8h_source.html','',''); });
156///////////////////////---STRUCTURES & ENUMS---//////////////////////
-
157
+
157
158/////////////////////////////////////////////////////////////////////
159///////////////////////////---FUNCTIONS---///////////////////////////
-
160/**
+
160/**
161 * @addtogroup MYLIBS_TIM_OC PWM/OC Channels tools
162 * @ingroup MY_LIBS_TIM
163 * @brief Функции для инициализации базовых функций каналов таймера
@@ -329,7 +337,7 @@ $(function(){initNavTree('general__tim_8h_source.html','',''); });
219 * @}
220 */
221///////////////////////////---FUNCTIONS---///////////////////////////
-
222
+
222
223
224#endif // __TIM_GENERAL_H_
Заголовочный файл для модуля инициализации портов и работы с ними.
@@ -380,12 +388,11 @@ $(function(){initNavTree('general__tim_8h_source.html','',''); });
float sTimFreqHz
Желаемая частота таймера
- diff --git a/Doc/html/globals.html b/Doc/html/globals.html index b470d85..66ad2d8 100644 --- a/Doc/html/globals.html +++ b/Doc/html/globals.html @@ -3,7 +3,7 @@ - + MyLibs: File Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented file members with links to the documentation:
-

- a -

-
diff --git a/Doc/html/globals_defs.html b/Doc/html/globals_defs.html index 77ff945..29ec4f2 100644 --- a/Doc/html/globals_defs.html +++ b/Doc/html/globals_defs.html @@ -3,7 +3,7 @@ - + MyLibs: File Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented macros with links to the documentation:
-

- a -

-
diff --git a/Doc/html/globals_enum.html b/Doc/html/globals_enum.html index 6f657c5..5e793c5 100644 --- a/Doc/html/globals_enum.html +++ b/Doc/html/globals_enum.html @@ -3,7 +3,7 @@ - + MyLibs: File Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
-
diff --git a/Doc/html/globals_eval.html b/Doc/html/globals_eval.html index 0a9db7f..6328d76 100644 --- a/Doc/html/globals_eval.html +++ b/Doc/html/globals_eval.html @@ -3,7 +3,7 @@ - + MyLibs: File Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
-
diff --git a/Doc/html/globals_func.html b/Doc/html/globals_func.html index 1c29fbd..fca3e0d 100644 --- a/Doc/html/globals_func.html +++ b/Doc/html/globals_func.html @@ -3,7 +3,7 @@ - + MyLibs: File Members @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
Here is a list of all documented functions with links to the documentation:
-

- e -

-
diff --git a/Doc/html/graph_legend.html b/Doc/html/graph_legend.html index 141b423..dc6f4f9 100644 --- a/Doc/html/graph_legend.html +++ b/Doc/html/graph_legend.html @@ -3,7 +3,7 @@ - + MyLibs: Graph Legend @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
  • A dark red arrow is used for private inheritance.
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    -
    diff --git a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html index 91e6dff..08e7802 100644 --- a/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s.html @@ -3,7 +3,7 @@ - + MyLibs: Bit access defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Bit access defines
    + +
    Bit access defines

    Макросы и typedef'ы для работы с битами в unsigned типах. More...

    -
    Collaboration diagram for Bit access defines:
    +
    + + Collaboration diagram for Bit access defines:
    - - - - - + + + + + + + +

    +

    Classes

    union  uint8_BitTypeDef
    union  uint16_BitTypeDef
    union  uint32_BitTypeDef
    union  uint64_BitTypeDef
    union  uint8_BitTypeDef
     
    union  uint16_BitTypeDef
     
    union  uint32_BitTypeDef
     
    union  uint64_BitTypeDef
     
    - - + - + + - + + - + + +

    +

    Macros

    #define uint8_bit(_uint8_, _bit_)
    #define uint8_bit(_uint8_, _bit_)   (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
     Получить n-й бит из uint8_t.
    #define uint16_bit(_uint8_, _bit_)
     
    #define uint16_bit(_uint8_, _bit_)   (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
     Получить n-й бит из uint16_t.
    #define uint32_bit(_uint8_, _bit_)
     
    #define uint32_bit(_uint8_, _bit_)   (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
     Получить n-й бит из uint32_t.
    #define uint64_bit(_uint8_, _bit_)
     
    #define uint64_bit(_uint8_, _bit_)   (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
     Получить n-й бит из uint64_t.
     
    -

    Detailed Description

    +

    Detailed Description

    Макросы и typedef'ы для работы с битами в unsigned типах.

    В этом файле определены макросы для получения значения конкретного бита^

  • Макросы возвращают 0 или 1.
  • -
  • Доступ реализован через приведение к union с битовыми полями, поэтому это безопасный способ работы с отдельными битами без ручного сдвига и маскирования.
  • +
  • Доступ реализован через приведение к union с битовыми полями, поэтому это безопасный способ работы с отдельными битами без ручного сдвига и маскирования.
  • -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ uint8_bit

    @@ -162,18 +177,16 @@ Macros #define uint8_bit ( - _uint8_, + _uint8_, - _bit_ ) + _bit_ )   (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    -Value:
    (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    - -
    +

    Получить n-й бит из uint8_t.

    Parameters
    @@ -198,18 +211,16 @@ Macros - + - +
    #define uint16_bit ( _uint8_, _uint8_,
    _bit_ ) _bit_ )   (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    -Value:
    (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    - -
    +

    Получить n-й бит из uint16_t.

    Parameters
    @@ -234,18 +245,16 @@ Macros - + - +
    #define uint32_bit ( _uint8_, _uint8_,
    _bit_ ) _bit_ )   (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    -Value:
    (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    - -
    +

    Получить n-й бит из uint32_t.

    Parameters
    @@ -270,18 +279,16 @@ Macros - + - +
    #define uint64_bit ( _uint8_, _uint8_,
    _bit_ ) _bit_ )   (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    -Value:
    (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
    - -
    +

    Получить n-й бит из uint64_t.

    Parameters
    @@ -299,18 +306,10 @@ Macros - - diff --git a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html index d0f6ddf..0aa93d9 100644 --- a/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___d_e_l_a_y_s___d_e_f_i_n_e_s.html @@ -3,7 +3,7 @@ - +MyLibs: Delays defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + -
    @@ -71,9 +73,10 @@ $(function() {
    -
    -
    Delays defines
    + +
    Delays defines

    Макросы и определения для работы с задержками в миллисекундах. More...

    -
    Collaboration diagram for Delays defines:
    +
    + + Collaboration diagram for Delays defines:
    - - + - + + - + + - + + +

    +

    Macros

    #define msDelay(_ms_)
    #define msDelay(_ms_)   HAL_Delay(_ms_)
     Задержка на указанное количество миллисекунд.
    #define msDelayStart(_pvar_)
     
    #define msDelayStart(_pvar_)   *(_pvar_) = HAL_GetTick()
     Начать отсчет задержки.
    #define msDelayWhileActive(_ms_, _pvar_)
     
    #define msDelayWhileActive(_ms_, _pvar_)   (HAL_GetTick() - *(_pvar_) < _ms_)
     Проверяет, активна ли задержка.
    #define msDelayWaitDone(_ms_, _pvar_)
     
    #define msDelayWaitDone(_ms_, _pvar_)   (HAL_GetTick() - *(_pvar_) >= _ms_)
     Проверяет, завершилась ли задержка.
     
    -

    Detailed Description

    +

    Detailed Description

    Макросы и определения для работы с задержками в миллисекундах.

    Этот блок содержит макросы для реализации задержек с использованием HAL или FreeRTOS:

    • msDelay — простая задержка заданной длительности;
    • @@ -133,7 +143,7 @@ Macros
    • msDelayWhileActive — проверка, активна ли задержка;
    • msDelayWaitDone — проверка, завершена ли задержка. Эти макросы удобны для реализации неблокирующих задержек.
    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ msDelay

    @@ -143,13 +153,12 @@ Macros #define msDelay ( - _ms_) - + _ms_) +    HAL_Delay(_ms_)
    -Value:
    HAL_Delay(_ms_)
    -
    +

    Задержка на указанное количество миллисекунд.

    Parameters
    @@ -172,13 +181,12 @@ Macros - - + +
    #define msDelayStart ( _pvar_) _pvar_)   *(_pvar_) = HAL_GetTick()
    -Value:
    *(_pvar_) = HAL_GetTick()
    -
    +

    Начать отсчет задержки.

    Parameters
    @@ -202,17 +210,16 @@ Macros - + - +
    #define msDelayWhileActive ( _ms_, _ms_,
    _pvar_ ) _pvar_ )   (HAL_GetTick() - *(_pvar_) < _ms_)
    -Value:
    (HAL_GetTick() - *(_pvar_) < _ms_)
    -
    +

    Проверяет, активна ли задержка.

    Parameters
    @@ -246,17 +253,16 @@ Macros - + - +
    #define msDelayWaitDone ( _ms_, _ms_,
    _pvar_ ) _pvar_ )   (HAL_GetTick() - *(_pvar_) >= _ms_)
    -Value:
    (HAL_GetTick() - *(_pvar_) >= _ms_)
    -
    +

    Проверяет, завершилась ли задержка.

    Parameters
    @@ -283,18 +289,10 @@ Macros - - diff --git a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html index 02199b4..a3931c8 100644 --- a/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html +++ b/Doc/html/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html @@ -3,7 +3,7 @@ - +MyLibs: Error Handler defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + -
    @@ -71,9 +73,10 @@ $(function() {
    -
    -
    Error Handler defines
    + +
    Error Handler defines

    Дефайны для обработки ошибок More...

    -
    Collaboration diagram for Error Handler defines:
    +
    + + Collaboration diagram for Error Handler defines:
    - - + - + + - + + - + + - + + - + + +

    +

    Macros

    #define MyLibs_Error_Handler(params)
    #define MyLibs_Error_Handler(params)   Error_Handler(params)
     Error_Handler который будет вызыватся в библиотеке
    #define check_null_ptr_1(p1)
     
    #define check_null_ptr_1(p1)   (p1 == NULL)
     Проверить один указатель на NULL.
    #define check_null_ptr_2(p1, p2)
     
    #define check_null_ptr_2(p1, p2)   ((p1 == NULL) || (p1 != NULL && p2 == NULL))
     Проверить два указателя на NULL.
    #define check_null_ptr_3(p1, p2, p3)
     
    #define check_null_ptr_3(p1, p2, p3)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
     Проверить три указателя на NULL.
    #define check_null_ptr_4(p1, p2, p3, p4)
     
    #define check_null_ptr_4(p1, p2, p3, p4)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
     Проверить четыре указателя на NULL.
    #define check_null_ptr_5(p1, p2, p3, p4, p5)
     
    #define check_null_ptr_5(p1, p2, p3, p4, p5)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
     Проверить пять указателей на NULL.
     
    - +

    +

    Functions

    void Error_Handler (void)
     
    -

    Detailed Description

    +

    Detailed Description

    Дефайны для обработки ошибок

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ MyLibs_Error_Handler

    @@ -146,13 +160,12 @@ void Error_Handler (vo #define MyLibs_Error_Handler ( - params) - + params) +    Error_Handler(params)
    -Value:
    Error_Handler(params)
    -
    +

    Error_Handler который будет вызыватся в библиотеке

    Definition at line 31 of file mylibs_defs.h.

    @@ -168,13 +181,12 @@ void Error_Handler (vo #define check_null_ptr_1 ( - p1) - + p1) +    (p1 == NULL)
    -Value:
    (p1 == NULL)
    -
    +

    Проверить один указатель на NULL.

    Definition at line 38 of file mylibs_defs.h.

    @@ -190,17 +202,16 @@ void Error_Handler (vo #define check_null_ptr_2 ( - p1, + p1, - p2 ) + p2 )   ((p1 == NULL) || (p1 != NULL && p2 == NULL))
    -Value:
    ((p1 == NULL) || (p1 != NULL && p2 == NULL))
    -
    +

    Проверить два указателя на NULL.

    Definition at line 41 of file mylibs_defs.h.

    @@ -216,22 +227,21 @@ void Error_Handler (vo #define check_null_ptr_3 ( - p1, + p1, - p2, + p2, - p3 ) + p3 )   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
    -Value:
    ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
    -
    +

    Проверить три указателя на NULL.

    Definition at line 44 of file mylibs_defs.h.

    @@ -247,27 +257,26 @@ void Error_Handler (vo #define check_null_ptr_4 ( - p1, + p1, - p2, + p2, - p3, + p3, - p4 ) + p4 )   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
    -Value:
    ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
    -
    +

    Проверить четыре указателя на NULL.

    Definition at line 47 of file mylibs_defs.h.

    @@ -283,32 +292,31 @@ void Error_Handler (vo #define check_null_ptr_5 ( - p1, + p1, - p2, + p2, - p3, + p3, - p4, + p4, - p5 ) + p5 )   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
    -Value:
    ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
    -
    +

    Проверить пять указателей на NULL.

    Definition at line 50 of file mylibs_defs.h.

    @@ -317,18 +325,10 @@ void Error_Handler (vo
    - -
    diff --git a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.html b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.html index 3581a16..14d4da5 100644 --- a/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.html +++ b/Doc/html/group___e_v_o_l_v_e___c_o_n_f_i_g.html @@ -3,7 +3,7 @@ - + MyLibs: Evolve configs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Evolve configs
    + +
    Evolve configs

    Конфигурация однослойного персептрона и алгоритма обучения More...

    -
    Collaboration diagram for Evolve configs:
    +
    + + Collaboration diagram for Evolve configs:
    - + + +

    +

    Macros

    #define ENABLE_EVOLVE_OPTIMIZATION
     Включить оптимизацию параметров
     
    #define EVOLVE_MAX_PARAMS   20
     Максимальное количество параметров
     
    #define EVOLVE_MAX_CANDIDATES   100
     Максимальное количество кандидатов для обучения
     
    -

    Detailed Description

    +

    Detailed Description

    Конфигурация однослойного персептрона и алгоритма обучения

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ ENABLE_EVOLVE_OPTIMIZATION

    @@ -182,18 +191,10 @@ Macros
    - -
    diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html index 641eb2f..89e1aeb 100644 --- a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html @@ -3,7 +3,7 @@ - + MyLibs: Evolve optimizer @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Evolve optimizer
    + +
    Evolve optimizer

    Библиотека для эволюционного подбора параметров More...

    -
    Collaboration diagram for Evolve optimizer:
    +
    + + Collaboration diagram for Evolve optimizer:
    - - + +

    +

    Classes

    struct  EvolveOptimizer_t
    struct  EvolveOptimizer_t
     Структура эволюционного оптимизатора More...
     
    - - - - - - + + + + + + + + + + + + + + + + +

    +

    Macros

    #define PARAM_SCALE_Q16(x, min_val, max_val)
     Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
    #define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
     Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
    #define local_time()
    #define PARAM_SCALE(x, min_val, max_val)   (((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
     Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
     
    #define PARAM_UNSCALE(val, min_val, max_val)   (((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
     Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
     
    #define local_time()   HAL_GetTick()
     Локальное время
     
    #define EVOLVE_MUTATION_MIN_PCT   10
     Минимальная мутация (в процентах от Loss)
     
    #define EVOLVE_MUTATION_MAX_PCT   100
     Максимальная мутация (в процентах от Loss)
     
    #define ELOVLE_N_ELITE_CANDIDATE   2
     Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)
     
    - - - - - + + + + + +

    +

    Functions

    __STATIC_INLINE int EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
     Инициализация эволюционного оптимизатора.
    __STATIC_INLINE int EvolveOptimizer_Step (EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
     Один шаг эволюционного оптимизатора.
    __STATIC_INLINE int EvolveOptimizer_Init (EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
     Инициализация эволюционного оптимизатора.
     
    __STATIC_INLINE int EvolveOptimizer_Step (EvolveOptimizer_t *opt, float *params, float loss)
     Один шаг эволюционного оптимизатора.
     
    -

    Detailed Description

    +

    Detailed Description

    Библиотека для эволюционного подбора параметров

    Поддерживает:

    • Любое количество параметров
    • @@ -147,13 +170,16 @@ Functions
    • ENABLE_EVOLVE_OPTIMIZATION - Включить оптимизацию параметров Если библиотека отключена ENABLE_EVOLVE_OPTIMIZATION, то вставляются заглушки, никак не влияющие на параметры и остальную программу
    • EVOLVE_MAX_PARAMS - Максимальное количество параметров
    • EVOLVE_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
    • +
    • (опционально) EVOLVE_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
    • +
    • (опционально) EVOLVE_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
    • +
    • (опционально) ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений
    Пример использования:
    #define N_PARAMS 4
    #define N_CANDIDATES 100
    #define N_BEST 10
    -
    #define IQ_MUTATION (PARAM_SCALE_Q16(0.1, 0, 1))
    -
    int32_t params[N_PARAMS];
    +
    #define MUTATION 0.1f
    +
    float params[N_PARAMS];
    // Формирование параметров
    @@ -161,90 +187,89 @@ Functions
    float param_f = 0.01f;
    uint8_t param_u8 = 40;
    int16_t param_i16 = 1600;
    -
    params[0] = PARAM_SCALE_Q16(param_u16, 0, 1000);
    -
    params[1] = PARAM_SCALE_Q16(param_f, 0.001f, 0.1f);
    -
    params[2] = PARAM_SCALE_Q16(param_u8, 10, 100);
    -
    params[3] = PARAM_SCALE_Q16(param_i16, 500, 5000);
    +
    params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);
    +
    params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);
    +
    params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
    +
    params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
    // Инициалиазция
    -
    EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, IQ_MUTATION, params);
    +
    EvolveOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
    // Шаг эволюции
    -
    int32_t loss = calc_iq_loss(); // расчет эффективности параметров
    -
    EvolveOptimizer_Step(&optimizer, params, loss);
    +
    float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
    +
    EvolveOptimizer_Step(&optimizer, params, loss);
    // Взятие следующих для эволюции параметров
    -
    param_u16 = PARAM_UNSCALE_Q16(params[0], 0, 1000);
    -
    param_f = PARAM_UNSCALE_Q16(params[1], 0.001f, 0.1f);
    -
    param_u8 = PARAM_UNSCALE_Q16(params[2], 10, 100);
    -
    param_i16 = PARAM_UNSCALE_Q16(params[3], 500, 5000);
    +
    param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
    +
    param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
    +
    param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
    +
    param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
    Заголовочный файл для адаптивного подбора параметров
    -
    #define PARAM_UNSCALE_Q16(q16_val, min_val, max_val)
    Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].
    -
    __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, int32_t *params, int32_t loss)
    Один шаг эволюционного оптимизатора.
    -
    __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, uint16_t iq_mutation, int32_t *start_params)
    Инициализация эволюционного оптимизатора.
    -
    #define PARAM_SCALE_Q16(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)
    -
    Структура эволюционного оптимизатора
    -
    -

    Macro Definition Documentation

    - -

    ◆ PARAM_SCALE_Q16

    +
    __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t *opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, float mutation_amp, float *start_params)
    Инициализация эволюционного оптимизатора.
    +
    #define PARAM_SCALE(x, min_val, max_val)
    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)
    +
    #define PARAM_UNSCALE(val, min_val, max_val)
    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].
    +
    __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t *opt, float *params, float loss)
    Один шаг эволюционного оптимизатора.
    +
    Структура эволюционного оптимизатора
    +

    + +

    Macro Definition Documentation

    + +

    ◆ PARAM_SCALE

    - + - + - + - +
    #define PARAM_SCALE_Q16#define PARAM_SCALE ( x, x,
    min_val, min_val,
    max_val ) max_val )   (((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val)))
    -Value:
    ((int32_t)((((float)(x) - (float)(min_val)) / ((float)(max_val) - (float)(min_val))) * 65536.0f))
    -
    -

    Линейное масштабирование x из диапазона [min_val, max_val] в Q16.16 [0, 65536)

    -

    Definition at line 71 of file evolve_optimizer.h.

    +

    Линейное масштабирование x из диапазона [min_val, max_val] в диапазон [0, 1)

    + +

    Definition at line 73 of file evolve_optimizer.h.

    - -

    ◆ PARAM_UNSCALE_Q16

    + +

    ◆ PARAM_UNSCALE

    - + - + - + - +
    #define PARAM_UNSCALE_Q16#define PARAM_UNSCALE ( q16_val, val,
    min_val, min_val,
    max_val ) max_val )   (((float)(val)) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
    -Value:
    (((float)(q16_val) / 65536.0f) * ((float)(max_val) - (float)(min_val)) + (float)(min_val))
    -
    -

    Обратное линейное масштабирование Q16.16 значения в диапазон [min_val, max_val].

    -

    Definition at line 77 of file evolve_optimizer.h.

    +

    Обратное линейное масштабирование значения из [0, 1) в диапазон [min_val, max_val].

    + +

    Definition at line 79 of file evolve_optimizer.h.

    @@ -257,22 +282,75 @@ Functions #define local_time ( - ) - + ) +    HAL_GetTick()
    -Value:
    HAL_GetTick()
    -
    +

    Локальное время

    -

    Definition at line 81 of file evolve_optimizer.h.

    +

    Definition at line 83 of file evolve_optimizer.h.

    -

    Function Documentation

    - -

    ◆ EvolveOptimizer_Init()

    + +

    ◆ EVOLVE_MUTATION_MIN_PCT

    + +
    +
    + + + + +
    #define EVOLVE_MUTATION_MIN_PCT   10
    +
    + +

    Минимальная мутация (в процентах от Loss)

    + +

    Definition at line 89 of file evolve_optimizer.h.

    + +
    +
    + +

    ◆ EVOLVE_MUTATION_MAX_PCT

    + +
    +
    + + + + +
    #define EVOLVE_MUTATION_MAX_PCT   100
    +
    + +

    Максимальная мутация (в процентах от Loss)

    + +

    Definition at line 92 of file evolve_optimizer.h.

    + +
    +
    + +

    ◆ ELOVLE_N_ELITE_CANDIDATE

    + +
    +
    + + + + +
    #define ELOVLE_N_ELITE_CANDIDATE   2
    +
    + +

    Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2)

    + +

    Definition at line 95 of file evolve_optimizer.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ EvolveOptimizer_Init()

    @@ -280,32 +358,32 @@ Functions __STATIC_INLINE int EvolveOptimizer_Init ( - EvolveOptimizer_t * opt, + EvolveOptimizer_t * opt, - uint16_t n_params, + uint16_t n_params, - uint16_t n_cand, + uint16_t n_cand, - uint16_t n_best, + uint16_t n_best, - uint16_t iq_mutation, + float mutation_amp, - int32_t * start_params ) + float * start_params )
    @@ -317,19 +395,19 @@ Functions n_paramsКоличество параметров в одном кандидате n_candКоличество кандидатов n_bestКоличество лучших, усредняемых - iq_mutationАмплитуда мутации в Q16.16 - start_paramsНачальные параметры (Q16.16) + mutation_ampАмплитуда мутации (в диапазоне 0.0–1.0) + start_paramsНачальные параметры (в диапазоне 0.0–1.0)
    Returns
    0 — если окей, -1 — если ошибка
    -

    Definition at line 132 of file evolve_optimizer.h.

    +

    Definition at line 148 of file evolve_optimizer.h.

    - -

    ◆ EvolveOptimizer_Step()

    + +

    ◆ EvolveOptimizer_Step()

    @@ -337,17 +415,17 @@ Functions __STATIC_INLINE int EvolveOptimizer_Step ( - EvolveOptimizer_t * opt, + EvolveOptimizer_t * opt, - int32_t * params, + float * params, - int32_t loss ) + float loss )
    @@ -357,7 +435,7 @@ Functions - +
    optУказатель на структуру оптимизатора
    paramsМассив параметров, которые будут обновлены (на выходе — новые параметры)
    lossLoss текущего кандидата (Q16.16)
    lossLoss текущего кандидата
    @@ -365,24 +443,16 @@ Functions

    Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n_cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n_best лучших с добавлением мутации.

    На выходе params содержит параметры следующего кандидата для измерений.

    Note
    Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени
    -

    Definition at line 187 of file evolve_optimizer.h.

    +

    Definition at line 216 of file evolve_optimizer.h.

    - - diff --git a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js index 701b377..d3344de 100644 --- a/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js +++ b/Doc/html/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.js @@ -1,18 +1,22 @@ var group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r = [ [ "EvolveOptimizer_t", "struct_evolve_optimizer__t.html", [ + [ "stability", "struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c", null ], [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ], [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ], [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ], - [ "iq_mutation", "struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5", null ], + [ "mutation_amp", "struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8", null ], [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ], - [ "loss", "struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d", null ], - [ "candidates", "struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d", null ], + [ "loss", "struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df", null ], + [ "candidates", "struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4", null ], [ "sorted_idx", "struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a", null ] ] ], - [ "PARAM_SCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc", null ], - [ "PARAM_UNSCALE_Q16", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba", null ], + [ "PARAM_SCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e", null ], + [ "PARAM_UNSCALE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3", null ], [ "local_time", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga9c853b02c22f26023c34d1d404b6d653", null ], - [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gadaf3a90724197e1737d5c70c7bcc75e1", null ], - [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga75acd71c85d4e60dc0eb31bc5780086a", null ] + [ "EVOLVE_MUTATION_MIN_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6", null ], + [ "EVOLVE_MUTATION_MAX_PCT", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc", null ], + [ "ELOVLE_N_ELITE_CANDIDATE", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb", null ], + [ "EvolveOptimizer_Init", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21", null ], + [ "EvolveOptimizer_Step", "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef", null ] ]; \ No newline at end of file diff --git a/Doc/html/group___g_p_i_o___i_n_i_t.html b/Doc/html/group___g_p_i_o___i_n_i_t.html index 259fa68..e643f63 100644 --- a/Doc/html/group___g_p_i_o___i_n_i_t.html +++ b/Doc/html/group___g_p_i_o___i_n_i_t.html @@ -3,7 +3,7 @@ - + MyLibs: Init defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    - + +

    Настройка состояний кнопок и количества тиков в периоде ШИМ More...

    -
    Collaboration diagram for Init defines:
    +
    + + Collaboration diagram for Init defines:
    - + + + + +

    +

    Macros

    #define LED_PWM_TICKS   15
     Количество тиков в периоде ШИМ
     
    #define LED_ON   1
     Состояние пина для включения светодиода
     
    #define LED_OFF   0
     Состояние пина для выключения светодиода
     
    #define SW_ON   1
     Состояние пина при нажатой кнопке
     
    #define SW_OFF   0
     Состояние пина при отжатой кнопке
     
    -

    Detailed Description

    +

    Detailed Description

    Настройка состояний кнопок и количества тиков в периоде ШИМ

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ LED_PWM_TICKS

    @@ -222,18 +233,10 @@ Macros
    - -
    diff --git a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html index 2d37dfe..f0e726d 100644 --- a/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html +++ b/Doc/html/group___l_i_b_s___c_o_n_f_i_g.html @@ -3,7 +3,7 @@ - + MyLibs: Libraries configs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Libraries configs
    + +
    Libraries configs

    Подключение различных модулей библиотеки More...

    -
    Collaboration diagram for Libraries configs:
    +
    + + Collaboration diagram for Libraries configs:
    - + + + + +

    +

    Macros

    #define INCLUDE_EVOLVE_OPTIMIZER
     Подключить библиотеку для оптимизации параметров
     
    #define INCLUDE_BIT_ACCESS_LIB
     Подключить библиотеку с typedef с битовыми полями
     
    #define INCLUDE_TRACKERS_LIB
     Подключить библиотеку с трекерами
     
    #define INCLUDE_TRACE_LIB
     Подключить библиотеку с трейсами
     
    #define INCLUDE_GENERAL_PERIPH_LIBS
     Подключить библиотеку с периферией
     
    -

    Detailed Description

    +

    Detailed Description

    Подключение различных модулей библиотеки

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ INCLUDE_EVOLVE_OPTIMIZER

    @@ -222,18 +233,10 @@ Macros
    - -
    diff --git a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html index b588aa0..7b2cede 100644 --- a/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html +++ b/Doc/html/group___m_y___l_i_b_s___g_p_i_o.html @@ -3,7 +3,7 @@ - + MyLibs: GPIO Tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    GPIO Tools
    + +
    GPIO Tools

    Функции и макросы для удобной работы с GPIO. More...

    -
    Collaboration diagram for GPIO Tools:
    +
    + + Collaboration diagram for GPIO Tools:
    - - + - + + - + + +

    +

    Topics

     General tools
     General tools
     Общие функции/макросы для работы с GPIO.
     Switch tools
     
     Switch tools
     Функции для работы с GPIO, как с кнопкой
     LED tools
     
     LED tools
     Функции для работы с GPIO, для управления светодиодом
     
    -

    Detailed Description

    +

    Detailed Description

    Функции и макросы для удобной работы с GPIO.

    Модуль предоставляет универсальные инструменты для работы с GPIO):

    • General tools — инициализация и общие функции работы с портами.
    • @@ -135,18 +144,10 @@ Topics
    - -
    diff --git a/Doc/html/group___m_y___l_i_b_s___t_i_m.html b/Doc/html/group___m_y___l_i_b_s___t_i_m.html index 5bc3728..4afff85 100644 --- a/Doc/html/group___m_y___l_i_b_s___t_i_m.html +++ b/Doc/html/group___m_y___l_i_b_s___t_i_m.html @@ -3,7 +3,7 @@ - + MyLibs: TIM Tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    TIM Tools
    + +
    TIM Tools

    Функции и макросы для удобной работы с TIM. More...

    -
    Collaboration diagram for TIM Tools:
    +
    + + Collaboration diagram for TIM Tools:
    - - + - + + - + + - + + +

    +

    Topics

     PWM/OC Channels tools
     PWM/OC Channels tools
     Функции для инициализации базовых функций каналов таймера
     Encoder tools
     
     Encoder tools
     Функции для считывания энкодера
     Delay tools
     
     Delay tools
     Функции для формирования задержек с помощью таймеров
     General tools
     
     General tools
     Функции для базовой инициализации таймеров
     
    -

    Detailed Description

    +

    Detailed Description

    Функции и макросы для удобной работы с TIM.

    Модуль предоставляет универсальные инструменты для работы с TIM:

    • General tools — базовая инициализация таймеров и прерываний.
    • @@ -141,18 +151,10 @@ Topics
    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___a_l_l.html b/Doc/html/group___m_y_l_i_b_s___a_l_l.html index 2edb3f9..db4abd7 100644 --- a/Doc/html/group___m_y_l_i_b_s___a_l_l.html +++ b/Doc/html/group___m_y_l_i_b_s___a_l_l.html @@ -3,7 +3,7 @@ - + MyLibs: My Libs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    My Libs
    + +
    My Libs

    Все используемые MyLibs библиотеки More...

    -
    Collaboration diagram for My Libs:
    +
    + + Collaboration diagram for My Libs:
    - - + - + + - + + +

    +

    Topics

     Configs
     Configs
     Конфигурации для библиотек MyLibs.
     General Tools
     
     General Tools
     Общие макросы и typedef'ы, используемые по всему проекту
     Peripheral
     
     Peripheral
     Модули для управления периферией
     
    -

    Detailed Description

    +

    Detailed Description

    Все используемые MyLibs библиотеки

    Для подключения библиотеки необходимо:

    • Сконфигурировать mylibs_config.h:
        @@ -138,18 +147,10 @@ Topics
    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html index 04d29e3..837c430 100644 --- a/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html +++ b/Doc/html/group___m_y_l_i_b_s___c_o_n_f_i_g.html @@ -3,7 +3,7 @@ - + MyLibs: Configs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Configs
    + +
    Configs

    Конфигурации для библиотек MyLibs. More...

    -
    Collaboration diagram for Configs:
    +
    + + Collaboration diagram for Configs:
    - - + - + + - + + +

    +

    Topics

     Trace configs
     Trace configs
     Конфигурация трекеров и трассировки
     Evolve configs
     
     Evolve configs
     Конфигурация однослойного персептрона и алгоритма обучения
     Libraries configs
     
     Libraries configs
     Подключение различных модулей библиотеки
     
    -

    Detailed Description

    +

    Detailed Description

    Конфигурации для библиотек MyLibs.

    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html index 093beb8..cfa10db 100644 --- a/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___m_y_l_i_b_s___d_e_f_i_n_e_s.html @@ -3,7 +3,7 @@ - + MyLibs: General Tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    General Tools
    + +
    General Tools

    Общие макросы и typedef'ы, используемые по всему проекту More...

    -
    Collaboration diagram for General Tools:
    +
    + + Collaboration diagram for General Tools:
    - - + - + + - + + - + + - + + - + + - + + +

    +

    Topics

     Bit access defines
     Bit access defines
     Макросы и typedef'ы для работы с битами в unsigned типах.
     Evolve optimizer
     
     Evolve optimizer
     Библиотека для эволюционного подбора параметров
     Error Handler defines
     
     Error Handler defines
     Дефайны для обработки ошибок
     Delays defines
     
     Delays defines
     Макросы и определения для работы с задержками в миллисекундах.
     Utils defines
     
     Utils defines
     Общие вспомогательные макросы
     Trace defines
     
     Trace defines
     Дефайны для работы с трассировкой
     Trackers defines
     
     Trackers defines
     Дефайны для работы с трекерами
     
    -

    Detailed Description

    +

    Detailed Description

    Общие макросы и typedef'ы, используемые по всему проекту

    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html index fb55ba4..14b0ac7 100644 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html @@ -3,7 +3,7 @@ - + MyLibs: General tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    General tools
    + +
    General tools

    Общие функции/макросы для работы с GPIO. More...

    -
    Collaboration diagram for General tools:
    +
    + + Collaboration diagram for General tools:
    - - + +

    +

    Topics

     Init defines
     Init defines
     Настройка состояний кнопок и количества тиков в периоде ШИМ
     
    - - + +

    +

    Macros

    #define GPIO_TIM_Alternate_Mapping(INSTANCE)
     Маппинг альтернативной функции SPI между GPIO.
     Маппинг альтернативной функции TIM между GPIO.
     
    - +

    +

    Functions

    HAL_StatusTypeDef GPIO_Clock_Enable (GPIO_TypeDef *GPIOx)
     Включить тактирование порта GPIO.
     
    -

    Detailed Description

    +

    Detailed Description

    Общие функции/макросы для работы с GPIO.

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ GPIO_TIM_Alternate_Mapping

    @@ -142,7 +153,7 @@ Functions #define GPIO_TIM_Alternate_Mapping ( - INSTANCE) + INSTANCE) @@ -153,14 +164,13 @@ Functions
    (((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
    (0))
    -

    Маппинг альтернативной функции SPI между GPIO.

    -

    Маппинг альтернативной функции TIM между GPIO

    +

    Маппинг альтернативной функции TIM между GPIO.

    Definition at line 69 of file general_gpio.h.

    -

    Function Documentation

    +

    Function Documentation

    ◆ GPIO_Clock_Enable()

    @@ -184,18 +194,10 @@ Functions
    - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html index 3155f94..d4c6383 100644 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html @@ -3,7 +3,7 @@ - + MyLibs: LED tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -

    Функции для работы с GPIO, для управления светодиодом More...

    -
    Collaboration diagram for LED tools:
    +
    + + Collaboration diagram for LED tools:
    - - + +

    +

    Classes

    struct  GPIO_LEDTypeDef
    struct  GPIO_LEDTypeDef
     Структура светодиода More...
     
    - , LED_IS_FADING = 3 } +

    +

    Enumerations

    enum  GPIO_LEDStateTypeDef { LED_IS_OFF = 0 , LED_IS_ON = 1 @@ -127,27 +136,35 @@ Enumerations
     Режимы работы светодиода More...
     
    - + + + + + + +

    +

    Functions

    HAL_StatusTypeDef GPIO_LED_Init (GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State)
     Инициализировать светодиод (структуру светодиода)
     
    HAL_StatusTypeDef GPIO_LED_On (GPIO_LEDTypeDef *led)
     Включить светодиод
     
    HAL_StatusTypeDef GPIO_LED_Off (GPIO_LEDTypeDef *led)
     Выключить светодиод
     
    HAL_StatusTypeDef GPIO_LED_Set (GPIO_LEDTypeDef *led, uint8_t led_state)
     Выставить светодиод по переменной
     
    HAL_StatusTypeDef GPIO_LED_Blink_Start (GPIO_LEDTypeDef *led, uint32_t period)
     Активировать моргание светодиодом
     
    HAL_StatusTypeDef GPIO_LED_Fading_Start (GPIO_LEDTypeDef *led, uint32_t period)
     Активировать моргание светодиодом
     
    void GPIO_LED_Dynamic_Handle (GPIO_LEDTypeDef *led)
     Управление динамическими режимами свечения светодиода
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для работы с GPIO, для управления светодиодом

    -

    Enumeration Type Documentation

    +

    Enumeration Type Documentation

    ◆ GPIO_LEDStateTypeDef

    @@ -176,7 +193,7 @@ Functions
    -

    Function Documentation

    +

    Function Documentation

    ◆ GPIO_LED_Init()

    @@ -186,17 +203,17 @@ Functions HAL_StatusTypeDef GPIO_LED_Init ( - GPIO_LEDTypeDef * led, + GPIO_LEDTypeDef * led, - GPIO_TypeDef * GPIOx, + GPIO_TypeDef * GPIOx, - uint32_t GPIO_PIN_X, + uint32_t GPIO_PIN_X, @@ -286,7 +303,7 @@ Functions HAL_StatusTypeDef GPIO_LED_Set ( - GPIO_LEDTypeDef * led, + GPIO_LEDTypeDef * led, @@ -319,7 +336,7 @@ Functions HAL_StatusTypeDef GPIO_LED_Blink_Start ( - GPIO_LEDTypeDef * led, + GPIO_LEDTypeDef * led, @@ -353,7 +370,7 @@ Functions HAL_StatusTypeDef GPIO_LED_Fading_Start ( - GPIO_LEDTypeDef * led, + GPIO_LEDTypeDef * led, @@ -408,18 +425,10 @@ Functions
    - - diff --git a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html index 82e3bfb..9c2d8b8 100644 --- a/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html +++ b/Doc/html/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html @@ -3,7 +3,7 @@ - + MyLibs: Switch tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Switch tools
    + +
    Switch tools

    Функции для работы с GPIO, как с кнопкой More...

    -
    Collaboration diagram for Switch tools:
    +
    + + Collaboration diagram for Switch tools:
    - - + +

    +

    Classes

    struct  GPIO_SwitchTypeDef
    struct  GPIO_SwitchTypeDef
     Структура кнопки More...
     
    - + +

    +

    Functions

    HAL_StatusTypeDef GPIO_Switch_Init (GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State)
     Инициализировать кнопку (структуру кнопки)
     
    int GPIO_Read_Switch (GPIO_SwitchTypeDef *swstart)
     Считать состоянии кнопки
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для работы с GPIO, как с кнопкой

    -

    Function Documentation

    +

    Function Documentation

    ◆ GPIO_Switch_Init()

    @@ -138,17 +148,17 @@ Functions HAL_StatusTypeDef GPIO_Switch_Init ( - GPIO_SwitchTypeDef * sw, + GPIO_SwitchTypeDef * sw, - GPIO_TypeDef * GPIOx, + GPIO_TypeDef * GPIOx, - uint32_t GPIO_PIN_X, + uint32_t GPIO_PIN_X, @@ -205,18 +215,10 @@ Functions
    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html index be528a7..a0a8774 100644 --- a/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html +++ b/Doc/html/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html @@ -3,7 +3,7 @@ - + MyLibs: Peripheral @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Peripheral
    + +
    Peripheral

    Модули для управления периферией More...

    -
    Collaboration diagram for Peripheral:
    +
    + + Collaboration diagram for Peripheral:
    - - + - + + +

    +

    Topics

     GPIO Tools
     GPIO Tools
     Функции и макросы для удобной работы с GPIO.
     TIM Tools
     
     TIM Tools
     Функции и макросы для удобной работы с TIM.
     
    -

    Detailed Description

    +

    Detailed Description

    Модули для управления периферией

    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html index 0ff461a..e0afecf 100644 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html @@ -3,7 +3,7 @@ - + MyLibs: Delay tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Delay tools
    + +
    Delay tools

    Функции для формирования задержек с помощью таймеров More...

    -
    Collaboration diagram for Delay tools:
    +
    + + Collaboration diagram for Delay tools:
    - + + +

    +

    Functions

    HAL_StatusTypeDef TIM_Delay_Start (TIM_HandleTypeDef *htim)
     Начать отсчет неблокирующей задержки.
     
    HAL_StatusTypeDef TIM_Delay (TIM_HandleTypeDef *htim, uint16_t delay)
     Задержка в тиках таймера (блокирующая).
     
    HAL_StatusTypeDef TIM_Delay_NonBlocking (TIM_HandleTypeDef *htim, uint16_t delay)
     Задержка в тиках таймера (неблокирующая).
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для формирования задержек с помощью таймеров

    -

    Function Documentation

    +

    Function Documentation

    ◆ TIM_Delay_Start()

    @@ -164,7 +173,7 @@ Functions HAL_StatusTypeDef TIM_Delay ( - TIM_HandleTypeDef * htim, + TIM_HandleTypeDef * htim, @@ -198,7 +207,7 @@ Functions HAL_StatusTypeDef TIM_Delay_NonBlocking ( - TIM_HandleTypeDef * htim, + TIM_HandleTypeDef * htim, @@ -225,18 +234,10 @@ Functions
    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html index 7401cc6..e1af34d 100644 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html @@ -3,7 +3,7 @@ - + MyLibs: Encoder tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Encoder tools
    + +
    Encoder tools

    Функции для считывания энкодера More...

    -
    Collaboration diagram for Encoder tools:
    +
    + + Collaboration diagram for Encoder tools:
    - - + +

    +

    Classes

    struct  TIM_EncoderTypeDef
    struct  TIM_EncoderTypeDef
     Структура инициализации енкодера More...
     
    - + + +

    +

    Functions

    HAL_StatusTypeDef TIM_Encoder_Init (TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim)
     Инициализация режима энкодер у таймера.
     
    HAL_StatusTypeDef TIM_Encoder_Read (TIM_EncoderTypeDef *henc)
     Считать энкодер.
     
    int TIM_Encoder_ReadSwitch (TIM_EncoderTypeDef *henc)
     Считать кнопку энкодера.
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для считывания энкодера

    -

    Function Documentation

    +

    Function Documentation

    ◆ TIM_Encoder_Init()

    @@ -140,7 +151,7 @@ Functions HAL_StatusTypeDef TIM_Encoder_Init ( - TIM_EncoderTypeDef * henc, + TIM_EncoderTypeDef * henc, @@ -224,18 +235,10 @@ Functions
    - -
    diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html index 27e851f..ab492db 100644 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html @@ -3,7 +3,7 @@ - + MyLibs: General tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    General tools
    + +
    General tools

    Функции для базовой инициализации таймеров More...

    -
    Collaboration diagram for General tools:
    +
    + + Collaboration diagram for General tools:
    - - + +

    +

    Topics

     Init defines
     Init defines
     Настройка таймеров
     
    - - + +

    +

    Classes

    struct  TIM_SettingsTypeDef
    struct  TIM_SettingsTypeDef
     Структура инициализации таймера More...
     
    - +
    } +

    +

    Enumerations

    enum  TIM_ITModeTypeDef { TIM_DEFAULT = 0 , TIM_IT_MODE = (1<<( 0 )) }
     Режим прерываний таймера More...
     
    enum  TIM_MHzTickBaseTypeDef {
      TIM_Base_Disable = 0 , TIM_TickBase_1US = 1 @@ -143,19 +155,23 @@ Enumerations
     Длительность тика таймера (частота тактирования таймера) More...
     
    - + + +

    +

    Functions

    HAL_StatusTypeDef TIM_Base_Init (TIM_SettingsTypeDef *stim)
     Инициализация таймера.
     
    void TIM_Base_MspInit (TIM_HandleTypeDef *htim, TIM_ITModeTypeDef it_mode)
     Инициализация CLK и NVIC таймеров.
     
    void TIM_Base_MspDeInit (TIM_HandleTypeDef *htim)
     Деинициализация CLK и NVIC таймеров.
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для базовой инициализации таймеров

    -

    Enumeration Type Documentation

    +

    Enumeration Type Documentation

    ◆ TIM_ITModeTypeDef

    @@ -215,7 +231,7 @@ Functions
    -

    Function Documentation

    +

    Function Documentation

    ◆ TIM_Base_Init()

    @@ -262,7 +278,7 @@ Functions void TIM_Base_MspInit ( - TIM_HandleTypeDef * htim, + TIM_HandleTypeDef * htim, @@ -315,18 +331,10 @@ Functions
    - - diff --git a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html index 84523ed..29c0731 100644 --- a/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html +++ b/Doc/html/group___m_y_l_i_b_s___t_i_m___o_c.html @@ -3,7 +3,7 @@ - + MyLibs: PWM/OC Channels tools @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    PWM/OC Channels tools
    + +
    PWM/OC Channels tools

    Функции для инициализации базовых функций каналов таймера More...

    -
    Collaboration diagram for PWM/OC Channels tools:
    +
    + + Collaboration diagram for PWM/OC Channels tools:
    - + +

    +

    Functions

    HAL_StatusTypeDef TIM_Output_PWM_Init (TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN)
     Инициализация выхода ШИМ таймера.
     
    HAL_StatusTypeDef TIM_OC_Comparator_Init (TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
     Инициализация OC компаратора таймера.
     
    -

    Detailed Description

    +

    Detailed Description

    Функции для инициализации базовых функций каналов таймера

    -

    Function Documentation

    +

    Function Documentation

    ◆ TIM_Output_PWM_Init()

    @@ -133,22 +141,22 @@ Functions HAL_StatusTypeDef TIM_Output_PWM_Init ( - TIM_HandleTypeDef * htim, + TIM_HandleTypeDef * htim, - TIM_OC_InitTypeDef * sConfigOC, + TIM_OC_InitTypeDef * sConfigOC, - uint32_t TIM_CHANNEL, + uint32_t TIM_CHANNEL, - GPIO_TypeDef * GPIOx, + GPIO_TypeDef * GPIOx, @@ -185,7 +193,7 @@ Functions HAL_StatusTypeDef TIM_OC_Comparator_Init ( - TIM_HandleTypeDef * htim, + TIM_HandleTypeDef * htim, @@ -212,18 +220,10 @@ Functions
    - -
    diff --git a/Doc/html/group___t_i_m___i_n_i_t.html b/Doc/html/group___t_i_m___i_n_i_t.html index ad276d8..9130ced 100644 --- a/Doc/html/group___t_i_m___i_n_i_t.html +++ b/Doc/html/group___t_i_m___i_n_i_t.html @@ -3,7 +3,7 @@ - + MyLibs: Init defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    - + +

    Настройка таймеров More...

    -
    Collaboration diagram for Init defines:
    +
    + + Collaboration diagram for Init defines:
    - + + + + + + + + + + + + + + +

    +

    Macros

    #define HAL_TIM_MODULE_ENABLED
     
    #define USE_TIM1
     Включить TIM1 в TIM_Base_MspInit.
     
    #define USE_TIM2
     Включить TIM2 в TIM_Base_MspInit.
     
    #define USE_TIM3
     Включить TIM3 в TIM_Base_MspInit.
     
    #define USE_TIM4
     Включить TIM4 в TIM_Base_MspInit.
     
    #define USE_TIM5
     Включить TIM5 в TIM_Base_MspInit.
     
    #define USE_TIM6
     Включить TIM6 в TIM_Base_MspInit.
     
    #define USE_TIM7
     Включить TIM7 в TIM_Base_MspInit.
     
    #define USE_TIM8
     Включить TIM8 в TIM_Base_MspInit.
     
    #define USE_TIM9
     Включить TIM9 в TIM_Base_MspInit.
     
    #define USE_TIM10
     Включить TIM10 в TIM_Base_MspInit.
     
    #define USE_TIM11
     Включить TIM11 в TIM_Base_MspInit.
     
    #define USE_TIM12
     Включить TIM12 в TIM_Base_MspInit.
     
    #define USE_TIM13
     Включить TIM13 в TIM_Base_MspInit.
     
    #define USE_TIM14
     Включить TIM14 в TIM_Base_MspInit.
     
    -

    Detailed Description

    +

    Detailed Description

    Настройка таймеров

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ HAL_TIM_MODULE_ENABLED

    @@ -419,18 +440,10 @@ Macros
    - -
    diff --git a/Doc/html/group___t_r_a_c_e.html b/Doc/html/group___t_r_a_c_e.html index 6941ffc..2365c24 100644 --- a/Doc/html/group___t_r_a_c_e.html +++ b/Doc/html/group___t_r_a_c_e.html @@ -3,7 +3,7 @@ - + MyLibs: Trace defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Trace defines
    + +
    Trace defines

    Дефайны для работы с трассировкой More...

    -
    Collaboration diagram for Trace defines:
    +
    + + Collaboration diagram for Trace defines:
    - - + - + + - + + - + + +

    +

    Topics

     Serial trace defines
     Serial trace defines
     Дефайны для работы с serial трассировкой (SWO, RTT)
     GPIO trace defines
     
     GPIO trace defines
     Дефайны для работы с GPIO трассировкой
     Flash RTT Buffer
     
     Flash RTT Buffer
     Макросы и функции для сохранения/чтения RTT буфера в Flash.
     Hardfault trace defines
     
     Hardfault trace defines
     Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash.
     
    -

    Detailed Description

    +

    Detailed Description

    Дефайны для работы с трассировкой

    - -
    diff --git a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html index cd9e6da..99c9556 100644 --- a/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html +++ b/Doc/html/group___t_r_a_c_e___c_o_n_f_i_g.html @@ -3,7 +3,7 @@ - + MyLibs: Trace configs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Trace configs
    + +
    Trace configs

    Конфигурация трекеров и трассировки More...

    -
    Collaboration diagram for Trace configs:
    +
    + + Collaboration diagram for Trace configs:
    - + + + + + + + + + + + + + + + +

    +

    Macros

    #define TRACKERS_ENABLE
     Включить трекеры
     
    #define SERIAL_TRACE_ENABLE
     Включить serial трассировку
     
    #define RTT_TRACE_ENABLE
     Включить serial трассировку через RTT.
     
    #define SWO_TRACE_ENABLE
     Включить serial трассировку через SWO.
     
    #define LOG_LEVEL   1
     Уровень log serial трассировки log_printf.
     
    #define RTT_FLASH_BUFFER_SIZE   1024
     Размер буфера RTT в Flash.
     
    #define RTT_FLASH_SECTOR   FLASH_SECTOR_11
     Сектор FLASH куда положится RTT буфер
     
    #define RTT_FLASH_SECTOR_START   0x080E0000
     Начало сектора RTT_FLASH_SECTOR.
     
    #define RTT_FLASH_SECTOR_END   0x080FFFFF
     Конец сектора RTT_FLASH_SECTOR.
     
    #define HARDFAULT_SERIAL_TRACE
     Включить обработку и serial трассировку Hardfault.
     
    #define HF_RTT_TAG_BASE   0xDEAD0000
     базовый тег для HardFault
     
    #define HF_RTT_TAIL_SIZE   RTT_FLASH_BUFFER_SIZE
     Размер буфера RTT, который сохранится при Hardfault.
     
    #define HF_STACK_DUMP_WORDS   32
     Сколько слов стека будет проанализировано во время Hardfault.
     
    #define HF_FLASH_ADDR   ((uint32_t)0x080FF000)
     Адрес FLASH куда положится RTT буфер
     
    #define HF_RAM_END   0x20030000
     Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
     
    #define GPIO_TRACE_ENABLE
     Включить GPIO трассировку
     
    -

    Detailed Description

    +

    Detailed Description

    Конфигурация трекеров и трассировки

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ TRACKERS_ENABLE

    @@ -447,18 +469,10 @@ Macros
    - -
    diff --git a/Doc/html/group___t_r_a_c_e___g_p_i_o.html b/Doc/html/group___t_r_a_c_e___g_p_i_o.html index 8c0129f..b0b1874 100644 --- a/Doc/html/group___t_r_a_c_e___g_p_i_o.html +++ b/Doc/html/group___t_r_a_c_e___g_p_i_o.html @@ -3,7 +3,7 @@ - + MyLibs: GPIO trace defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    GPIO trace defines
    + +
    GPIO trace defines

    Дефайны для работы с GPIO трассировкой More...

    -
    Collaboration diagram for GPIO trace defines:
    +
    + + Collaboration diagram for GPIO trace defines:
    - - + - + + +

    +

    Macros

    #define TRACE_GPIO_RESET(_gpio_, _pin_)
    #define TRACE_GPIO_RESET(_gpio_, _pin_)   (_gpio_)->BSRR = ((_pin_)<<16)
     Сбросить указанную ножку GPIO.
    #define TRACE_GPIO_SET(_gpio_, _pin_)
     
    #define TRACE_GPIO_SET(_gpio_, _pin_)   (_gpio_)->BSRR = (((_pin_)))
     Установить указанную ножку GPIO.
     
    -

    Detailed Description

    +

    Detailed Description

    Дефайны для работы с GPIO трассировкой

    Определяется дефайны для работы с GPIO трассировкой:

    • TRACE_GPIO_RESET() - для сброса ножки GPIO (через BSRR)
    • TRACE_GPIO_SET() - для выставления ножки GPIO (через BSRR)
    • -
    • Если трассировка GPIO_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
    • +
    • Если трассировка GPIO_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
      +
    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ TRACE_GPIO_RESET

    @@ -138,17 +147,16 @@ Macros #define TRACE_GPIO_RESET ( - _gpio_, + _gpio_, - _pin_ ) + _pin_ )   (_gpio_)->BSRR = ((_pin_)<<16)
    -Value:
    (_gpio_)->BSRR = ((_pin_)<<16)
    -
    +

    Сбросить указанную ножку GPIO.

    Parameters
    @@ -175,17 +183,16 @@ Macros - + - +
    #define TRACE_GPIO_SET ( _gpio_, _gpio_,
    _pin_ ) _pin_ )   (_gpio_)->BSRR = (((_pin_)))
    -Value:
    (_gpio_)->BSRR = (((_pin_)))
    -
    +

    Установить указанную ножку GPIO.

    Parameters
    @@ -205,18 +212,10 @@ Macros - - diff --git a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html index 3a31782..a75a57e 100644 --- a/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html +++ b/Doc/html/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html @@ -3,7 +3,7 @@ - +MyLibs: Hardfault trace defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + -
    @@ -71,9 +73,10 @@ $(function() {
    -
    -
    Hardfault trace defines
    + +
    Hardfault trace defines

    Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash. More...

    -
    Collaboration diagram for Hardfault trace defines:
    +
    + + Collaboration diagram for Hardfault trace defines:
    - - + +

    +

    Classes

    struct  HF_StackFrame_t
    struct  HF_StackFrame_t
     Контекст стек-фрейма процессора при HardFault. More...
     
    - + +

    +

    Functions

    __STATIC_FORCEINLINE int HF_CheckRecovered (int erase)
     Проверка и вывод последнего HardFault-трейса из Flash.
     
    __STATIC_FORCEINLINE void HF_HandleFault (void)
     Обработчик HardFault.
     
    -

    Detailed Description

    +

    Detailed Description

    Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash.

    Этот модуль позволяет сохранять контекст процессора и последние символы RTT буфера при возникновении HardFault.

    Механизм работы:

      @@ -169,7 +179,7 @@ Functions
      __STATIC_FORCEINLINE int HF_CheckRecovered(int erase)
      Проверка и вывод последнего HardFault-трейса из Flash.
      Definition trace.h:486
      __STATIC_FORCEINLINE void HF_HandleFault(void)
      Обработчик HardFault.
      Definition trace.h:527
      __STATIC_FORCEINLINE int RTT_EraseFlash(void)
      Стирание сектора Flash с RTT-буфером
      Definition trace.h:375
      -

    Function Documentation

    +

    Function Documentation

    ◆ HF_CheckRecovered()

    @@ -207,7 +217,7 @@ Functions __STATIC_FORCEINLINE void HF_HandleFault ( - void ) + void ) @@ -230,18 +240,10 @@ Functions
    - - diff --git a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html index 07f8f9d..b401ff0 100644 --- a/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html +++ b/Doc/html/group___t_r_a_c_e___r_t_t___f_l_a_s_h.html @@ -3,7 +3,7 @@ - + MyLibs: Flash RTT Buffer @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Flash RTT Buffer
    + +
    Flash RTT Buffer

    Макросы и функции для сохранения/чтения RTT буфера в Flash. More...

    -
    Collaboration diagram for Flash RTT Buffer:
    +
    + + Collaboration diagram for Flash RTT Buffer:
    - - + +

    +

    Classes

    struct  RTT_FlashHeader_t
    struct  RTT_FlashHeader_t
     Структура RTT, которая будет положена в Flash. More...
     
    - + + + +

    +

    Functions

    __STATIC_FORCEINLINE void RTT_FlashPrepare (void)
     Подготовка Flash к записи
     
    __STATIC_FORCEINLINE int RTT_SaveToFlash (uint32_t tag, uint32_t tail_size)
     Сохраняет последние символы RTT-буфера в Flash по тегу
     
    __STATIC_FORCEINLINE int RTT_ReadFromFlash (uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
     Читает последние символы RTT-буфера из Flash по тегу
     
    __STATIC_FORCEINLINE int RTT_EraseFlash (void)
     Стирание сектора Flash с RTT-буфером
     
    -

    Detailed Description

    +

    Detailed Description

    Макросы и функции для сохранения/чтения RTT буфера в Flash.

    Модуль позволяет сохранять данные RTT буфера во Flash и читать их обратно по тегам.
    Теги работают следующим образом:
    @@ -151,7 +163,7 @@ Functions

  • RTT_FLASH_SECTOR_START - Начало сектора RTT_FLASH_SECTOR
  • RTT_FLASH_SECTOR_END - Конец сектора RTT_FLASH_SECTOR
  • -

    Function Documentation

    +

    Function Documentation

    ◆ RTT_FlashPrepare()

    @@ -161,7 +173,7 @@ Functions __STATIC_FORCEINLINE void RTT_FlashPrepare ( - void ) + void ) @@ -183,7 +195,7 @@ Functions __STATIC_FORCEINLINE int RTT_SaveToFlash ( - uint32_t tag, + uint32_t tag, @@ -221,17 +233,17 @@ Functions __STATIC_FORCEINLINE int RTT_ReadFromFlash ( - uint32_t tag, + uint32_t tag, - char * Buffer, + char * Buffer, - uint32_t tail_size, + uint32_t tail_size, @@ -270,7 +282,7 @@ Functions __STATIC_FORCEINLINE int RTT_EraseFlash ( - void ) + void ) @@ -284,18 +296,10 @@ Functions
    - -
    diff --git a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html index 77f3ffd..a2019a0 100644 --- a/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html +++ b/Doc/html/group___t_r_a_c_e___s_e_r_i_a_l.html @@ -3,7 +3,7 @@ - + MyLibs: Serial trace defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Serial trace defines
    + +
    Serial trace defines

    Дефайны для работы с serial трассировкой (SWO, RTT) More...

    -
    Collaboration diagram for Serial trace defines:
    +
    + + Collaboration diagram for Serial trace defines:
    - - + + +

    +

    Macros

    #define my_printf(...)
    #define my_printf(...)   SEGGER_RTT_printf(0, __VA_ARGS__)
     Универсальный макрос для вывода трассировки
     
    #define log_printf(TAG, fmt, ...)
     Макрос логирования с поддержкой уровней LOG_LEVEL.
     
    -

    Detailed Description

    +

    Detailed Description

    Дефайны для работы с serial трассировкой (SWO, RTT)

    В зависимости от настроек определяется дефайн my_printf() и log_printf() для работы с трассировкой:

    • SERIAL_TRACE_ENABLE - Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
    • RTT_TRACE_ENABLE - для RTT это будет вызов функции SEGGER_RTT_printf(), с подключением библиотеки SEGGER_RTT.h Предварительно надо подключить библиотеку SEGGER RTT и вызвать функцию SEGGER_RTT_Init()
    • SWO_TRACE_ENABLE для SWO это будет просто printf()

      Но библиотеку STDOUT надо подключить самостоятельно:

      -
          Manage Run-Time Environment -> Compiler -> I/O -> STDOUT 
      -

      Для SWO также надо включить трассировку:
      +

          Manage Run-Time Environment -> Compiler -> I/O -> STDOUT 

      Для SWO также надо включить трассировку:

      -
          Options For Target -> Debug -> Debugger Settings
      -

      В вкладке Debug:

        +
            Options For Target -> Debug -> Debugger Settings

        В вкладке Debug:

        • Port = SW В вкладке Trace:
        • Указать Core Clock
        • Выставить Trace Port = SWO
        • -
        • ITM - выбрать нужный порт (для Keil нулевой порт)
        • +
        • ITM - выбрать нужный порт (для Keil нулевой порт)
          +
      -

      Macro Definition Documentation

      +

      Macro Definition Documentation

      ◆ my_printf

      @@ -150,17 +157,16 @@ Macros #define my_printf ( - ...) - + ...) +    SEGGER_RTT_printf(0, __VA_ARGS__)
    -Value:
    SEGGER_RTT_printf(0, __VA_ARGS__)
    -
    +

    Универсальный макрос для вывода трассировки

    Варианты реализации:

      -
    • RTT_TRACE_ENABLE SEGGER_RTT_printf(0, ...)
    • -
    • SWO_TRACE_ENABLE - printf(...)
    • +
    • RTT_TRACE_ENABLE SEGGER_RTT_printf(0, ...)
    • +
    • SWO_TRACE_ENABLE - printf(...)
    • NO_TRACE - пустой макрос
    @@ -177,17 +183,17 @@ Macros #define log_printf ( - TAG, + TAG, - fmt, + fmt, - ... ) + ... )
    @@ -215,18 +221,10 @@ Macros
    - -
    diff --git a/Doc/html/group___t_r_a_c_k_e_r_s.html b/Doc/html/group___t_r_a_c_k_e_r_s.html index 66db708..09abab2 100644 --- a/Doc/html/group___t_r_a_c_k_e_r_s.html +++ b/Doc/html/group___t_r_a_c_k_e_r_s.html @@ -3,7 +3,7 @@ - + MyLibs: Trackers defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Trackers defines
    + +
    Trackers defines

    Дефайны для работы с трекерами More...

    -
    Collaboration diagram for Trackers defines:
    +
    + + Collaboration diagram for Trackers defines:
    - - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + +

    +

    Macros

    #define TrackerTypeDef(num_user_vars)
     Структура для счетчиков отладки
    #define num_of_usercnts(_user_)
     
    #define num_of_usercnts(_user_)   (sizeof(_user_) / sizeof(uint32_t))
     Получить количетство пользовательских переменных
    #define assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define assert_usertracker(_cntstruct_, _uservarnumb_)   ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
     Проверка существует ли указанная пользовательская переменная
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)   if(assert_usertracker(_cntstruct_, _uservarnumb_))
     Условие для проверки существует ли указанная пользовательская переменная
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)   (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
     Тернарный оператор для проверки существует ли указанная пользовательская переменная
    #define TrackerGet_Ok(_cntstruct_)
     
    #define TrackerGet_Ok(_cntstruct_)   (_cntstruct_).cnt_ok
     Считать счетчик успешных событий
    #define TrackerGet_Err(_cntstruct_)
     
    #define TrackerGet_Err(_cntstruct_)   (_cntstruct_).cnt_err
     Считать счетчик ошибок
    #define TrackerGet_Warn(_cntstruct_)
     
    #define TrackerGet_Warn(_cntstruct_)   (_cntstruct_).cnt_warn
     Считать счетчик предупреждений
    #define TrackerGet_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerGet_User(_cntstruct_, _uservarnumb_)   (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
     Считать пользовательскую переменную
    #define TrackerCnt_Ok(_cntstruct_)
     
    #define TrackerCnt_Ok(_cntstruct_)   (_cntstruct_).cnt_ok++
     Инкрементирование счетчика успешных событий
    #define TrackerCnt_Err(_cntstruct_)
     
    #define TrackerCnt_Err(_cntstruct_)   (_cntstruct_).cnt_err++
     Инкрементирование счетчика ошибок
    #define TrackerCnt_Warn(_cntstruct_)
     
    #define TrackerCnt_Warn(_cntstruct_)   (_cntstruct_).cnt_warn++
     Инкрементирование счетчика предупреждений
    #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerCnt_User(_cntstruct_, _uservarnumb_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
     Инкрементирование пользовательской переменной
    #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
     
    #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
     Запись числа в пользовательскую переменную
    #define TrackerClear_All(_cntstruct_)
     
    #define TrackerClear_All(_cntstruct_)   memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
     Очистка всей структуры
    #define TrackerClear_Ok(_cntstruct_)
     
    #define TrackerClear_Ok(_cntstruct_)   (_cntstruct_).cnt_ok = 0
     Очистка счетчика успешных событий
    #define TrackerClear_Err(_cntstruct_)
     
    #define TrackerClear_Err(_cntstruct_)   (_cntstruct_).cnt_err = 0
     Очистка счетчика ошибок
    #define TrackerClear_Warn(_cntstruct_)
     
    #define TrackerClear_Warn(_cntstruct_)   (_cntstruct_).cnt_warn = 0
     Очистка счетчика предупреждений
    #define TrackerClear_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerClear_User(_cntstruct_, _uservarnumb_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
     Очистка пользовательской переменной
    #define TrackerClear_UserAll(_cntstruct_)
     
    #define TrackerClear_UserAll(_cntstruct_)   memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
     Очистка всех пользовательских переменных
     
    -

    Detailed Description

    +

    Detailed Description

    Дефайны для работы с трекерами


    Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars). Структура состоит из следующих элементов:

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ TrackerTypeDef

    @@ -211,7 +238,7 @@ Macros #define TrackerTypeDef ( - num_user_vars) + num_user_vars) @@ -247,13 +274,12 @@ Macros #define num_of_usercnts ( - _user_) - + _user_) +    (sizeof(_user_) / sizeof(uint32_t))
    -Value:
    (sizeof(_user_) / sizeof(uint32_t))
    -
    +

    Получить количетство пользовательских переменных

    Definition at line 80 of file trackers.h.

    @@ -269,18 +295,16 @@ Macros #define assert_usertracker ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
    -Value:
    ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
    -
    #define num_of_usercnts(_user_)
    Получить количетство пользовательских переменных
    Definition trackers.h:80
    -
    +

    Проверка существует ли указанная пользовательская переменная

    Definition at line 82 of file trackers.h.

    @@ -296,18 +320,16 @@ Macros #define if_assert_usertracker ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   if(assert_usertracker(_cntstruct_, _uservarnumb_))
    -Value:
    if(assert_usertracker(_cntstruct_, _uservarnumb_))
    -
    #define assert_usertracker(_cntstruct_, _uservarnumb_)
    Проверка существует ли указанная пользовательская переменная
    Definition trackers.h:82
    -
    +

    Условие для проверки существует ли указанная пользовательская переменная

    Definition at line 84 of file trackers.h.

    @@ -323,17 +345,16 @@ Macros #define tern_assert_usertracker ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
    -Value:
    (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
    -
    +

    Тернарный оператор для проверки существует ли указанная пользовательская переменная

    Definition at line 86 of file trackers.h.

    @@ -349,13 +370,12 @@ Macros #define TrackerGet_Ok ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_ok
    -Value:
    (_cntstruct_).cnt_ok
    -
    +

    Считать счетчик успешных событий

    Definition at line 90 of file trackers.h.

    @@ -371,13 +391,12 @@ Macros #define TrackerGet_Err ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_err
    -Value:
    (_cntstruct_).cnt_err
    -
    +

    Считать счетчик ошибок

    Definition at line 92 of file trackers.h.

    @@ -393,13 +412,12 @@ Macros #define TrackerGet_Warn ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_warn
    -Value:
    (_cntstruct_).cnt_warn
    -
    +

    Считать счетчик предупреждений

    Definition at line 94 of file trackers.h.

    @@ -415,18 +433,16 @@ Macros #define TrackerGet_User ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
    -Value:
    (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
    -
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
    Тернарный оператор для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:86
    -
    +

    Считать пользовательскую переменную

    Note
    Здесь нет проверки - существует ли пользовательская переменная! Есть возможность выйти за границы структуры!!! Чтобы этого избежать можно использовать дефайн #ref assert_usertracker()
      if(assert_usertracker(struct, 0)) {
           TrackerGet_User(struct, 0)
    @@ -446,13 +462,12 @@ Macros
             
               #define TrackerCnt_Ok
               (
    -                    _cntstruct_)
    -          
    +                    _cntstruct_)
    +             (_cntstruct_).cnt_ok++
             
           
     
    -Value:
    (_cntstruct_).cnt_ok++
    -
    +

    Инкрементирование счетчика успешных событий

    Definition at line 111 of file trackers.h.

    @@ -468,13 +483,12 @@ Macros #define TrackerCnt_Err ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_err++
    -Value:
    (_cntstruct_).cnt_err++
    -
    +

    Инкрементирование счетчика ошибок

    Definition at line 113 of file trackers.h.

    @@ -490,13 +504,12 @@ Macros #define TrackerCnt_Warn ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_warn++
    -Value:
    (_cntstruct_).cnt_warn++
    -
    +

    Инкрементирование счетчика предупреждений

    Definition at line 115 of file trackers.h.

    @@ -512,18 +525,16 @@ Macros #define TrackerCnt_User ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
    -Value:
    if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
    -
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)
    Условие для проверки существует ли указанная пользовательская переменная
    Definition trackers.h:84
    -
    +

    Инкрементирование пользовательской переменной

    Definition at line 117 of file trackers.h.

    @@ -539,22 +550,21 @@ Macros #define TrackerWrite_User ( - _cntstruct_, + _cntstruct_, - _uservarnumb_, + _uservarnumb_, - _val_ ) + _val_ )   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
    -Value:
    if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
    -
    +

    Запись числа в пользовательскую переменную

    Definition at line 119 of file trackers.h.

    @@ -570,13 +580,12 @@ Macros #define TrackerClear_All ( - _cntstruct_) - + _cntstruct_) +    memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
    -Value:
    memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
    -
    +

    Очистка всей структуры

    Definition at line 122 of file trackers.h.

    @@ -592,13 +601,12 @@ Macros #define TrackerClear_Ok ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_ok = 0
    -Value:
    (_cntstruct_).cnt_ok = 0
    -
    +

    Очистка счетчика успешных событий

    Definition at line 124 of file trackers.h.

    @@ -614,13 +622,12 @@ Macros #define TrackerClear_Err ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_err = 0
    -Value:
    (_cntstruct_).cnt_err = 0
    -
    +

    Очистка счетчика ошибок

    Definition at line 126 of file trackers.h.

    @@ -636,13 +643,12 @@ Macros #define TrackerClear_Warn ( - _cntstruct_) - + _cntstruct_) +    (_cntstruct_).cnt_warn = 0
    -Value:
    (_cntstruct_).cnt_warn = 0
    -
    +

    Очистка счетчика предупреждений

    Definition at line 128 of file trackers.h.

    @@ -658,17 +664,16 @@ Macros #define TrackerClear_User ( - _cntstruct_, + _cntstruct_, - _uservarnumb_ ) + _uservarnumb_ )   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
    -Value:
    if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
    -
    +

    Очистка пользовательской переменной

    Definition at line 130 of file trackers.h.

    @@ -684,13 +689,12 @@ Macros #define TrackerClear_UserAll ( - _cntstruct_) - + _cntstruct_) +    memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
    -Value:
    memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
    -
    +

    Очистка всех пользовательских переменных

    Definition at line 132 of file trackers.h.

    @@ -699,18 +703,10 @@ Macros
    - -
    diff --git a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html index 066db90..847999e 100644 --- a/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html +++ b/Doc/html/group___u_t_i_l_s___d_e_f_i_n_e_s.html @@ -3,7 +3,7 @@ - + MyLibs: Utils defines @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    Utils defines
    + +
    Utils defines

    Общие вспомогательные макросы More...

    -
    Collaboration diagram for Utils defines:
    +
    + + Collaboration diagram for Utils defines:
    - - + - + + - + + - + + +

    +

    Macros

    #define ClearStruct(_struct_)
    #define ClearStruct(_struct_)   memset(&(_struct_), 0, sizeof(_struct_))
     Обнуление структуры.
    #define Divide_Up(_val_, _div_)
     
    #define Divide_Up(_val_, _div_)   ((_val_ - 1) / _div_) + 1 /* через мат выражение */
     Деление с округлением вверх
    #define ByteSwap16(v)
     
    #define ByteSwap16(v)   (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
     Swap between Little Endian and Big Endian.
    #define ABS(x)
     
    #define ABS(x)   ( ((x) > 0)? (x) : -(x))
     Абсолютное значение числа
     
    -

    Detailed Description

    +

    Detailed Description

    Общие вспомогательные макросы

    -

    Macro Definition Documentation

    +

    Macro Definition Documentation

    ◆ ClearStruct

    @@ -137,13 +147,12 @@ Macros #define ClearStruct ( - _struct_) - + _struct_) +    memset(&(_struct_), 0, sizeof(_struct_))
    -Value:
    memset(&(_struct_), 0, sizeof(_struct_))
    -
    +

    Обнуление структуры.

    Parameters
    @@ -166,17 +175,16 @@ Macros - + - +
    #define Divide_Up ( _val_, _val_,
    _div_ ) _div_ )   ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    -Value:
    ((_val_ - 1) / _div_) + 1 /* через мат выражение */
    -
    +

    Деление с округлением вверх

    Parameters
    @@ -201,13 +209,12 @@ Macros - - + +
    #define ByteSwap16 ( v) v)   (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    -Value:
    (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
    -
    +

    Swap between Little Endian and Big Endian.

    Parameters
    @@ -231,13 +238,12 @@ Macros - - + +
    #define ABS ( x) x)   ( ((x) > 0)? (x) : -(x))
    -Value:
    ( ((x) > 0)? (x) : -(x))
    -
    +

    Абсолютное значение числа

    Parameters
    @@ -254,18 +260,10 @@ Macros - - diff --git a/Doc/html/index.html b/Doc/html/index.html index 87e4bf6..3916f2b 100644 --- a/Doc/html/index.html +++ b/Doc/html/index.html @@ -3,7 +3,7 @@ - +MyLibs: MyLibs @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + -
    @@ -71,9 +73,10 @@ $(function() {
    -
    MyLibs
    -

    +

    Обзор

    MyLibs - это набор библиотек для удобной работы с периферией микроконтроллеров STM32.

    -

    +

    Основные возможности

    -

    +

    Общие утилиты (General Tools)

    • Макросы для задержек и утилит (Delays defines и Utils defines)
    • @@ -113,7 +116,7 @@ $(function(){initNavTree('index.html','',''); });
    • Эволюционный алгоритм для оптимизации параметров (Evolve optimizer)
    • Битовый доступ к регистрам через union (Bit access defines)
    -

    +

    Трассировка Trace defines

    • Serial трассировка через SWO и RTT (Serial trace defines)
    • @@ -121,14 +124,14 @@ $(function(){initNavTree('index.html','',''); });
    • Сохранение логов в Flash память (Flash RTT Buffer)
    • Обработка HardFault с сохранением контекста (Hardfault trace defines)
    -

    +

    Модуль GPIO GPIO Tools

    • Инициализация портов и тактирования (General tools)
    • Управление светодиодами (включение/выключение, моргание, плавное затухание) (LED tools)
    • Работа с кнопками (чтение состояния, фильтрация дребезга) (Switch tools)
    -

    +

    Модуль таймеров TIM Tools

    • Базовая инициализация таймеров (General tools)
    • @@ -136,7 +139,7 @@ $(function(){initNavTree('index.html','',''); });
    • Работа с энкодерами (чтение положения, обработка кнопок) (Encoder tools)
    • Настройка ШИМ и Output Compare (PWM/OC Channels tools)
    -

    +

    Структура проекта

    ├── inc/ # Заголовочные файлы
    │ ├── mylibs_include.h # Главный include файл
    @@ -150,7 +153,7 @@ $(function(){initNavTree('index.html','',''); });
    └── src/ # Исходные файлы
    ├── general_gpio.c # Реализация GPIO
    └── general_tim.c # Реализация TIM
    -

    +

    Использование

    Инструкция по подключению:

      @@ -160,7 +163,7 @@ $(function(){initNavTree('index.html','',''); });
  • Используйте нужные модули в своем коде
  • -

    +

    Пример работы с GPIO

    // Инициализация светодиода
    MX_GPIO_Init();
    @@ -182,7 +185,7 @@ $(function(){initNavTree('index.html','',''); });
    void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
    Управление динамическими режимами свечения светодиода
    HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
    Активировать моргание светодиодом
    Структура светодиода
    -

    +

    Пример работы с таймером

    // Настройка таймера
    TIM_SettingsTypeDef tim_settings = {0};
    @@ -202,7 +205,7 @@ $(function(){initNavTree('index.html','',''); });
    TIM_ITModeTypeDef sTimMode
    Настройки прерывания таймера
    TIM_HandleTypeDef htim
    HAL handle таймера
    float sTimFreqHz
    Желаемая частота таймера
    -

    +

    Зависимости

    • HAL библиотека STM32
    • @@ -210,14 +213,13 @@ $(function(){initNavTree('index.html','',''); });
    • FreeRTOS (опционально, для FreeRTOS задержек)
    - + - diff --git a/Doc/html/jquery.js b/Doc/html/jquery.js index 875ada7..1dffb65 100644 --- a/Doc/html/jquery.js +++ b/Doc/html/jquery.js @@ -1,143 +1,17 @@ /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} -var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( -"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType -}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c -)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ -return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( -":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") -)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( -"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( -a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, -null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne -).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( -var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n; -return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, -r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] -,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( -function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, -"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} -),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( -"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t -){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t -]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, -getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, -s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), -this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t -).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( -","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( -this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ -width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), -!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ -this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height -,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, -i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left -)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e -){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), -i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( -)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, -function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 -]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){ -targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", -"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( -session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} -closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( -session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, -function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); -tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, -finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); -return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} -function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), -elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, -viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, -"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); -/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + */ +!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), -mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( -$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( -this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( -"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" -).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( -this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( -var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ -return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( -!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( -this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 -]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( -"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ -t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" -)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ -t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), -a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, -downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) -)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t -)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), -canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, -rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} -return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, -bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/Doc/html/mainpage_8h_source.html b/Doc/html/mainpage_8h_source.html index 14c5a8d..010d228 100644 --- a/Doc/html/mainpage_8h_source.html +++ b/Doc/html/mainpage_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/mainpage.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/mainpage.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
    - + - +
    -
    104 */
    - diff --git a/Doc/html/menu.js b/Doc/html/menu.js index 15f9c52..717761d 100644 --- a/Doc/html/menu.js +++ b/Doc/html/menu.js @@ -22,7 +22,7 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { let result=''; if ('children' in data) { @@ -49,7 +49,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { searchBoxHtml='
    '+ '
    '+ '
    '+ + '" method="get"> '+ ''+ @@ -60,8 +60,8 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { } else { searchBoxHtml='
    '+ ''+ - ''+ + ' '+ ''+ ''+ - '
    '+ + ''+ '
    '+ '
    '; } @@ -83,12 +84,14 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { '
    '); $('#main-nav').append(makeTree(menudata,relPath)); $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - $('#main-menu').append('
  • '); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } const $mainMenuState = $('#main-menu-state'); let prevWidth = 0; if ($mainMenuState.length) { const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(treeview); + if (typeof initResizable==='function') initResizable(); } // animate mobile menu $mainMenuState.change(function() { diff --git a/Doc/html/menudata.js b/Doc/html/menudata.js index 7655322..a1b4cb1 100644 --- a/Doc/html/menudata.js +++ b/Doc/html/menudata.js @@ -35,8 +35,8 @@ var menudata={children:[ {text:"e",url:"functions.html#index_e"}, {text:"g",url:"functions.html#index_g"}, {text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, {text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, {text:"n",url:"functions.html#index_n"}, {text:"p",url:"functions.html#index_p"}, {text:"r",url:"functions.html#index_r"}, @@ -48,8 +48,8 @@ var menudata={children:[ {text:"e",url:"functions_vars.html#index_e"}, {text:"g",url:"functions_vars.html#index_g"}, {text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, {text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, {text:"n",url:"functions_vars.html#index_n"}, {text:"p",url:"functions_vars.html#index_p"}, {text:"r",url:"functions_vars.html#index_r"}, diff --git a/Doc/html/minus.svg b/Doc/html/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/Doc/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Doc/html/minusd.svg b/Doc/html/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/Doc/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Doc/html/mylibs__config_8h.html b/Doc/html/mylibs__config_8h.html index 4c94c66..c5c8870 100644 --- a/Doc/html/mylibs__config_8h.html +++ b/Doc/html/mylibs__config_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_config.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_config.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
    - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    mylibs_config.h File Reference
    @@ -104,136 +109,154 @@ $(function(){initNavTree('mylibs__config_8h.html','',''); });

    Конфигурации для библиотек MyLibs. More...

    #include "stm32f4xx_hal.h"
    -
    Include dependency graph for mylibs_config.h:
    +
    + + Include dependency graph for mylibs_config.h:
    -
    This graph shows which files directly or indirectly include this file:
    +
    + + This graph shows which files directly or indirectly include this file:

    Go to the source code of this file.

    - + + + + + + + + + + + + + + + + + + + + + + + +

    +

    Macros

    #define TRACKERS_ENABLE
     Включить трекеры
     
    #define SERIAL_TRACE_ENABLE
     Включить serial трассировку
     
    #define RTT_TRACE_ENABLE
     Включить serial трассировку через RTT.
     
    #define SWO_TRACE_ENABLE
     Включить serial трассировку через SWO.
     
    #define LOG_LEVEL   1
     Уровень log serial трассировки log_printf.
     
    #define RTT_FLASH_BUFFER_SIZE   1024
     Размер буфера RTT в Flash.
     
    #define RTT_FLASH_SECTOR   FLASH_SECTOR_11
     Сектор FLASH куда положится RTT буфер
     
    #define RTT_FLASH_SECTOR_START   0x080E0000
     Начало сектора RTT_FLASH_SECTOR.
     
    #define RTT_FLASH_SECTOR_END   0x080FFFFF
     Конец сектора RTT_FLASH_SECTOR.
     
    #define HARDFAULT_SERIAL_TRACE
     Включить обработку и serial трассировку Hardfault.
     
    #define HF_RTT_TAG_BASE   0xDEAD0000
     базовый тег для HardFault
     
    #define HF_RTT_TAIL_SIZE   RTT_FLASH_BUFFER_SIZE
     Размер буфера RTT, который сохранится при Hardfault.
     
    #define HF_STACK_DUMP_WORDS   32
     Сколько слов стека будет проанализировано во время Hardfault.
     
    #define HF_FLASH_ADDR   ((uint32_t)0x080FF000)
     Адрес FLASH куда положится RTT буфер
     
    #define HF_RAM_END   0x20030000
     Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
     
    #define GPIO_TRACE_ENABLE
     Включить GPIO трассировку
     
    #define ENABLE_EVOLVE_OPTIMIZATION
     Включить оптимизацию параметров
     
    #define EVOLVE_MAX_PARAMS   20
     Максимальное количество параметров
     
    #define EVOLVE_MAX_CANDIDATES   100
     Максимальное количество кандидатов для обучения
     
    #define INCLUDE_EVOLVE_OPTIMIZER
     Подключить библиотеку для оптимизации параметров
     
    #define INCLUDE_BIT_ACCESS_LIB
     Подключить библиотеку с typedef с битовыми полями
     
    #define INCLUDE_TRACKERS_LIB
     Подключить библиотеку с трекерами
     
    #define INCLUDE_TRACE_LIB
     Подключить библиотеку с трейсами
     
    #define INCLUDE_GENERAL_PERIPH_LIBS
     Подключить библиотеку с периферией
     
    -

    Detailed Description

    +

    Detailed Description

    Конфигурации для библиотек MyLibs.

    Definition in file mylibs_config.h.

    - -
    diff --git a/Doc/html/mylibs__config_8h__dep__incl.map b/Doc/html/mylibs__config_8h__dep__incl.map index 64974ec..4efa19d 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.map +++ b/Doc/html/mylibs__config_8h__dep__incl.map @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__config_8h__dep__incl.md5 b/Doc/html/mylibs__config_8h__dep__incl.md5 index 2f6fe17..a472a39 100644 --- a/Doc/html/mylibs__config_8h__dep__incl.md5 +++ b/Doc/html/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -29f3209273b7878fca69d464878bc9ff \ No newline at end of file +ee8ba613c66132201fb932c77e0ad018 \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__dep__incl.png b/Doc/html/mylibs__config_8h__dep__incl.png index e12080c7f00fb9bd976eca41259bed00f4e2f807..2b6edb9a546534f508e0018886b6417d672cdcdc 100644 GIT binary patch literal 83154 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 D@u@?J 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

    j&kfOzF1;toTzQbQ4 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 diff --git a/Doc/html/mylibs__config_8h__incl.map b/Doc/html/mylibs__config_8h__incl.map index a83cb29..f06cfbf 100644 --- a/Doc/html/mylibs__config_8h__incl.map +++ b/Doc/html/mylibs__config_8h__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/mylibs__config_8h__incl.md5 b/Doc/html/mylibs__config_8h__incl.md5 index f136b91..d0ac3e6 100644 --- a/Doc/html/mylibs__config_8h__incl.md5 +++ b/Doc/html/mylibs__config_8h__incl.md5 @@ -1 +1 @@ -fb457d2826e0abaa227e1adc840edd68 \ No newline at end of file +7361bc4b175718270d049d00a1cbdbe2 \ No newline at end of file diff --git a/Doc/html/mylibs__config_8h__incl.png b/Doc/html/mylibs__config_8h__incl.png index 9c49be908aca5152d10ea831a868e47a4fdbbe48..021f13e02c34c4fff8e7d385b9d5913243b955fb 100644 GIT binary patch literal 2515 zcmbuBX;c#E8po|hCpC3+%-!s2E(B({mAT-);g|!;Q0nMljwzCbDY=qP=90MOnv&I| z=7NfexMJNgEECd9FcE2SNlh6+GF))1J7+%JbHCm5p7(vu^Zq})=e*DV`JE@*&(}ji zPD@ToN=m`Y(-pQGS-bnrewp3#VtJ8ZH^`u%9o`vRPiPPX1S_mbp$X zT=#>IRxK_}re=T~6G3O(Od8_}o=zZWTd25bs!6N?nkXvkMVPdY*bVJP^r5PoZx@87 z73`Ob%9xf3*MlkDzycxt6{{1sEi5{AAoWqr%eD^e+p+T#?3-D;Z%awRz}wO|{`7V! zc#f;`SPFWMloFqqxDk$fO_8|M%W(woX<>#mXj)gZ&T&z84hk1*$g1u06l}q_3~9 z5kAjmlQqI^S+dArb#=(5T!&SY zR8C1c_ojAIx}^#R!|OzE+CfVU$(FR&@jcuVJ6)e5K~PqSP1K@XFf z>V&vuA38XVef%3L{ zMQ5@a%_(0$OaQ`#d~OepqaiHL&J(UK(^BW>=TW3S;pf%&P>ZYt#CLwJ*_G;Dj4l!( z?l4)k!0(RgH>$h8o_@dPP4R*>W$Q{Myj~2uJ8$E%I&VGcq8FaL|G`WMzER&6c~9A33;ABeSeS zqK3fQvCIv=@X7Jn6nHpLIwdWi*z*d{-C>*`4g#<{;B$^YEDspYK_frLe3+v9$S-zS zeX8n`Oy!$(5d4d_!_8fc0U}`nVA3~E;ceoIS?$;w&vrg@c0vpThwKmQH^JuRf;R>B z2K6F`vMBsvU(p^k+W7u;+xurX4+*8(>15_5Nq55!AVL=u-sOH9XBA8W}cN zW*K(55kI;T2s!s*DzEDou&64734OpQo_}~ljP#Du-BX|@Bwx*K=u05`$6lyloA?`% zW-X!)lT`u(BLX?|&oW@&eYJVf5yS&Uoc)_qI0(4^S#D&^`QV&R7p1h)xuoOc)MFwV zj8Z13V$`G(YPO*?bb=f}&yQ%qmR*fHReJ*z?FSJRW)088@?`2>GAGTo&E6Y3W_6}qQ+Yq5fsly=YFJedWgLB2=>xT z%lC((!WLL(6hT~NjI^80!r~U*OHeff`)$f10I=|wE zS`=>4#;1>~F}~$kwfLAbMIX?;m1s^mqA8@^YFWY#jj|iOK!u<2>-E-vcdSER!Lu() zNzJNjvcUz4guQ@{ileWbQgAz{W_#G6%EREru;P2)Ks*x^W0UJ2Y`>q@m-L&^DKvk; z16|ztL;lg)4q?wnRuuLUm;r${A#E*~UmaLQ-q6nRD~c8Q(&zlg8S)C-Jdaj8s9k2` z=_W(sflkv^9hltS{{V&J#~r+fwWFk6Lf{D$_iYXn+ADL$*8K}?N}N7qeC3L2mOcIt0V9VVMUPq=wi zTV?j5(D}^ym3(^dosnMP1>c#66=GzdoB0CDf#vQe8Bc>wo*cdicX{nF+C#n%5@d{nF`^%IxNStmVR zhRTzA4fOTh9r(wr^&{%2!*$|&E(iD!yG-m^12Z2W%gY3MZ~)wDL2 z7(M`#VdW1rOa+EKt5`59J(wW6zC{c5%yL8ptdv2l%>sdVbN!atC2h@3W8R4!fUf$# zJ)5MD>+78X5|Cij%=?$Cp&Bpbjy(bz;IF`EN|eDd{ib-3u2QSkVD;0PRWAOhwtac?k4zRF3<_uH7<@{u4-J$37qBsS#*THhlfX* zG5l$JJ%gpNT2f03v#Mi|CW25R1>&EQjfplh%f)MxCZn<`o0Z=WvQ+A0Vzc8uyYp#G zL${aL-0uT^A1@%4Vq-A^ttGz=(M=z?PbMySOx)a`%yt1l;8dUKjs2FaITffu;q}Q} zUAJ!H=hhTc-CKod9q-4F7&-Nrc#eo*2Un@p4($IZPpWL#>~c1Es}|#X;LO^qEsy*| z+zysQU)&O6!LMK>wO>7Kn7FyluP(_8Z(x+9J1SNJrKv`jF|Oj;%z?8uMRfgDF^+Uy*f F{ue_B(Bc39 literal 2312 zcmbtWdpOf=AD`-pl*pDs9wy~fBqOzZht2`1ZeB$dPJ#y00K!-91y>`MwQGnDH$qgmF^|B zS3UZTp_+!Y)2=4Zd^PFwxiq|-K9XoIbMRAuZbGN;E8jQ-$s=C0L}-U-p5DbLJ^0m0=&Fwca)NG#Xv=iMcjgLRt~q=Lu-sFrU(gMp$;>vF&Ss3iQ#x z{?*vHQiA2JL%KkumB}rRkk8%H+CQ%4JW~=q35&$GHN-jG@))ki@1!LJvifp$SROr=mLpTb2V(fyUYYJw6YAc|B< zWVI5SF*tzhg{$+73G^B@E*C3!qVvV4SY)jHF~snqGWj&fd%tU-dw%B4!aD75z-w+p z$>8>}rgVU<7KE+Cu%F$$Iu_9B?vu|?Ou7$kLUHxup&ne?Kp+$k$X8#1amY0E!3~I} z*p>UMOVg|u9oIb)=|2uGzaxMDIn#h)HcG~3elLB>d3>TJBbCmOSb zUeS@rmQQ@j72CKq9yM-T5Ps6C`&Zgdm06k}?tyiK65dgO=&y)idh{Z;bc5Z*02 zG&$)rPt6h5Q8yf^09lWl#l*L7U?LFjXsmSy*dqZ~ z0*%>*W?kU0v>0z#uR6j_>`dI$Pp=PFhg8=`i>rBRNkuBSqNCn<^e4Ua7AlI_9%Sgs z)O7^?E;lJaiMKhYW^dec z_hG&#>9)Uxb&v0M$sADLi#6(s&Rd>d*2Z+m9gjVxw5)s!CEsMQE|<7E|6uqgtbFqX zP-fjx3v8o;@e2H-A3zU`KOu}=E56aRHb8P0`}M6jhHu?~e~&qnXKCt2H>KP|H^&OE zFF=q&N65)EfT1-N>5CzwTj|zg~T$sG*rEk7T-vln3@ei{c1tW<{yJ zrfmPR^SGkRfdATb3NZc9T9p8pjO$*+3_SiIzE57w!atuck2%AQ;Xk$-I>!)q1~sIQ zJIAW;3&tQ{RD3jLCmH^3RXQOIXE7{(1w--IpFPm*d0^aA)O`-S|8L^HJoV#8)VtGh zy{EwyUH;+MNM7xLfX9UJAH9kd4*!Cif9X5wi`f`uipJtc_+P>;`#NZC&*ScVZ)a26 zayDBs+ixtM6bMH6kCX)eof(K^&{6oV!w3FJ_U$M5zgkOZsNs^>O0-hF#c-yKkw#Bx z;!r64UT$7~=|-(GJK{EPML4DF8>w1NP_RkRI{GX2 z-B@pB?sdR-DsGFY;ooGa{sM(&wXPWov2yZsynPa=jl#DY?=5lSZ}8- zRV!DK*0!l4$a)<4WKNCL(-AA`Gn=?qsgR@w&rxJYbiAyVJ%n$IpgEa!*X{93&@w8! zK4(U&;bk1LY7=BlDmJSbt0M|;@rk1P{K-6*^(B4}>Nb~QA~@yX_tYlYFoMRFIU6G{ z$QfH_!Rs}3_DCdXS*uRa7c|7|!n-KdJDj%7%qsN+xr%*E@+|5Y1zK;HJ@dql#%)&h z1&|rkED*GBPYk*g7y{sF_)jMQD2%)#4M-@+aAQ<(o?#oNmvA>6{)(4K=mXc<+{&p^Vg zawX3TxfWgF-qO+%AzGW)TB%J+>`r9B*x>NK7xH|Fv`^UufAUpu1+i*$j!pJsO&Qcd z+_v2bg9V7hW*)ZK6OJ6P99IspLiV00!m_{-d{QXg=~Af6v#2*sq#dKRjRUK!b@+7A zh>1RTEjOT$i&22;gq(iCS_&=3l-D=}Dr%!%kog{S1x|r|R}WN-hRuCtKkt;X|K><% z>x^8%3>egWoB-Drg|W`b5C(d^0omUpsjiV*^4MZLl1cLMAQ#yrCrKgchT}dec+Ky@ zLNAn0o&Ee^i3{~OdNgcnxg(jp)Y*xN1YSVkpIvsz47uMF4-LTn$7hB#R8K@LIA^4% zM?^&AkRgbfk~2teYt;w)vL36Nvn`9sQV4W1r2oQ5aR(|bhNut?f$)BZz4GK{Q Izx?Na02=6$*8l(j diff --git a/Doc/html/mylibs__config_8h_source.html b/Doc/html/mylibs__config_8h_source.html index 8ba7606..e7e3ac5 100644 --- a/Doc/html/mylibs__config_8h_source.html +++ b/Doc/html/mylibs__config_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_config.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_config.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({

    - + - +
    -
    94#endif //__MYLIBS_CONFIG_H_
    - diff --git a/Doc/html/mylibs__defs_8h.html b/Doc/html/mylibs__defs_8h.html index 639bfe0..11b6fe0 100644 --- a/Doc/html/mylibs__defs_8h.html +++ b/Doc/html/mylibs__defs_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_defs.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_defs.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    mylibs_defs.h File Reference
    @@ -104,121 +110,130 @@ $(function(){initNavTree('mylibs__defs_8h.html','',''); });

    Заголочный файл для дефайнов библиотеки MyLibsGeneral. More...

    #include "mylibs_config.h"
    -
    Include dependency graph for mylibs_defs.h:
    +
    + + Include dependency graph for mylibs_defs.h:
    -
    This graph shows which files directly or indirectly include this file:
    +
    + + This graph shows which files directly or indirectly include this file:

    Go to the source code of this file.

    - - + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + +

    +

    Macros

    #define MyLibs_Error_Handler(params)
    #define MyLibs_Error_Handler(params)   Error_Handler(params)
     Error_Handler который будет вызыватся в библиотеке
    #define check_null_ptr_1(p1)
     
    #define check_null_ptr_1(p1)   (p1 == NULL)
     Проверить один указатель на NULL.
    #define check_null_ptr_2(p1, p2)
     
    #define check_null_ptr_2(p1, p2)   ((p1 == NULL) || (p1 != NULL && p2 == NULL))
     Проверить два указателя на NULL.
    #define check_null_ptr_3(p1, p2, p3)
     
    #define check_null_ptr_3(p1, p2, p3)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && p3 == NULL))))
     Проверить три указателя на NULL.
    #define check_null_ptr_4(p1, p2, p3, p4)
     
    #define check_null_ptr_4(p1, p2, p3, p4)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && p4 == NULL))))))
     Проверить четыре указателя на NULL.
    #define check_null_ptr_5(p1, p2, p3, p4, p5)
     
    #define check_null_ptr_5(p1, p2, p3, p4, p5)   ((p1 == NULL) || (p1 != NULL && ((p2 == NULL) || (p2 != NULL && ((p3 == NULL) || (p3 != NULL && ((p4 == NULL) || (p4 != NULL && p5 == NULL))))))))
     Проверить пять указателей на NULL.
    #define msDelay(_ms_)
     
    #define msDelay(_ms_)   HAL_Delay(_ms_)
     Задержка на указанное количество миллисекунд.
    #define msDelayStart(_pvar_)
     
    #define msDelayStart(_pvar_)   *(_pvar_) = HAL_GetTick()
     Начать отсчет задержки.
    #define msDelayWhileActive(_ms_, _pvar_)
     
    #define msDelayWhileActive(_ms_, _pvar_)   (HAL_GetTick() - *(_pvar_) < _ms_)
     Проверяет, активна ли задержка.
    #define msDelayWaitDone(_ms_, _pvar_)
     
    #define msDelayWaitDone(_ms_, _pvar_)   (HAL_GetTick() - *(_pvar_) >= _ms_)
     Проверяет, завершилась ли задержка.
    #define ClearStruct(_struct_)
     
    #define ClearStruct(_struct_)   memset(&(_struct_), 0, sizeof(_struct_))
     Обнуление структуры.
    #define Divide_Up(_val_, _div_)
     
    #define Divide_Up(_val_, _div_)   ((_val_ - 1) / _div_) + 1 /* через мат выражение */
     Деление с округлением вверх
    #define ByteSwap16(v)
     
    #define ByteSwap16(v)   (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
     Swap between Little Endian and Big Endian.
    #define ABS(x)
     
    #define ABS(x)   ( ((x) > 0)? (x) : -(x))
     Абсолютное значение числа
     
    - +

    +

    Functions

    void Error_Handler (void)
     
    -

    Detailed Description

    +

    Detailed Description

    Заголочный файл для дефайнов библиотеки MyLibsGeneral.

    Definition in file mylibs_defs.h.

    - -
    diff --git a/Doc/html/mylibs__defs_8h__dep__incl.map b/Doc/html/mylibs__defs_8h__dep__incl.map index a1ac985..8fa37fc 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.map +++ b/Doc/html/mylibs__defs_8h__dep__incl.map @@ -1,38 +1,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__defs_8h__dep__incl.md5 b/Doc/html/mylibs__defs_8h__dep__incl.md5 index 77cf79b..3966021 100644 --- a/Doc/html/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/html/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -3009d51b0bc5d0623e8c666bec71ce5b \ No newline at end of file +0d52bcfe55773d72fc2fd1ffe571809c \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__dep__incl.png b/Doc/html/mylibs__defs_8h__dep__incl.png index a5864bb4c88180d97040505ed166bdadce70de9b..37c8c1a089901605f02ceb98ffa546d5516df4bd 100644 GIT binary patch literal 78637 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

    BHDe;8^f~hxxht?3mgw* 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 - - - - - + + + + + + diff --git a/Doc/html/mylibs__defs_8h__incl.md5 b/Doc/html/mylibs__defs_8h__incl.md5 index 9f55d02..9e01e49 100644 --- a/Doc/html/mylibs__defs_8h__incl.md5 +++ b/Doc/html/mylibs__defs_8h__incl.md5 @@ -1 +1 @@ -b9276a0f630657b77b3f0cee41c5de21 \ No newline at end of file +8a0ac3856fdf2caf22b43c3ac8597efe \ No newline at end of file diff --git a/Doc/html/mylibs__defs_8h__incl.png b/Doc/html/mylibs__defs_8h__incl.png index 4b2f8648b3c3963e095a0eb280922fe5b6b2be61..274d9bd2b6b9b6b002c70c1d2a22a2ec4335b3da 100644 GIT binary patch literal 3403 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 diff --git a/Doc/html/mylibs__defs_8h_source.html b/Doc/html/mylibs__defs_8h_source.html index 86e81c3..0733a3c 100644 --- a/Doc/html/mylibs__defs_8h_source.html +++ b/Doc/html/mylibs__defs_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_defs.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_defs.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({

    - + - +
    -
    Конфигурации для библиотек MyLibs.
    - diff --git a/Doc/html/mylibs__include_8h.html b/Doc/html/mylibs__include_8h.html index a47e7ab..be2ac76 100644 --- a/Doc/html/mylibs__include_8h.html +++ b/Doc/html/mylibs__include_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_include.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_include.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    #include "general_flash.h"
    #include "general_gpio.h"
    #include "general_tim.h"
    -
    Include dependency graph for mylibs_include.h:
    +
    + + Include dependency graph for mylibs_include.h:

    Go to the source code of this file.

    -

    Detailed Description

    +

    Detailed Description

    Заголочный файл для всех библиотек

    Здесь нужно собрать библиотеки и дефайны, которые должны быть видны во всем проекте, чтобы не подключать 100 инклюдов в каждом ".c" файле

    Definition in file mylibs_include.h.

    - - diff --git a/Doc/html/mylibs__include_8h__incl.map b/Doc/html/mylibs__include_8h__incl.map index 325308a..cbac04c 100644 --- a/Doc/html/mylibs__include_8h__incl.map +++ b/Doc/html/mylibs__include_8h__incl.map @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Doc/html/mylibs__include_8h__incl.md5 b/Doc/html/mylibs__include_8h__incl.md5 index 48042dd..fbafb1d 100644 --- a/Doc/html/mylibs__include_8h__incl.md5 +++ b/Doc/html/mylibs__include_8h__incl.md5 @@ -1 +1 @@ -d43d5a141d087c4ef99d3ea25bfc5d0a \ No newline at end of file +eac9d1a6617c9c7d940c97bf6eaa8368 \ No newline at end of file diff --git a/Doc/html/mylibs__include_8h__incl.png b/Doc/html/mylibs__include_8h__incl.png index 5c944d329fc0d3cf2ceb70e3171bba591c6d51db..032dfecf3af1dcbd9fa887a2e0614cdb6ef7856e 100644 GIT binary patch literal 44435 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

    jcRo$KVOW?#eNJ-^LN+=X6AoPA;M&^G$wZp- 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 VSoyWmr-BE(G*onyYZPst{TKhiNn-#2 literal 44344 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 diff --git a/Doc/html/mylibs__include_8h_source.html b/Doc/html/mylibs__include_8h_source.html index fb84a65..5b3eb8f 100644 --- a/Doc/html/mylibs__include_8h_source.html +++ b/Doc/html/mylibs__include_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_include.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/mylibs_include.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({ - + -

    +
    -
    116
    117
    118/////////////////////////---USER SETTINGS---/////////////////////////
    -
    119// user includes
    +
    119// user includes
    120
    121// user settings
    122/////////////////////////---USER SETTINGS---/////////////////////////
    -
    123
    +
    123
    124
    125#endif // __MYLIBS_INCLUDE_H_
    Заголочный файл для дефайнов битового доступа.
    @@ -230,17 +238,16 @@ $(function(){initNavTree('mylibs__include_8h_source.html','',''); });
    Заголовочный файл для модуля инициализации портов и работы с ними.
    Заголовочный файл для модуля инициализации таймеров и работы с ними.
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    -
    Структура эволюционного оптимизатора
    +
    Структура эволюционного оптимизатора
    Заголочный файл для работы с трассировкой.
    Заголочный файл для работы с трекерами Trackers defines.
    - diff --git a/Doc/html/nav_f.png b/Doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/Doc/html/nav_fd.png b/Doc/html/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/Doc/html/nav_g.png b/Doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/Doc/html/navtree.css b/Doc/html/navtree.css index 0ea3a07..69211d4 100644 --- a/Doc/html/navtree.css +++ b/Doc/html/navtree.css @@ -11,8 +11,8 @@ #nav-tree li { white-space:nowrap; - margin:0; - padding:0; + margin:0px; + padding:0px; } #nav-tree .plus { @@ -20,10 +20,15 @@ } #nav-tree .selected { - position: relative; - background-color: var(--nav-menu-active-bg); - border-radius: 0 6px 6px 0; - /*margin-right: 5px;*/ + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; } #nav-tree img { @@ -43,7 +48,6 @@ margin:0px; padding:0px; font: 12px var(--font-family-nav); - line-height: 22px; } #nav-tree .label a { @@ -52,7 +56,7 @@ #nav-tree .selected a { text-decoration:none; - color:var(--page-link-color); + color:var(--nav-text-active-color); } #nav-tree .children_ul { @@ -61,9 +65,8 @@ } #nav-tree .item { - margin: 0 6px 0 -5px; - padding: 0 0 0 5px; - height: 22px; + margin:0px; + padding:0px; } #nav-tree { @@ -86,6 +89,7 @@ display:block; position: absolute; left: 0px; + width: $width; overflow : hidden; } @@ -94,31 +98,15 @@ } .ui-resizable-e { - transition: opacity 0.5s ease; - background-color: var(--nav-splitbar-bg-color); - opacity:0; - cursor:col-resize; + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; height:100%; right:0; top:0; width:6px; - position: relative; -} - -.ui-resizable-e:after { - content: ''; - display: block; - top: 50%; - left: 1px; - width: 2px; - height: 15px; - border-left: 1px solid var(--nav-splitbar-handle-color); - border-right: 1px solid var(--nav-splitbar-handle-color); - position: absolute; -} - -.ui-resizable-e:hover { - opacity: 1; } .ui-resizable-handle { @@ -133,97 +121,24 @@ } #nav-tree { + background-repeat:repeat-x; background-color: var(--nav-background-color); -webkit-overflow-scrolling : touch; /* iOS 5+ */ - scrollbar-width: thin; - border-right: 1px solid var(--nav-border-color); - padding-left: 5px; } #nav-sync { position:absolute; - top:0px; - right:0px; - z-index:1; + top:5px; + right:24px; + z-index:0; } #nav-sync img { opacity:0.3; } -div.nav-sync-icon { - position: relative; - width: 24px; - height: 17px; - left: -6px; - top: -1px; - opacity: 0.7; - display: inline-block; - background-color: var(--sync-icon-background-color); - border: 1px solid var(--sync-icon-border-color); - box-sizing: content-box; -} - -div.nav-sync-icon:hover { - background-color: var(--sync-icon-selected-background-color); - opacity: 1.0; -} - -div.nav-sync-icon.active:after { - content: ''; - background-color: var(--sync-icon-background-color); - border-top: 2px solid var(--sync-icon-color); - position: absolute; - width: 16px; - height: 0px; - top: 7px; - left: 4px; -} - -div.nav-sync-icon.active:hover:after { - border-top: 2px solid var(--sync-icon-selected-color); -} - -span.sync-icon-left { - position: absolute; - padding: 0; - margin: 0; - top: 3px; - left: 4px; - display: inline-block; - width: 8px; - height: 8px; - border-left: 2px solid var(--sync-icon-color); - border-top: 2px solid var(--sync-icon-color); - transform: rotate(-45deg); -} - -span.sync-icon-right { - position: absolute; - padding: 0; - margin: 0; - top: 3px; - left: 10px; - display: inline-block; - width: 8px; - height: 8px; - border-right: 2px solid var(--sync-icon-color); - border-bottom: 2px solid var(--sync-icon-color); - transform: rotate(-45deg); -} - -div.nav-sync-icon:hover span.sync-icon-left { - border-left: 2px solid var(--sync-icon-selected-color); - border-top: 2px solid var(--sync-icon-selected-color); -} - -div.nav-sync-icon:hover span.sync-icon-right { - border-right: 2px solid var(--sync-icon-selected-color); - border-bottom: 2px solid var(--sync-icon-selected-color); -} - -#nav-path ul { - border-top: 1px solid var(--nav-breadcrumb-separator-color); +#nav-sync img:hover { + opacity:0.9; } @media print @@ -232,96 +147,3 @@ div.nav-sync-icon:hover span.sync-icon-right { div.ui-resizable-handle { display: none; position: relative; } } -/*---------------------------*/ -#container { - display: grid; - grid-template-columns: auto auto; - overflow: hidden; -} - -#page-nav { - background: var(--nav-background-color); - display: block; - width: 250px; - box-sizing: content-box; - position: relative; - border-left: 1px solid var(--nav-border-color); -} - -#page-nav-tree { - display: inline-block; -} - -#page-nav-resize-handle { - transition: opacity 0.5s ease; - background-color: var(--nav-splitbar-bg-color); - opacity:0; - cursor:col-resize; - height:100%; - right:0; - top:0; - width:6px; - position: relative; - z-index: 1; - user-select: none; -} - -#page-nav-resize-handle:after { - content: ''; - display: block; - top: 50%; - left: 1px; - width: 2px; - height: 15px; - border-left: 1px solid var(--nav-splitbar-handle-color); - border-right: 1px solid var(--nav-splitbar-handle-color); - position: absolute; -} - -#page-nav-resize-handle.dragging, -#page-nav-resize-handle:hover { - opacity: 1; -} - -#page-nav-contents { - padding: 0; - margin: 0; - display: block; - top: 0; - left: 0; - height: 100%; - width: 100%; - position: absolute; - overflow: auto; - scrollbar-width: thin; - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -ul.page-outline, -ul.page-outline ul { - text-indent: 0; - list-style: none outside none; - padding: 0 0 0 4px; -} - -ul.page-outline { - margin: 0 4px 4px 6px; -} - -ul.page-outline div.item { - font: 12px var(--font-family-nav); - line-height: 22px; -} - -ul.page-outline li { - white-space: nowrap; -} - -ul.page-outline li.vis { - background-color: var(--nav-breadcrumb-active-bg); -} - -#container.resizing { - cursor: col-resize; - user-select: none; -} diff --git a/Doc/html/navtree.js b/Doc/html/navtree.js index 4fcf6e3..884b79b 100644 --- a/Doc/html/navtree.js +++ b/Doc/html/navtree.js @@ -23,34 +23,16 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initNavTree(toroot,relpath,allMembersFile) { +function initNavTree(toroot,relpath) { let navTreeSubIndices = []; - const ARROW_DOWN = ''; - const ARROW_RIGHT = ''; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; const NAVPATH_COOKIE_NAME = ''+'navpath'; - const fullSidebar = typeof page_layout!=='undefined' && page_layout==1; - - function getScrollBarWidth () { - let outer = $('
    ').css({visibility: 'hidden', width: 100, overflow: 'scroll', scrollbarWidth: 'thin'}).appendTo('body'); - let widthWithScroll = $('
    ').css({width: '100%'}).appendTo(outer).outerWidth(); - outer.remove(); - return 100 - widthWithScroll; - } - const scrollbarWidth = getScrollBarWidth(); - - function adjustSyncIconPosition() { - if (!fullSidebar) { - const nt = document.getElementById("nav-tree"); - const hasVerticalScrollbar = nt.scrollHeight > nt.clientHeight; - $("#nav-sync").css({right:parseInt(hasVerticalScrollbar?scrollbarWidth:0)}); - } - } const getData = function(varName) { const i = varName.lastIndexOf('/'); const n = i>=0 ? varName.substring(i+1) : varName; - const e = n.replace(/-/g,'_'); - return window[e]; + return eval(n.replace(/-/g,'_')); } const stripPath = function(uri) { @@ -95,7 +77,7 @@ function initNavTree(toroot,relpath,allMembersFile) { const script = document.createElement('script'); script.id = scriptName; script.type = 'text/javascript'; - script.onload = function() { func(); adjustSyncIconPosition(); } + script.onload = func; script.src = scriptName+'.js'; head.appendChild(script); } @@ -114,8 +96,8 @@ function initNavTree(toroot,relpath,allMembersFile) { node.expandToggle.href = "javascript:void(0)"; node.expandToggle.onclick = function() { if (node.expanded) { - $(node.getChildrenUL()).slideUp("fast",adjustSyncIconPosition); - $(node.plus_img.childNodes[0]).removeClass('opened').addClass('closed'); + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; node.expanded = false; } else { expandNode(o, node, false, true); @@ -140,9 +122,9 @@ function initNavTree(toroot,relpath,allMembersFile) { if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || ancParent.is(':header')) { - pos = ancParent.offset().top; + pos = ancParent.position().top; } else if (anchor.position()) { - pos = anchor.offset().top; + pos = anchor.position().top; } if (pos) { const dcOffset = docContent.offset().top; @@ -154,33 +136,12 @@ function initNavTree(toroot,relpath,allMembersFile) { docContent.animate({ scrollTop: pos + dcScrTop - dcOffset },Math.max(50,Math.min(500,dist)),function() { + window.location.href=aname; animationInProgress=false; - if (anchor.parent().attr('class')=='memItemLeft') { - let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); - glowEffect(rows.children(),300); // member without details - } else if (anchor.parent().attr('class')=='fieldname') { - glowEffect(anchor.parent().parent(),1000); // enum value - } else if (anchor.parent().attr('class')=='fieldtype') { - glowEffect(anchor.parent().parent(),1000); // struct field - } else if (anchor.parent().is(":header")) { - glowEffect(anchor.parent(),1000); // section header - } else { - glowEffect(anchor.next(),1000); // normal member - } }); } } - function htmlToNode(html) { - const template = document.createElement('template'); - template.innerHTML = html; - const nNodes = template.content.childNodes.length; - if (nNodes !== 1) { - throw new Error(`html parameter must represent a single node; got ${nNodes}. `); - } - return template.content.firstChild; - } - const newNode = function(o, po, text, link, childrenData, lastNode) { const node = { children : [], @@ -192,6 +153,7 @@ function initNavTree(toroot,relpath,allMembersFile) { parentNode : po, itemDiv : document.createElement("div"), labelSpan : document.createElement("span"), + label : document.createTextNode(text), expanded : false, childrenUL : null, getChildrenUL : function() { @@ -214,7 +176,7 @@ function initNavTree(toroot,relpath,allMembersFile) { const a = document.createElement("a"); node.labelSpan.appendChild(a); po.getChildrenUL().appendChild(node.li); - a.appendChild(htmlToNode(''+text+'')); + a.appendChild(node.label); if (link) { let url; if (link.substring(0,1)=='^') { @@ -279,8 +241,8 @@ function initNavTree(toroot,relpath,allMembersFile) { if (!node.childrenVisited) { getNode(o, node); } - $(node.getChildrenUL()).slideDown("fast",adjustSyncIconPosition); - $(node.plus_img.childNodes[0]).addClass('opened').removeClass('closed'); + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; node.expanded = true; if (setFocus) { $(node.expandToggle).focus(); @@ -298,6 +260,18 @@ function initNavTree(toroot,relpath,allMembersFile) { const highlightAnchor = function() { const aname = hashUrl(); const anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } gotoAnchor(anchor,aname); } @@ -319,6 +293,7 @@ function initNavTree(toroot,relpath,allMembersFile) { if ($('#nav-tree-contents .item:first').hasClass('selected')) { topOffset+=25; } + $('#nav-sync').css('top',topOffset+'px'); showRoot(); } @@ -335,7 +310,7 @@ function initNavTree(toroot,relpath,allMembersFile) { getNode(o, node); } $(node.getChildrenUL()).css({'display':'block'}); - $(node.plus_img.childNodes[0]).removeClass('closed').addClass('opened'); + node.plus_img.innerHTML = ARROW_DOWN; node.expanded = true; const n = node.children[o.breadcrumbs[index]]; if (index+10) { // try root page without hash as fallback - gotoUrl(o,root,'',relpath); - } else { - o.breadcrumbs = $.extend(true, [], nti); - if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index - navTo(o,NAVTREE[0][1],"",relpath); - $('.item').removeClass('selected'); - $('.item').removeAttr('id'); - } - if (o.breadcrumbs) { - o.breadcrumbs.unshift(0); // add 0 for root node - showNode(o, o.node, 0, hash); - } + o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]); + if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index + navTo(o,NAVTREE[0][1],"",relpath); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); } - } - - const gotoUrl = function(o,root,hash,relpath) { - const url=root+hash; - let i=-1; - while (NAVTREEINDEX[i+1]<=url) i++; - if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath) - } else { - getScript(relpath+'navtreeindex'+i,function() { - navTreeSubIndices[i] = window['NAVTREEINDEX'+i]; - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath); - } - }); + if (o.breadcrumbs) { + o.breadcrumbs.unshift(0); // add 0 for root node + showNode(o, o.node, 0, hash); } } @@ -416,15 +385,28 @@ function initNavTree(toroot,relpath,allMembersFile) { glowEffect(anchor.parent(),1000); // line number hash=''; // strip line number anchors } - gotoUrl(o,root,hash,relpath); + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } } const showSyncOff = function(n,relpath) { - n.html(''); + n.html(''); } const showSyncOn = function(n,relpath) { - n.html(''); + n.html(''); } const o = { @@ -471,429 +453,30 @@ function initNavTree(toroot,relpath,allMembersFile) { showRoot(); $(window).bind('hashchange', () => { - if (!animationInProgress) { - if (window.location.hash && window.location.hash.length>1) { - let a; - if ($(location).attr('hash')) { - const clslink=stripPath(pathName())+':'+hashValue(); - a=$('.item a[class$="'+clslink.replace(/1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ try to keep right panel width - const shrinkLeft = Math.min(deficit, leftPanelWidth-minPanelWidth); - leftPanelWidth -= shrinkLeft; - const remainingDeficit = deficit - shrinkLeft; - const shrinkRight = Math.min(remainingDeficit, rightPanelWidth-minPanelWidth); - rightPanelWidth -= shrinkRight; - } else { // dragging right handle -> try to keep left panel width - const shrinkRight = Math.min(deficit, rightPanelWidth-minPanelWidth); - rightPanelWidth -= shrinkRight; - const remainingDeficit = deficit - shrinkRight; - const shrinkLeft = Math.min(remainingDeficit, leftPanelWidth-minPanelWidth); - leftPanelWidth -= shrinkLeft; - } - } else { - rightPanelWidth = pagenav.length ? Math.max(minPanelWidth,rightPanelWidth) : 0; - leftPanelWidth = Math.max(minPanelWidth,leftPanelWidth); - } - return { leftPanelWidth, rightPanelWidth } - } - - function updateWidths(sidenavWidth,pagenavWidth,dragLeft) - { - const widths = constrainPanelWidths(sidenavWidth,pagenavWidth,dragLeft); - const widthStr = parseInt(widths.leftPanelWidth)+"px"; - content.css({marginLeft:widthStr}); - if (fullSidebar) { - footer.css({marginLeft:widthStr}); - if (mainnav) { - mainnav.css({marginLeft:widthStr}); - } - } - sidenav.css({width:widthStr}); - if (pagenav.length) { - container.css({gridTemplateColumns:'auto '+parseInt(widths.rightPanelWidth)+'px'}); - pagenav.css({width:parseInt(widths.rightPanelWidth-1)+'px'}); - } - return widths; - } - - function resizeWidth(dragLeft) { - const sidenavWidth = $(sidenav).outerWidth()-barWidth; - const pagenavWidth = pagenav.length ? $(pagenav).outerWidth() : 0; - const widths = updateWidths(sidenavWidth,pagenavWidth,dragLeft); - Cookie.writeSetting(RESIZE_COOKIE_NAME,widths.leftPanelWidth-barWidth); - if (pagenav.length) { - Cookie.writeSetting(PAGENAV_COOKIE_NAME,widths.rightPanelWidth); - } - } - - function restoreWidth(sidenavWidth,pagenavWidth) { - updateWidths(sidenavWidth,pagenavWidth,false); - showHideNavBar(); - } - - function resizeHeight() { - const headerHeight = header.outerHeight(); - const windowHeight = $(window).height(); - let contentHeight; - const footerHeight = footer.outerHeight(); - let navtreeHeight,sideNavHeight; - if (!fullSidebar) { - contentHeight = windowHeight - headerHeight - footerHeight - 1; - navtreeHeight = contentHeight; - sideNavHeight = contentHeight; - } else if (fullSidebar) { - contentHeight = windowHeight - footerHeight - 1; - navtreeHeight = windowHeight - headerHeight - 1; - sideNavHeight = windowHeight - 1; - if (mainnav) { - contentHeight -= mainnav.outerHeight(); - } - } - navtree.css({height:navtreeHeight + "px"}); - sidenav.css({height:sideNavHeight + "px"}); - content.css({height:contentHeight + "px"}); - resizeWidth(false); - showHideNavBar(); - if (location.hash.slice(1)) { - (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); - } - } - - header = $("#top"); - content = $("#doc-content"); - footer = $("#nav-path"); - sidenav = $("#side-nav"); - if (document.getElementById('main-nav')) { - mainnav = $("#main-nav"); - } - navtree = $("#nav-tree"); - pagenav = $("#page-nav"); - container = $("#container"); - $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(true); } }); - $(sidenav).resizable({ minWidth: 0 }); - if (pagenav.length) { - pagehandle = $("#page-nav-resize-handle"); - pagehandle.on('mousedown touchstart',function(e) { - $('body').addClass('resizing'); - pagehandle.addClass('dragging'); - $(document).on('mousemove touchmove',function(e) { - const clientX = e.clientX || e.originalEvent.touches[0].clientX; - let pagenavWidth = container[0].offsetWidth-clientX+barWidth/2; - const sidenavWidth = sidenav.width(); - const widths = constrainPanelWidths(sidenavWidth,pagenavWidth,false); - container.css({gridTemplateColumns:'auto '+parseInt(widths.rightPanelWidth)+'px'}); - pagenav.css({width:parseInt(widths.rightPanelWidth-1)+'px'}); - content.css({marginLeft:parseInt(widths.leftPanelWidth)+'px'}); - Cookie.writeSetting(PAGENAV_COOKIE_NAME,pagenavWidth); - }); - $(document).on('mouseup touchend', function(e) { - $('body').removeClass('resizing'); - pagehandle.removeClass('dragging'); - $(document).off('mousemove mouseup touchmove touchend'); - }); - }); - } else { - container.css({gridTemplateColumns:'auto'}); - } - const width = parseInt(Cookie.readSetting(RESIZE_COOKIE_NAME,250)); - const pagenavWidth = parseInt(Cookie.readSetting(PAGENAV_COOKIE_NAME,250)); - if (width) { restoreWidth(width+barWidth,pagenavWidth); } else { resizeWidth(); } - const url = location.href; - const i=url.indexOf("#"); - if (i>=0) window.location.hash=url.substr(i); - const _preventDefault = function(evt) { evt.preventDefault(); }; - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(window).ready(function() { - let lastWidth = -1; - let lastHeight = -1; - $(window).resize(function() { - const newWidth = $(this).width(), newHeight = $(this).height(); - if (newWidth!=lastWidth || newHeight!=lastHeight) { - resizeHeight(); - navtree_trampoline.updateContentTop(); - lastWidth = newWidth; - lastHeight = newHeight; - } - }); - resizeHeight(); - lastWidth = $(window).width(); - lastHeight = $(window).height(); - content.scroll(function() { - navtree_trampoline.updateContentTop(); - }); - }); - } - - - function initPageToc() { - const topMapping = []; - const toc_contents = $('#page-nav-contents'); - const content=$('
      ').addClass('page-outline'); - - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - function escapeHtml (string) { - return String(string).replace(/[&<>"'`=\/]/g, function (s) { - return entityMap[s]; - }); - } - - // for ClassDef/GroupDef/ModuleDef/ConceptDef/DirDef - const groupSections = []; - let currentGroup = null; - $('h2.groupheader, h2.memtitle').each(function(){ - const $element = $(this); - if ($element.hasClass('groupheader')) { - currentGroup = { groupHeader: $element, memTitles: [] }; - groupSections.push(currentGroup); - } else if ($element.hasClass('memtitle') && currentGroup) { - currentGroup.memTitles.push($element); - } - }); - groupSections.forEach(function(item){ - const title = item.groupHeader.text().trim(); - let id = item.groupHeader.attr('id'); - const table = item.groupHeader.parents('table.memberdecls'); - let rows = $(); - if (table.length>0) { - rows = table.find("tr[class^='memitem:'] td.memItemRight, tr[class^='memitem:'] td.memItemLeft.anon, tr[class=groupHeader] td"); - } - function hasSubItems() { - return item.memTitles.length>0 || rows.toArray().some(function(el) { return $(el).is(':visible'); }); - } - const li = $('
    • ').attr('id','nav-'+id); - const div = $('
      ').addClass('item'); - const span = $('').addClass('arrow').css({ paddingLeft:'0' }); - if (hasSubItems()) { - span.append($('').addClass('arrowhead opened')); - } - const ahref = $('').attr('href','#'+id).append(title); - content.append(li.append(div.append(span).append(ahref))); - topMapping.push(id); - const ulStack = []; - ulStack.push(content); - if (hasSubItems()) { - let last_id = undefined; - let inMemberGroup = false; - // declaration sections have rows for items - rows.each(function(){ - let td = $(this); - let tr = $(td).parent(); - const is_anon_enum = td.contents().first().text().trim()=='{'; - if (tr.hasClass('template')) { - tr = tr.prev(); - } - id = $(tr).attr('id'); - const text = is_anon_enum ? 'anonymous enum' : $(this).find('a:first,b,div.groupHeader').text(); - let isMemberGroupHeader = $(tr).hasClass('groupHeader'); - if ($(tr).is(":visible") && last_id!=id && id!==undefined) { - if (isMemberGroupHeader && inMemberGroup) { - ulStack.pop(); - inMemberGroup=false; - } - const li2 = $('
    • ').attr('id','nav-'+id); - const div2 = $('
      ').addClass('item'); - const span2 = $('').addClass('arrow').css({ paddingLeft:parseInt(ulStack.length*16)+'px' }); - const ahref = $('').attr('href','#'+id).append(escapeHtml(text)); - li2.append(div2.append(span2).append(ahref)); - topMapping.push(id); - if (isMemberGroupHeader) { - span2.append($('').addClass('arrowhead opened')); - ulStack[ulStack.length-1].append(li2); - const ul2 = $('
        '); - ulStack.push(ul2); - li2.append(div2).append(ul2); - inMemberGroup=true; - } else { - ulStack[ulStack.length-1].append(li2); - } - last_id=id; - } - }); - // detailed documentation has h2.memtitle sections for items - item.memTitles.forEach(function(data) { - const text = $(data).contents().not($(data).children().first()).text(); - const name = text.replace(/\(\)(\s*\[\d+\/\d+\])?$/, '') // func() [2/8] -> func - id = $(data).find('span.permalink a').attr('href') - if (id!==undefined && name!==undefined) { - const li2 = $('
      • ').attr('id','nav-'+id.substring(1)); - const div2 = $('
      • '); - const div = $('
        ').addClass('item'); - const span = $('').addClass('arrow').css({ paddingLeft:'0' }); - const ahref = $('').attr('href',srcBaseUrl+dstBaseUrl+pageName).addClass('noscroll'); - content.append(li.append(div.append(span).append(ahref.append(LISTOFALLMEMBERS)))); - } - - if (groupSections.length==0) { - // for PageDef - const sectionTree = [], sectionStack = []; - $('h1.doxsection, h2.doxsection, h3.doxsection, h4.doxsection, h5.doxsection, h6.doxsection').each(function(){ - const level = parseInt(this.tagName[1]); - const anchor = $(this).find('a.anchor').attr('id'); - const node = { text: $(this).html(), id: anchor, children: [] }; - while (sectionStack.length && sectionStack[sectionStack.length - 1].level >= level) sectionStack.pop(); - (sectionStack.length ? sectionStack[sectionStack.length - 1].children : sectionTree).push(node); - sectionStack.push({ ...node, level }); - }); - if (sectionTree.length>0) { - function render(nodes, level=0) { - nodes.map(n => { - const li = $('
      • ').attr('id','nav-'+n.id); - const div = $('
        ').addClass('item'); - const span = $('').addClass('arrow').attr('style','padding-left:'+parseInt(level*16)+'px;'); - if (n.children.length > 0) { span.append($('').addClass('arrowhead opened')); } - const url = $('').attr('href','#'+n.id); - content.append(li.append(div.append(span).append(url.append(n.text)))); - topMapping.push(n.id); - render(n.children,level+1); - }); - } - render(sectionTree); - } - } - - toc_contents.append(content); - - $(".page-outline a[href]:not(.noscroll)").click(function(e) { - e.preventDefault(); - const aname = $(this).attr("href"); - gotoAnchor($(aname),aname); - }); - - let lastScrollSourceOffset = -1; - let lastScrollTargetOffset = -1; - let lastScrollTargetId = ''; - - navtree_trampoline.updateContentTop = function() { - const pagenavcontents = $("#page-nav-contents"); - if (pagenavcontents.length) { - const content = $("#doc-content"); - const height = content.height(); - const navy = pagenavcontents.offset().top; - const yc = content.offset().top; - let offsets = [] - for (let i=0;imargin || ye>margin) && (yslastScrollTargetOffset) || - (!scrollDown && targetOffset { - navtree_trampoline.updateContentTop(); - },200); - } - $(document).ready(function() { initPageToc(); initResizable(); }); - + $("div.toc a[href]").click(function(e) { + e.preventDefault(); + const aname = $(this).attr("href"); + gotoAnchor($(aname),aname); + }); } /* @license-end */ diff --git a/Doc/html/navtreedata.js b/Doc/html/navtreedata.js index ea6eff0..b8330df 100644 --- a/Doc/html/navtreedata.js +++ b/Doc/html/navtreedata.js @@ -27,10 +27,10 @@ var NAVTREE = [ "MyLibs", "index.html", [ [ "Обзор", "index.html#overview", [ [ "Основные возможности", "index.html#features", [ - [ "Общие утилиты (General Tools)", "index.html#utils_module", null ], - [ "Трассировка Trace defines", "index.html#trace_module", null ], - [ "Модуль GPIO GPIO Tools", "index.html#gpio_module", null ], - [ "Модуль таймеров TIM Tools", "index.html#tim_module", null ] + [ "Общие утилиты (General Tools)", "index.html#utils_module", null ], + [ "Трассировка Trace defines", "index.html#trace_module", null ], + [ "Модуль GPIO GPIO Tools", "index.html#gpio_module", null ], + [ "Модуль таймеров TIM Tools", "index.html#tim_module", null ] ] ], [ "Структура проекта", "index.html#structure", null ], [ "Использование", "index.html#usage_basic", [ @@ -64,9 +64,8 @@ var NAVTREE = var NAVTREEINDEX = [ "____general__flash_8c_source.html", -"struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5" +"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a" ]; -var SYNCONMSG = 'click to disable panel synchronization'; -var SYNCOFFMSG = 'click to enable panel synchronization'; -var LISTOFALLMEMBERS = 'List of all members'; \ No newline at end of file +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/Doc/html/navtreeindex0.js b/Doc/html/navtreeindex0.js index cdd7a2d..bc95142 100644 --- a/Doc/html/navtreeindex0.js +++ b/Doc/html/navtreeindex0.js @@ -53,11 +53,14 @@ var NAVTREEINDEX0 = "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971":[1,0,0,1,2], "group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee":[1,0,0,1,1], "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html":[1,0,1,1], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba":[1,0,1,1,2], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga75acd71c85d4e60dc0eb31bc5780086a":[1,0,1,1,5], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6":[1,0,1,1,4], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb":[1,0,1,1,6], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21":[1,0,1,1,7], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e":[1,0,1,1,1], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc":[1,0,1,1,5], "group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga9c853b02c22f26023c34d1d404b6d653":[1,0,1,1,3], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gadaf3a90724197e1737d5c70c7bcc75e1":[1,0,1,1,4], -"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc":[1,0,1,1,1], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3":[1,0,1,1,2], +"group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef":[1,0,1,1,8], "group___g_p_i_o___i_n_i_t.html":[1,0,2,0,0,0], "group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9":[1,0,2,0,0,0,3], "group___g_p_i_o___i_n_i_t.html#ga1d42e219765ec526d99e306638ac0023":[1,0,2,0,0,0,0], @@ -215,14 +218,15 @@ var NAVTREEINDEX0 = "mylibs__include_8h_source.html":[3,0,0,0,9], "pages.html":[], "struct_evolve_optimizer__t.html":[1,0,1,1,0], -"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,4], -"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,0], -"struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5":[1,0,1,1,0,3], -"struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d":[1,0,1,1,0,6], -"struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a":[1,0,1,1,0,7], -"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,2], -"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,1], -"struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d":[1,0,1,1,0,5], +"struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae":[1,0,1,1,0,5], +"struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8":[1,0,1,1,0,1], +"struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a":[1,0,1,1,0,8], +"struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c":[1,0,1,1,0,0], +"struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df":[1,0,1,1,0,6], +"struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6":[1,0,1,1,0,3], +"struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1":[1,0,1,1,0,2], +"struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4":[1,0,1,1,0,7], +"struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8":[1,0,1,1,0,4], "struct_g_p_i_o___l_e_d_type_def.html":[1,0,2,0,2,0], "struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978":[1,0,2,0,2,0,2], "struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec":[1,0,2,0,2,0,4], @@ -245,9 +249,5 @@ var NAVTREEINDEX0 = "struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b":[1,0,1,5,3,0,4], "struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9":[1,0,1,5,3,0,7], "struct_r_t_t___flash_header__t.html":[1,0,1,5,2,0], -"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,5,2,0,0], -"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,5,2,0,2], -"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,5,2,0,1], -"struct_s_p_i___settings_type_def.html":[2,0,5], -"struct_t_i_m___encoder_type_def.html":[1,0,2,1,1,0] +"struct_r_t_t___flash_header__t.html#a844ee5470a323a749856cbb7a682dc57":[1,0,1,5,2,0,0] }; diff --git a/Doc/html/navtreeindex1.js b/Doc/html/navtreeindex1.js index 09a6155..d127260 100644 --- a/Doc/html/navtreeindex1.js +++ b/Doc/html/navtreeindex1.js @@ -1,5 +1,9 @@ var NAVTREEINDEX1 = { +"struct_r_t_t___flash_header__t.html#ae7276198385c8d6f6508f433d042d52a":[1,0,1,5,2,0,2], +"struct_r_t_t___flash_header__t.html#afd1a5c51af6f97d170c2ccbbe3e34699":[1,0,1,5,2,0,1], +"struct_s_p_i___settings_type_def.html":[2,0,5], +"struct_t_i_m___encoder_type_def.html":[1,0,2,1,1,0], "struct_t_i_m___encoder_type_def.html#a021f0c585e9e62d68a4b09f630d8b6e5":[1,0,2,1,1,0,3], "struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2":[1,0,2,1,1,0,1], "struct_t_i_m___encoder_type_def.html#a4fc05ef011205a6702cb3d006bab677e":[1,0,2,1,1,0,5], diff --git a/Doc/html/open.png b/Doc/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/Doc/html/plusd.svg b/Doc/html/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/Doc/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Doc/html/resize.js b/Doc/html/resize.js new file mode 100644 index 0000000..6ad2ae8 --- /dev/null +++ b/Doc/html/resize.js @@ -0,0 +1,109 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable() { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() { + const headerHeight = header.outerHeight(); + const footerHeight = footer.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: () => resizeWidth() }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(() => resizeHeight()); + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = (evt) => evt.preventDefault(); + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/Doc/html/search/all_10.js b/Doc/html/search/all_10.js index b8c67f8..6183e1d 100644 --- a/Doc/html/search/all_10.js +++ b/Doc/html/search/all_10.js @@ -27,32 +27,36 @@ var searchData= ['tim_5ftickbase_5f10us_24',['TIM_TickBase_10US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a060b01e890891fd17c8f95b55a94139f',1,'general_tim.h']]], ['tim_5ftickbase_5f1ms_25',['TIM_TickBase_1MS',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a6a66c5ed1d966c9e30f0219b664d2b25',1,'general_tim.h']]], ['tim_5ftickbase_5f1us_26',['TIM_TickBase_1US',['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html#ggaa0a51c870325217ac099881f09dd0800a63df3123d0ddc592b189ed1594456ea2',1,'general_tim.h']]], - ['tools_27',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], - ['tools_28',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], - ['trace_29',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], - ['trace_20configs_30',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], - ['trace_20defines_31',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], - ['trace_20defines_32',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trace_2eh_33',['trace.h',['../trace_8h.html',1,'']]], - ['trace_5fgpio_5freset_34',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], - ['trace_5fgpio_5fset_35',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], - ['trackerclear_5fall_36',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], - ['trackerclear_5ferr_37',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], - ['trackerclear_5fok_38',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], - ['trackerclear_5fuser_39',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], - ['trackerclear_5fuserall_40',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], - ['trackerclear_5fwarn_41',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], - ['trackercnt_5ferr_42',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], - ['trackercnt_5fok_43',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], - ['trackercnt_5fuser_44',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], - ['trackercnt_5fwarn_45',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], - ['trackerget_5ferr_46',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], - ['trackerget_5fok_47',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], - ['trackerget_5fuser_48',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], - ['trackerget_5fwarn_49',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], - ['trackers_20defines_50',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], - ['trackers_2eh_51',['trackers.h',['../trackers_8h.html',1,'']]], - ['trackers_5fenable_52',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], - ['trackertypedef_53',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], - ['trackerwrite_5fuser_54',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] + ['tools_27',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools']]], + ['tools_28',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], + ['tools_29',['tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], + ['tools_30',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], + ['tools_31',['tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], + ['tools_32',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], + ['trace_33',['Трассировка @ref TRACE',['../index.html#trace_module',1,'']]], + ['trace_20configs_34',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_35',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trace_20defines_36',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trace_2eh_37',['trace.h',['../trace_8h.html',1,'']]], + ['trace_5fgpio_5freset_38',['TRACE_GPIO_RESET',['../group___t_r_a_c_e___g_p_i_o.html#ga69741d88c991112e99fe7a62e025108a',1,'trace.h']]], + ['trace_5fgpio_5fset_39',['TRACE_GPIO_SET',['../group___t_r_a_c_e___g_p_i_o.html#ga02a6a7b273766121db8ad4a1371373eb',1,'trace.h']]], + ['trackerclear_5fall_40',['TrackerClear_All',['../group___t_r_a_c_k_e_r_s.html#ga704f7b9f8c65c9bcec48ce7cb77a2d3b',1,'trackers.h']]], + ['trackerclear_5ferr_41',['TrackerClear_Err',['../group___t_r_a_c_k_e_r_s.html#gae860b6947c6e317e14d40bd7b4b8eb74',1,'trackers.h']]], + ['trackerclear_5fok_42',['TrackerClear_Ok',['../group___t_r_a_c_k_e_r_s.html#ga5dd8bac8c7ab5832019d55d7a68371b9',1,'trackers.h']]], + ['trackerclear_5fuser_43',['TrackerClear_User',['../group___t_r_a_c_k_e_r_s.html#ga063dab1067005e1600ea32531fdf3f8d',1,'trackers.h']]], + ['trackerclear_5fuserall_44',['TrackerClear_UserAll',['../group___t_r_a_c_k_e_r_s.html#gaaec7ec19977bb26fa1919dfe920b82d5',1,'trackers.h']]], + ['trackerclear_5fwarn_45',['TrackerClear_Warn',['../group___t_r_a_c_k_e_r_s.html#ga365a8c60bd13b75154feda649dd21ead',1,'trackers.h']]], + ['trackercnt_5ferr_46',['TrackerCnt_Err',['../group___t_r_a_c_k_e_r_s.html#ga49af29ab3927cad105c1d2b018a767e9',1,'trackers.h']]], + ['trackercnt_5fok_47',['TrackerCnt_Ok',['../group___t_r_a_c_k_e_r_s.html#ga23de0006aa08984cfeddb6aa5e512fa1',1,'trackers.h']]], + ['trackercnt_5fuser_48',['TrackerCnt_User',['../group___t_r_a_c_k_e_r_s.html#ga1b7549afc4a1760b54a9b93b0f6d105e',1,'trackers.h']]], + ['trackercnt_5fwarn_49',['TrackerCnt_Warn',['../group___t_r_a_c_k_e_r_s.html#ga8017fb05a56a1b667244f1f786fa9c57',1,'trackers.h']]], + ['trackerget_5ferr_50',['TrackerGet_Err',['../group___t_r_a_c_k_e_r_s.html#ga9dc91e6b798a081f95f2ccef2c288e5e',1,'trackers.h']]], + ['trackerget_5fok_51',['TrackerGet_Ok',['../group___t_r_a_c_k_e_r_s.html#gab880911066605602a966641682090169',1,'trackers.h']]], + ['trackerget_5fuser_52',['TrackerGet_User',['../group___t_r_a_c_k_e_r_s.html#ga4b08632669043dfdbd219dda03502bdb',1,'trackers.h']]], + ['trackerget_5fwarn_53',['TrackerGet_Warn',['../group___t_r_a_c_k_e_r_s.html#ga47ac59a406ee74d4cd9fe0fbaf63a758',1,'trackers.h']]], + ['trackers_20defines_54',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]], + ['trackers_2eh_55',['trackers.h',['../trackers_8h.html',1,'']]], + ['trackers_5fenable_56',['TRACKERS_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gac9eaedc31ab023ce7d6403999216e496',1,'mylibs_config.h']]], + ['trackertypedef_57',['TrackerTypeDef',['../group___t_r_a_c_k_e_r_s.html#ga50ccb119acf302969b7fdcb58f2130e4',1,'trackers.h']]], + ['trackerwrite_5fuser_58',['TrackerWrite_User',['../group___t_r_a_c_k_e_r_s.html#gad2f4062a9ac8c2ab062a364f640ebc51',1,'trackers.h']]] ]; diff --git a/Doc/html/search/all_15.js b/Doc/html/search/all_15.js index 5143fc3..728d84a 100644 --- a/Doc/html/search/all_15.js +++ b/Doc/html/search/all_15.js @@ -1,5 +1,5 @@ var searchData= [ - ['модуль_20таймеров_20my_5flibs_5ftim_0',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['модуль_20gpio_20my_5flibs_5fgpio_1',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]] + ['модуль_20таймеров_20ref_20my_5flibs_5ftim_0',['Модуль таймеров @ref MY_LIBS_TIM',['../index.html#tim_module',1,'']]], + ['модуль_20gpio_20ref_20my_5flibs_5fgpio_1',['Модуль GPIO @ref MY_LIBS_GPIO',['../index.html#gpio_module',1,'']]] ]; diff --git a/Doc/html/search/all_16.js b/Doc/html/search/all_16.js index ca20af9..08f8b9f 100644 --- a/Doc/html/search/all_16.js +++ b/Doc/html/search/all_16.js @@ -1,6 +1,6 @@ var searchData= [ ['обзор_0',['Обзор',['../index.html#overview',1,'']]], - ['общие_20утилиты_20mylibs_5fdefines_1',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], + ['общие_20утилиты_20ref_20mylibs_5fdefines_1',['Общие утилиты (@ref MYLIBS_DEFINES)',['../index.html#utils_module',1,'']]], ['основные_20возможности_2',['Основные возможности',['../index.html#features',1,'']]] ]; diff --git a/Doc/html/search/all_1a.js b/Doc/html/search/all_1a.js index 22224e1..fd98780 100644 --- a/Doc/html/search/all_1a.js +++ b/Doc/html/search/all_1a.js @@ -1,6 +1,6 @@ var searchData= [ - ['трассировка_20trace_0',['Трассировка <a class="el" href="group___t_r_a_c_e.html">Trace defines</a>',['../index.html#trace_module',1,'']]], - ['таймеров_20my_5flibs_5ftim_1',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['таймером_2',['Пример работы с таймером',['../index.html#tim_example',1,'']]] + ['таймеров_20ref_20my_5flibs_5ftim_0',['Модуль таймеров @ref MY_LIBS_TIM',['../index.html#tim_module',1,'']]], + ['таймером_1',['Пример работы с таймером',['../index.html#tim_example',1,'']]], + ['трассировка_20ref_20trace_2',['Трассировка @ref TRACE',['../index.html#trace_module',1,'']]] ]; diff --git a/Doc/html/search/all_1b.js b/Doc/html/search/all_1b.js index f69cabe..03ba3a5 100644 --- a/Doc/html/search/all_1b.js +++ b/Doc/html/search/all_1b.js @@ -1,4 +1,4 @@ var searchData= [ - ['утилиты_20mylibs_5fdefines_0',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]] + ['утилиты_20ref_20mylibs_5fdefines_0',['Общие утилиты (@ref MYLIBS_DEFINES)',['../index.html#utils_module',1,'']]] ]; diff --git a/Doc/html/search/all_2.js b/Doc/html/search/all_2.js index 471f910..8fed4dd 100644 --- a/Doc/html/search/all_2.js +++ b/Doc/html/search/all_2.js @@ -1,7 +1,7 @@ var searchData= [ ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], - ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]], + ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',1,'EvolveOptimizer_t']]], ['channels_20tools_2',['PWM/OC Channels tools',['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'']]], ['check_5fnull_5fptr_5f1_3',['check_null_ptr_1',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga5d066a5b9781f9437e75d98677489eb9',1,'mylibs_defs.h']]], ['check_5fnull_5fptr_5f2_4',['check_null_ptr_2',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#ga27b363f333cacdccc15f5174e096b5b3',1,'mylibs_defs.h']]], diff --git a/Doc/html/search/all_4.js b/Doc/html/search/all_4.js index 004dfd2..0884da6 100644 --- a/Doc/html/search/all_4.js +++ b/Doc/html/search/all_4.js @@ -1,16 +1,19 @@ var searchData= [ - ['enable_5fevolve_5foptimization_0',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]], - ['encoder_20tools_1',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], - ['encoder_5fdiff_2',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], - ['encoder_5fshdw_3',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], - ['error_20handler_20defines_4',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], - ['evolve_20configs_5',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]], - ['evolve_20optimizer_6',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]], - ['evolve_5fmax_5fcandidates_7',['EVOLVE_MAX_CANDIDATES',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971',1,'mylibs_config.h']]], - ['evolve_5fmax_5fparams_8',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]], - ['evolve_5foptimizer_2eh_9',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]], - ['evolveoptimizer_5finit_10',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gadaf3a90724197e1737d5c70c7bcc75e1',1,'evolve_optimizer.h']]], - ['evolveoptimizer_5fstep_11',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga75acd71c85d4e60dc0eb31bc5780086a',1,'evolve_optimizer.h']]], - ['evolveoptimizer_5ft_12',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] + ['elovle_5fn_5felite_5fcandidate_0',['ELOVLE_N_ELITE_CANDIDATE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga38607e23d9234524bc7de5869b15b8eb',1,'evolve_optimizer.h']]], + ['enable_5fevolve_5foptimization_1',['ENABLE_EVOLVE_OPTIMIZATION',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga2cac097081444a7a9b040f4b11550e47',1,'mylibs_config.h']]], + ['encoder_20tools_2',['Encoder tools',['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'']]], + ['encoder_5fdiff_3',['Encoder_Diff',['../struct_t_i_m___encoder_type_def.html#a6f769f027b760a4b496e2b2b77bf54a3',1,'TIM_EncoderTypeDef']]], + ['encoder_5fshdw_4',['Encoder_Shdw',['../struct_t_i_m___encoder_type_def.html#a0dacce3dde7df3122583869d96a372a2',1,'TIM_EncoderTypeDef']]], + ['error_20handler_20defines_5',['Error Handler defines',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html',1,'']]], + ['evolve_20configs_6',['Evolve configs',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html',1,'']]], + ['evolve_20optimizer_7',['Evolve optimizer',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html',1,'']]], + ['evolve_5fmax_5fcandidates_8',['EVOLVE_MAX_CANDIDATES',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga7c1396e5c95c766afccdb45cbfcf5971',1,'mylibs_config.h']]], + ['evolve_5fmax_5fparams_9',['EVOLVE_MAX_PARAMS',['../group___e_v_o_l_v_e___c_o_n_f_i_g.html#ga80d6162495fc3776d8902610657d4fee',1,'mylibs_config.h']]], + ['evolve_5fmutation_5fmax_5fpct_10',['EVOLVE_MUTATION_MAX_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga861c1c6a503c21441abcec0d57b848bc',1,'evolve_optimizer.h']]], + ['evolve_5fmutation_5fmin_5fpct_11',['EVOLVE_MUTATION_MIN_PCT',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga2f2b1be34ad4eb1bf3267237200cd6c6',1,'evolve_optimizer.h']]], + ['evolve_5foptimizer_2eh_12',['evolve_optimizer.h',['../evolve__optimizer_8h.html',1,'']]], + ['evolveoptimizer_5finit_13',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5fstep_14',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5ft_15',['EvolveOptimizer_t',['../struct_evolve_optimizer__t.html',1,'']]] ]; diff --git a/Doc/html/search/all_6.js b/Doc/html/search/all_6.js index ab97706..ea28794 100644 --- a/Doc/html/search/all_6.js +++ b/Doc/html/search/all_6.js @@ -7,7 +7,7 @@ var searchData= ['general_5ftim_2ec_4',['general_tim.c',['../general__tim_8c.html',1,'']]], ['general_5ftim_2eh_5',['general_tim.h',['../general__tim_8h.html',1,'']]], ['gpio_6',['Пример работы с GPIO',['../index.html#gpio_example',1,'']]], - ['gpio_20my_5flibs_5fgpio_7',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], + ['gpio_20ref_20my_5flibs_5fgpio_7',['Модуль GPIO @ref MY_LIBS_GPIO',['../index.html#gpio_module',1,'']]], ['gpio_20tools_8',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], ['gpio_20trace_20defines_9',['GPIO trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'']]], ['gpio_5fclock_5fenable_10',['GPIO_Clock_Enable',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html#ga962f010f783b81fcdd27eb6b53db28e6',1,'GPIO_Clock_Enable(GPIO_TypeDef *GPIOx): general_gpio.c']]], diff --git a/Doc/html/search/all_8.js b/Doc/html/search/all_8.js index 2b98e91..037d453 100644 --- a/Doc/html/search/all_8.js +++ b/Doc/html/search/all_8.js @@ -6,6 +6,5 @@ var searchData= ['include_5fgeneral_5fperiph_5flibs_3',['INCLUDE_GENERAL_PERIPH_LIBS',['../group___l_i_b_s___c_o_n_f_i_g.html#ga181a46326e46b60afb160190832c7281',1,'mylibs_config.h']]], ['include_5ftrace_5flib_4',['INCLUDE_TRACE_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga0a3ca94b616997069dd53e2c6c2687d7',1,'mylibs_config.h']]], ['include_5ftrackers_5flib_5',['INCLUDE_TRACKERS_LIB',['../group___l_i_b_s___c_o_n_f_i_g.html#ga4403055986b70bb02b8d37073a122e32',1,'mylibs_config.h']]], - ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]], - ['iq_5fmutation_7',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]] + ['init_20defines_6',['Init defines',['../group___g_p_i_o___i_n_i_t.html',1,'Init defines'],['../group___t_i_m___i_n_i_t.html',1,'Init defines']]] ]; diff --git a/Doc/html/search/all_9.js b/Doc/html/search/all_9.js index d707ae3..89afd0d 100644 --- a/Doc/html/search/all_9.js +++ b/Doc/html/search/all_9.js @@ -17,6 +17,6 @@ var searchData= ['local_5ftime_14',['local_time',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga9c853b02c22f26023c34d1d404b6d653',1,'evolve_optimizer.h']]], ['log_5flevel_15',['LOG_LEVEL',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga0b87e0d3bf5853bcbb0b66a7c48fdc05',1,'mylibs_config.h']]], ['log_5fprintf_16',['log_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#ga730fb7b8d0bbb348dca73c15bd0e0b26',1,'trace.h']]], - ['loss_17',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]], + ['loss_17',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]], ['lr_18',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/all_a.js b/Doc/html/search/all_a.js index f2ebf4a..fedafe7 100644 --- a/Doc/html/search/all_a.js +++ b/Doc/html/search/all_a.js @@ -4,14 +4,15 @@ var searchData= ['msdelaystart_1',['msDelayStart',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga8a5051b1292d1019fe8dd3fc5521ab25',1,'mylibs_defs.h']]], ['msdelaywaitdone_2',['msDelayWaitDone',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#gaed082c07b9fc4d1894330d885b9b5518',1,'mylibs_defs.h']]], ['msdelaywhileactive_3',['msDelayWhileActive',['../group___d_e_l_a_y_s___d_e_f_i_n_e_s.html#ga0b97e172659a59ee4fa56f851643ae85',1,'mylibs_defs.h']]], - ['my_20libs_4',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], - ['my_5flibs_5fgpio_5',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]], - ['my_5flibs_5ftim_6',['Модуль таймеров <a class="el" href="group___m_y___l_i_b_s___t_i_m.html">TIM Tools</a>',['../index.html#tim_module',1,'']]], - ['my_5fprintf_7',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], - ['mylibs_8',['MyLibs',['../index.html',1,'']]], - ['mylibs_5fconfig_2eh_9',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], - ['mylibs_5fdefines_10',['Общие утилиты (<a class="el" href="group___m_y_l_i_b_s___d_e_f_i_n_e_s.html">General Tools</a>)',['../index.html#utils_module',1,'']]], - ['mylibs_5fdefs_2eh_11',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], - ['mylibs_5ferror_5fhandler_12',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]], - ['mylibs_5finclude_2eh_13',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] + ['mutation_5famp_4',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]], + ['my_20libs_5',['My Libs',['../group___m_y_l_i_b_s___a_l_l.html',1,'']]], + ['my_5flibs_5fgpio_6',['Модуль GPIO @ref MY_LIBS_GPIO',['../index.html#gpio_module',1,'']]], + ['my_5flibs_5ftim_7',['Модуль таймеров @ref MY_LIBS_TIM',['../index.html#tim_module',1,'']]], + ['my_5fprintf_8',['my_printf',['../group___t_r_a_c_e___s_e_r_i_a_l.html#gae9b9b8a611e291a2f2aa5abf99f3ebaa',1,'trace.h']]], + ['mylibs_9',['MyLibs',['../index.html',1,'']]], + ['mylibs_5fconfig_2eh_10',['mylibs_config.h',['../mylibs__config_8h.html',1,'']]], + ['mylibs_5fdefines_11',['Общие утилиты (@ref MYLIBS_DEFINES)',['../index.html#utils_module',1,'']]], + ['mylibs_5fdefs_2eh_12',['mylibs_defs.h',['../mylibs__defs_8h.html',1,'']]], + ['mylibs_5ferror_5fhandler_13',['MyLibs_Error_Handler',['../group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.html#gae110df81afd885a390bbeb152d7b709f',1,'mylibs_defs.h']]], + ['mylibs_5finclude_2eh_14',['mylibs_include.h',['../mylibs__include_8h.html',1,'']]] ]; diff --git a/Doc/html/search/all_d.js b/Doc/html/search/all_d.js index 397ab9d..7209e2c 100644 --- a/Doc/html/search/all_d.js +++ b/Doc/html/search/all_d.js @@ -1,7 +1,7 @@ var searchData= [ - ['param_5fscale_5fq16_0',['PARAM_SCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaff223481fcffea77394a331afde29fdc',1,'evolve_optimizer.h']]], - ['param_5funscale_5fq16_1',['PARAM_UNSCALE_Q16',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga71a0c240c667e976d9caef391ab767ba',1,'evolve_optimizer.h']]], + ['param_5fscale_0',['PARAM_SCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga83abbcabaff9111c03ae2475ee72ea3e',1,'evolve_optimizer.h']]], + ['param_5funscale_1',['PARAM_UNSCALE',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaa1d5510fe5f0bd989473f3ebe324bde3',1,'evolve_optimizer.h']]], ['pc_2',['pc',['../struct_h_f___stack_frame__t.html#a16563896004751c90e41c81ae4570732',1,'HF_StackFrame_t']]], ['peripheral_3',['Peripheral',['../group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.html',1,'']]], ['psr_4',['psr',['../struct_h_f___stack_frame__t.html#ae47cb051ee3c94471bfd4fe7e49c55f9',1,'HF_StackFrame_t']]], diff --git a/Doc/html/search/all_e.js b/Doc/html/search/all_e.js index 95ce717..40ec221 100644 --- a/Doc/html/search/all_e.js +++ b/Doc/html/search/all_e.js @@ -5,15 +5,19 @@ var searchData= ['r12_2',['r12',['../struct_h_f___stack_frame__t.html#a819ee3bc518c460ece1b7c4079f8f80b',1,'HF_StackFrame_t']]], ['r2_3',['r2',['../struct_h_f___stack_frame__t.html#a5a52e5006dabcf68c0fa4cfb0e03335b',1,'HF_StackFrame_t']]], ['r3_4',['r3',['../struct_h_f___stack_frame__t.html#a453c7af42b6928a693af422e17c981d3',1,'HF_StackFrame_t']]], - ['rtt_20buffer_5',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]], - ['rtt_5feraseflash_6',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]], - ['rtt_5fflash_5fbuffer_5fsize_7',['RTT_FLASH_BUFFER_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3',1,'mylibs_config.h']]], - ['rtt_5fflash_5fsector_8',['RTT_FLASH_SECTOR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724',1,'mylibs_config.h']]], - ['rtt_5fflash_5fsector_5fend_9',['RTT_FLASH_SECTOR_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d',1,'mylibs_config.h']]], - ['rtt_5fflash_5fsector_5fstart_10',['RTT_FLASH_SECTOR_START',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297',1,'mylibs_config.h']]], - ['rtt_5fflashheader_5ft_11',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]], - ['rtt_5fflashprepare_12',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]], - ['rtt_5freadfromflash_13',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]], - ['rtt_5fsavetoflash_14',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]], - ['rtt_5ftrace_5fenable_15',['RTT_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8',1,'mylibs_config.h']]] + ['ref_20my_5flibs_5fgpio_5',['Модуль GPIO @ref MY_LIBS_GPIO',['../index.html#gpio_module',1,'']]], + ['ref_20my_5flibs_5ftim_6',['Модуль таймеров @ref MY_LIBS_TIM',['../index.html#tim_module',1,'']]], + ['ref_20mylibs_5fdefines_7',['Общие утилиты (@ref MYLIBS_DEFINES)',['../index.html#utils_module',1,'']]], + ['ref_20trace_8',['Трассировка @ref TRACE',['../index.html#trace_module',1,'']]], + ['rtt_20buffer_9',['Flash RTT Buffer',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html',1,'']]], + ['rtt_5feraseflash_10',['RTT_EraseFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga8d8c6850e32b42871faefce3352012d1',1,'trace.h']]], + ['rtt_5fflash_5fbuffer_5fsize_11',['RTT_FLASH_BUFFER_SIZE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga501312b24e322de4dd6755ad442f0ba3',1,'mylibs_config.h']]], + ['rtt_5fflash_5fsector_12',['RTT_FLASH_SECTOR',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga3bc1b76864e1d32cbdd174d4caae7724',1,'mylibs_config.h']]], + ['rtt_5fflash_5fsector_5fend_13',['RTT_FLASH_SECTOR_END',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gafeca0be3688dea07ff443f894668003d',1,'mylibs_config.h']]], + ['rtt_5fflash_5fsector_5fstart_14',['RTT_FLASH_SECTOR_START',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga8e56f75d3ab8a89ddde1404ae23c3297',1,'mylibs_config.h']]], + ['rtt_5fflashheader_5ft_15',['RTT_FlashHeader_t',['../struct_r_t_t___flash_header__t.html',1,'']]], + ['rtt_5fflashprepare_16',['RTT_FlashPrepare',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga21353cb4f5af666237739e62ce019cd6',1,'trace.h']]], + ['rtt_5freadfromflash_17',['RTT_ReadFromFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga734b2ebbf0c77699b739013878cfd146',1,'trace.h']]], + ['rtt_5fsavetoflash_18',['RTT_SaveToFlash',['../group___t_r_a_c_e___r_t_t___f_l_a_s_h.html#ga79f222c8ab644de4d47f07528d1edd63',1,'trace.h']]], + ['rtt_5ftrace_5fenable_19',['RTT_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#ga00ff2175bdc1fb11c8ec970ea3010dd8',1,'mylibs_config.h']]] ]; diff --git a/Doc/html/search/all_f.js b/Doc/html/search/all_f.js index 9761998..6527aed 100644 --- a/Doc/html/search/all_f.js +++ b/Doc/html/search/all_f.js @@ -10,20 +10,21 @@ var searchData= ['sorted_5fidx_7',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]], ['spi_5fsettingstypedef_8',['SPI_SettingsTypeDef',['../struct_s_p_i___settings_type_def.html',1,'']]], ['sslaveconfig_9',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['state_10',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stickbaseprescaler_11',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_12',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_13',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_14',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_15',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_16',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_17',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_18',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5foff_19',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]], - ['sw_5fon_20',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]], - ['sw_5fpin_21',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_22',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_23',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]], - ['switch_20tools_24',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]], - ['swo_5ftrace_5fenable_25',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] + ['stability_10',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]], + ['state_11',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], + ['stickbaseprescaler_12',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], + ['stickbaseus_13',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], + ['stimahbfreqmhz_14',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], + ['stimfreqhz_15',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], + ['stimmode_16',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], + ['sw_17',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], + ['sw_5factivelvl_18',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], + ['sw_5ffilterdelay_19',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], + ['sw_5foff_20',['SW_OFF',['../group___g_p_i_o___i_n_i_t.html#gacd8900c9ec0efde1da3253b718574067',1,'general_gpio.h']]], + ['sw_5fon_21',['SW_ON',['../group___g_p_i_o___i_n_i_t.html#ga19d9e3aced311179a2914e0c9b13d0f9',1,'general_gpio.h']]], + ['sw_5fpin_22',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], + ['sw_5fport_23',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], + ['sw_5fprevstate_24',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]], + ['switch_20tools_25',['Switch tools',['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'']]], + ['swo_5ftrace_5fenable_26',['SWO_TRACE_ENABLE',['../group___t_r_a_c_e___c_o_n_f_i_g.html#gab8db9704b5d11858aa879689b9d36336',1,'mylibs_config.h']]] ]; diff --git a/Doc/html/search/close.svg b/Doc/html/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/Doc/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/Doc/html/search/functions_0.js b/Doc/html/search/functions_0.js index ede5d0f..32253ba 100644 --- a/Doc/html/search/functions_0.js +++ b/Doc/html/search/functions_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gadaf3a90724197e1737d5c70c7bcc75e1',1,'evolve_optimizer.h']]], - ['evolveoptimizer_5fstep_1',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga75acd71c85d4e60dc0eb31bc5780086a',1,'evolve_optimizer.h']]] + ['evolveoptimizer_5finit_0',['EvolveOptimizer_Init',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#ga4e3ea118b5b9068619c57724a925ba21',1,'evolve_optimizer.h']]], + ['evolveoptimizer_5fstep_1',['EvolveOptimizer_Step',['../group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.html#gaef44a1f3298514569cc2b396a92101ef',1,'evolve_optimizer.h']]] ]; diff --git a/Doc/html/search/groups_f.js b/Doc/html/search/groups_f.js index 96ba99e..0861945 100644 --- a/Doc/html/search/groups_f.js +++ b/Doc/html/search/groups_f.js @@ -1,10 +1,14 @@ var searchData= [ ['tim_20tools_0',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], - ['tools_1',['Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'General Tools'],['../group___m_y___l_i_b_s___g_p_i_o.html',1,'GPIO Tools'],['../group___m_y___l_i_b_s___t_i_m.html',1,'TIM Tools']]], - ['tools_2',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools'],['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], - ['trace_20configs_3',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], - ['trace_20defines_4',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], - ['trace_20defines_5',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], - ['trackers_20defines_6',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] + ['tools_1',['tools',['../group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.html',1,'Delay tools'],['../group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.html',1,'Encoder tools']]], + ['tools_2',['General Tools',['../group___m_y_l_i_b_s___d_e_f_i_n_e_s.html',1,'']]], + ['tools_3',['tools',['../group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.html',1,'General tools'],['../group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.html',1,'General tools']]], + ['tools_4',['GPIO Tools',['../group___m_y___l_i_b_s___g_p_i_o.html',1,'']]], + ['tools_5',['tools',['../group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.html',1,'LED tools'],['../group___m_y_l_i_b_s___t_i_m___o_c.html',1,'PWM/OC Channels tools'],['../group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.html',1,'Switch tools']]], + ['tools_6',['TIM Tools',['../group___m_y___l_i_b_s___t_i_m.html',1,'']]], + ['trace_20configs_7',['Trace configs',['../group___t_r_a_c_e___c_o_n_f_i_g.html',1,'']]], + ['trace_20defines_8',['trace defines',['../group___t_r_a_c_e___g_p_i_o.html',1,'GPIO trace defines'],['../group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.html',1,'Hardfault trace defines'],['../group___t_r_a_c_e___s_e_r_i_a_l.html',1,'Serial trace defines']]], + ['trace_20defines_9',['Trace defines',['../group___t_r_a_c_e.html',1,'']]], + ['trackers_20defines_10',['Trackers defines',['../group___t_r_a_c_k_e_r_s.html',1,'']]] ]; diff --git a/Doc/html/search/mag.svg b/Doc/html/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/Doc/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/Doc/html/search/mag_d.svg b/Doc/html/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/Doc/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/Doc/html/search/mag_sel.svg b/Doc/html/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/Doc/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/Doc/html/search/mag_seld.svg b/Doc/html/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/Doc/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/Doc/html/search/pages_0.js b/Doc/html/search/pages_0.js index 4ff0f40..2e8c2c6 100644 --- a/Doc/html/search/pages_0.js +++ b/Doc/html/search/pages_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['gpio_0',['Пример работы с GPIO',['../index.html#gpio_example',1,'']]], - ['gpio_20my_5flibs_5fgpio_1',['Модуль GPIO <a class="el" href="group___m_y___l_i_b_s___g_p_i_o.html">GPIO Tools</a>',['../index.html#gpio_module',1,'']]] + ['mylibs_0',['MyLibs',['../index.html',1,'']]] ]; diff --git a/Doc/html/search/search.css b/Doc/html/search/search.css index 956f31f..19f76f9 100644 --- a/Doc/html/search/search.css +++ b/Doc/html/search/search.css @@ -5,8 +5,8 @@ display: flex; justify-content: center; align-items: center; - height: 43px; - margin-right: 0; + height: 36px; + margin-right: 1em; } /*---------------- Search box styling */ @@ -27,23 +27,43 @@ dark-mode-toggle { white-space : nowrap; background: var(--search-background-color); border-radius: 0.65em; - border: 1px solid var(--search-box-border-color); + box-shadow: var(--search-box-shadow); z-index: 102; - margin-right: 4px; } #MSearchBox .left { display: inline-block; vertical-align: middle; - height: 1.6em; + height: 1.4em; } +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + #MSearchField { display: inline-block; - vertical-align: top; + vertical-align: middle; width: 7.5em; - height: 22px; - margin: 0 0 0 0.15em; + height: 19px; + margin: 0 0.15em; padding: 0; line-height: 1em; border:none; @@ -66,7 +86,7 @@ dark-mode-toggle { display: inline-block; vertical-align: middle; width: 1.4em; - height: 1.6em; + height: 1.4em; } #MSearchClose { @@ -81,100 +101,14 @@ dark-mode-toggle { } #MSearchCloseImg { - margin: 6px 0 0 4px; + padding: 0.3em; + margin: 0; } -.close-icon { - width: 11px; - height: 11px; - background-color: var(--search-close-icon-bg-color); - border-radius: 50%; - position: relative; - display: flex; - justify-content: center; - align-items: center; - box-sizing: content-box; -} - -.close-icon:before, -.close-icon:after { - content: ''; - position: absolute; - width: 7px; - height: 1px; - background-color: var(--search-close-icon-fg-color); -} - -.close-icon:before { - transform: rotate(45deg); -} - -.close-icon:after { - transform: rotate(-45deg); -} - - .MSearchBoxActive #MSearchField { color: var(--search-active-color); } -.search-icon { - width: 20px; - height: 20px; - display: inline-block; - position: relative; - margin-left: 3px; -} - -#MSearchSelectExt.search-icon { - width: 10px; -} - -#MSearchSelectExt + input { - margin-left: 5px; -} - -.search-icon::before, .search-icon::after { - content: ''; - position: absolute; - border: 1.5px solid var(--search-foreground-color); - box-sizing: content-box; -} - -.search-icon::before { - width: 6px; - height: 6px; - border-radius: 50%; - top: 7px; - left: 2px; - background: var(--search-background-color); -} - -.search-icon::after { - border: 1px solid var(--search-foreground-color); - width: 0px; - height: 3px; - border-radius: 2px; - top: 15px; - left: 8px; - transform: rotate(-45deg); - transform-origin: top left; -} - -.search-icon-dropdown { - content: ''; - width: 0; - height: 0; - border-left: 3px solid transparent; - border-right: 3px solid transparent; - border-top: 3px solid var(--search-foreground-color); - top: 8px; - left: 15px; - transform: translateX(-50%); - position: absolute; -} - - /*---------------- Search filter selection */ @@ -185,12 +119,15 @@ dark-mode-toggle { left: 0; top: 0; border: 1px solid var(--search-filter-border-color); background-color: var(--search-filter-background-color); - backdrop-filter: var(--search-filter-backdrop-filter); - -webkit-backdrop-filter: var(--search-filter-backdrop-filter); z-index: 10001; padding-top: 4px; padding-bottom: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } .SelectItem { @@ -239,39 +176,18 @@ iframe#MSearchResults { height: 15em; } -@keyframes slideInSearchResults { - from { - opacity: 0; - transform: translate(0, 15px); - } - - to { - opacity: 1; - transform: translate(0, 20px); - } -} - #MSearchResultsWindow { display: none; position: absolute; - left: auto; - right: 4px; - top: 0; + left: 0; top: 0; border: 1px solid var(--search-results-border-color); background-color: var(--search-results-background-color); - backdrop-filter: var(--search-results-backdrop-filter); - -webkit-backdrop-filter: var(--search-results-backdrop-filter); z-index:10000; width: 300px; height: 400px; overflow: auto; - border-radius: 8px; - transform: translate(0, 20px); - animation: ease-out 280ms slideInSearchResults; - box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); } - /* ----------------------------------- */ @@ -285,13 +201,13 @@ iframe#MSearchResults { } .SRPage .SREntry { - font-size: 10pt; - padding: 2px 5px; + font-size: 8pt; + padding: 1px 5px; } div.SRPage { margin: 5px 2px; - /*background-color: var(--search-results-background-color);*/ + background-color: var(--search-results-background-color); } .SRChildren { @@ -345,17 +261,14 @@ div.searchresults { margin-right: 10px; } -#searchBoxPos1 dark-mode-toggle { - margin-top: 4px; -} - /*---------------- External search page results */ .pages b { - color: var(--nav-foreground-color); + color: white; padding: 5px 5px 3px 5px; - background-color: var(--nav-menu-active-bg); - border-radius: 4px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; } .pages { diff --git a/Doc/html/search/search.js b/Doc/html/search/search.js index dc14410..666af01 100644 --- a/Doc/html/search/search.js +++ b/Doc/html/search/search.js @@ -607,12 +607,6 @@ function createResults(resultsPath) { elem.setAttribute('className',attr); } - const decodeHtml = (html) => { - const txt = document.createElement("textarea"); - txt.innerHTML = html; - return txt.value; - }; - const results = document.getElementById("SRResults"); results.innerHTML = ''; searchData.forEach((elem,index) => { @@ -626,14 +620,10 @@ function createResults(resultsPath) { srLink.setAttribute('id','Item'+index); setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = decodeHtml(elem[1][0]); + srLink.innerHTML = elem[1][0]; srEntry.appendChild(srLink); if (elem[1].length==2) { // single result - if (elem[1][1][0].startsWith('http://') || elem[1][1][0].startsWith('https://')) { // absolute path - srLink.setAttribute('href',elem[1][1][0]); - } else { // relative path - srLink.setAttribute('href',resultsPath+elem[1][1][0]); - } + srLink.setAttribute('href',resultsPath+elem[1][1][0]); srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); if (elem[1][1][1]) { srLink.setAttribute('target','_parent'); @@ -642,7 +632,7 @@ function createResults(resultsPath) { } const srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); - srScope.innerHTML = decodeHtml(elem[1][1][2]); + srScope.innerHTML = elem[1][1][2]; srEntry.appendChild(srScope); } else { // multiple results srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); @@ -653,18 +643,14 @@ function createResults(resultsPath) { srChild.setAttribute('id','Item'+index+'_c'+c); setKeyActions(srChild,'return searchResults.NavChild(event,'+index+','+c+')'); setClassAttr(srChild,'SRScope'); - if (elem[1][c+1][0].startsWith('http://') || elem[1][c+1][0].startsWith('https://')) { // absolute path - srChild.setAttribute('href',elem[1][c+1][0]); - } else { // relative path - srChild.setAttribute('href',resultsPath+elem[1][c+1][0]); - } + srChild.setAttribute('href',resultsPath+elem[1][c+1][0]); srChild.setAttribute('onclick','searchBox.CloseResultsWindow()'); if (elem[1][c+1][1]) { srChild.setAttribute('target','_parent'); } else { srChild.setAttribute('target','_blank'); } - srChild.innerHTML = decodeHtml(elem[1][c+1][2]); + srChild.innerHTML = elem[1][c+1][2]; srChildren.appendChild(srChild); } srEntry.appendChild(srChildren); diff --git a/Doc/html/search/searchdata.js b/Doc/html/search/searchdata.js index afacf37..9a4156c 100644 --- a/Doc/html/search/searchdata.js +++ b/Doc/html/search/searchdata.js @@ -4,11 +4,11 @@ var indexSectionsWithContent = 1: "eghrstu", 2: "begmt", 3: "eghrt", - 4: "cdeghilnprst", + 4: "cdeghlmnprst", 5: "gt", 6: "lt", 7: "abcdefghilmoprstu", - 8: "gmtвзимопрсту" + 8: "m" }; var indexSectionNames = diff --git a/Doc/html/search/variables_0.js b/Doc/html/search/variables_0.js index c5df047..0d2dad9 100644 --- a/Doc/html/search/variables_0.js +++ b/Doc/html/search/variables_0.js @@ -1,5 +1,5 @@ var searchData= [ ['cand_5findex_0',['cand_index',['../struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae',1,'EvolveOptimizer_t']]], - ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d',1,'EvolveOptimizer_t']]] + ['candidates_1',['candidates',['../struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_5.js b/Doc/html/search/variables_5.js index b322adf..6a97596 100644 --- a/Doc/html/search/variables_5.js +++ b/Doc/html/search/variables_5.js @@ -1,4 +1,9 @@ var searchData= [ - ['iq_5fmutation_0',['iq_mutation',['../struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5',1,'EvolveOptimizer_t']]] + ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], + ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], + ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], + ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], + ['loss_4',['loss',['../struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df',1,'EvolveOptimizer_t']]], + ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] ]; diff --git a/Doc/html/search/variables_6.js b/Doc/html/search/variables_6.js index def9829..76205be 100644 --- a/Doc/html/search/variables_6.js +++ b/Doc/html/search/variables_6.js @@ -1,9 +1,4 @@ var searchData= [ - ['led_5factivelvl_0',['LED_ActiveLvl',['../struct_g_p_i_o___l_e_d_type_def.html#abe9aadc0b28d042267f7155e187a1816',1,'GPIO_LEDTypeDef']]], - ['led_5fperiod_1',['LED_Period',['../struct_g_p_i_o___l_e_d_type_def.html#a6cc026931a4681732f9a329ae03098ec',1,'GPIO_LEDTypeDef']]], - ['led_5fpin_2',['LED_Pin',['../struct_g_p_i_o___l_e_d_type_def.html#a684ff60e4c94daf2221524cdc6fcc978',1,'GPIO_LEDTypeDef']]], - ['led_5fport_3',['LED_Port',['../struct_g_p_i_o___l_e_d_type_def.html#a831923d4d157267ecc2f1add1c49adcf',1,'GPIO_LEDTypeDef']]], - ['loss_4',['loss',['../struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d',1,'EvolveOptimizer_t']]], - ['lr_5',['lr',['../struct_h_f___stack_frame__t.html#a6e51904297f7725e96d5b5fb291ef577',1,'HF_StackFrame_t']]] + ['mutation_5famp_0',['mutation_amp',['../struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8',1,'EvolveOptimizer_t']]] ]; diff --git a/Doc/html/search/variables_a.js b/Doc/html/search/variables_a.js index 188fe02..e291301 100644 --- a/Doc/html/search/variables_a.js +++ b/Doc/html/search/variables_a.js @@ -7,16 +7,17 @@ var searchData= ['smasterconfig_4',['sMasterConfig',['../struct_t_i_m___settings_type_def.html#a2d9d277dd395424b964445ec1bc65b21',1,'TIM_SettingsTypeDef']]], ['sorted_5fidx_5',['sorted_idx',['../struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a',1,'EvolveOptimizer_t']]], ['sslaveconfig_6',['sSlaveConfig',['../struct_t_i_m___settings_type_def.html#a9694cf0910a69d48ff94f8aeac106969',1,'TIM_SettingsTypeDef']]], - ['state_7',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], - ['stickbaseprescaler_8',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], - ['stickbaseus_9',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], - ['stimahbfreqmhz_10',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], - ['stimfreqhz_11',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], - ['stimmode_12',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], - ['sw_13',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], - ['sw_5factivelvl_14',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], - ['sw_5ffilterdelay_15',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], - ['sw_5fpin_16',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], - ['sw_5fport_17',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], - ['sw_5fprevstate_18',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] + ['stability_7',['stability',['../struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c',1,'EvolveOptimizer_t']]], + ['state_8',['state',['../struct_g_p_i_o___l_e_d_type_def.html#ad28d93023a00e3c5669bd3deda122435',1,'GPIO_LEDTypeDef']]], + ['stickbaseprescaler_9',['sTickBasePrescaler',['../struct_t_i_m___settings_type_def.html#a11151fe125960cb8e61328ffd06b7718',1,'TIM_SettingsTypeDef']]], + ['stickbaseus_10',['sTickBaseUS',['../struct_t_i_m___settings_type_def.html#a58da1b4c0f6d12d7d9fb2f170b9b9e6e',1,'TIM_SettingsTypeDef']]], + ['stimahbfreqmhz_11',['sTimAHBFreqMHz',['../struct_t_i_m___settings_type_def.html#a7073358fd3a722687eb85238ab570014',1,'TIM_SettingsTypeDef']]], + ['stimfreqhz_12',['sTimFreqHz',['../struct_t_i_m___settings_type_def.html#af6057ff3f60f5e01b41d4a347b79a5e4',1,'TIM_SettingsTypeDef']]], + ['stimmode_13',['sTimMode',['../struct_t_i_m___settings_type_def.html#ab90e370c3edda88e76583293c250d2b0',1,'TIM_SettingsTypeDef']]], + ['sw_14',['Sw',['../struct_t_i_m___encoder_type_def.html#a99295760ff8b27d1e6f1710f29383a45',1,'TIM_EncoderTypeDef']]], + ['sw_5factivelvl_15',['Sw_ActiveLvl',['../struct_g_p_i_o___switch_type_def.html#a4fadf5ead3ebccad521a52c064eeb405',1,'GPIO_SwitchTypeDef']]], + ['sw_5ffilterdelay_16',['Sw_FilterDelay',['../struct_g_p_i_o___switch_type_def.html#a2600e599a961af2e280c721894df4c06',1,'GPIO_SwitchTypeDef']]], + ['sw_5fpin_17',['Sw_Pin',['../struct_g_p_i_o___switch_type_def.html#a63d58d9cba49a5823175585ef2996032',1,'GPIO_SwitchTypeDef']]], + ['sw_5fport_18',['Sw_Port',['../struct_g_p_i_o___switch_type_def.html#afb369df75a6065fd89ac4ba97d98ab1a',1,'GPIO_SwitchTypeDef']]], + ['sw_5fprevstate_19',['Sw_PrevState',['../struct_g_p_i_o___switch_type_def.html#a245f1dc811279ce5d4598582db979a89',1,'GPIO_SwitchTypeDef']]] ]; diff --git a/Doc/html/splitbar.png b/Doc/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/Doc/html/splitbard.png b/Doc/html/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/Doc/html/struct_evolve_optimizer__t-members.html b/Doc/html/struct_evolve_optimizer__t-members.html index 8578c3c..34782f0 100644 --- a/Doc/html/struct_evolve_optimizer__t-members.html +++ b/Doc/html/struct_evolve_optimizer__t-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({
        - + -
      @@ -71,9 +73,10 @@ $(function() {
    - diff --git a/Doc/html/struct_evolve_optimizer__t.html b/Doc/html/struct_evolve_optimizer__t.html index d7f47e8..36e2fab 100644 --- a/Doc/html/struct_evolve_optimizer__t.html +++ b/Doc/html/struct_evolve_optimizer__t.html @@ -3,7 +3,7 @@ - + MyLibs: EvolveOptimizer_t Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    EvolveOptimizer_t Struct Reference
    @@ -106,30 +112,59 @@ $(function(){initNavTree('struct_evolve_optimizer__t.html','','struct_evolve_opt

    #include <evolve_optimizer.h>

    - + + + + - + + - - + + + + - - - - + + + + + + + +

    +

    Public Attributes

    float stability
     Коэффициент насколько стабильная популяция (0..1)(n_cand)
     
    uint16_t n_params
     Количество параметров
     
    uint16_t n_cand
     Количество кандидатов
     Количество кандидатов в популяции
     
    uint16_t n_best
     Количество лучших, усредняемых
    uint16_t iq_mutation
     Амплитуда мутации в Q16.16.
     
    float mutation_amp
     Амплитуда мутации (0..1)
     
    uint16_t cand_index
     Индекс кандидата для обработки
    int32_t loss [100]
     Loss для каждого кандидата
    int32_t candidates [100][20]
     Параметры кандидатов
     
    float loss [100]
     Loss для каждого кандидата
     
    float candidates [100][20]
     Параметры кандидатов
     
    uint16_t sorted_idx [100]
     Индексы отсортированных кандидатов
     
    -

    Detailed Description

    +

    Detailed Description

    Структура эволюционного оптимизатора

    -

    Definition at line 87 of file evolve_optimizer.h.

    -

    Member Data Documentation

    +

    Definition at line 102 of file evolve_optimizer.h.

    +

    Member Data Documentation

    + +

    ◆ stability

    + +
    +
    + + + + +
    float EvolveOptimizer_t::stability
    +
    + +

    Коэффициент насколько стабильная популяция (0..1)(n_cand)

    + +

    Definition at line 103 of file evolve_optimizer.h.

    + +
    +

    ◆ n_params

    @@ -144,7 +179,7 @@ Public Attributes

    Количество параметров

    -

    Definition at line 88 of file evolve_optimizer.h.

    +

    Definition at line 104 of file evolve_optimizer.h.

    @@ -160,9 +195,9 @@ Public Attributes
    -

    Количество кандидатов

    +

    Количество кандидатов в популяции

    -

    Definition at line 89 of file evolve_optimizer.h.

    +

    Definition at line 105 of file evolve_optimizer.h.

    @@ -180,25 +215,25 @@ Public Attributes

    Количество лучших, усредняемых

    -

    Definition at line 90 of file evolve_optimizer.h.

    +

    Definition at line 106 of file evolve_optimizer.h.

    - -

    ◆ iq_mutation

    + +

    ◆ mutation_amp

    - +
    uint16_t EvolveOptimizer_t::iq_mutationfloat EvolveOptimizer_t::mutation_amp
    -

    Амплитуда мутации в Q16.16.

    +

    Амплитуда мутации (0..1)

    -

    Definition at line 91 of file evolve_optimizer.h.

    +

    Definition at line 107 of file evolve_optimizer.h.

    @@ -216,43 +251,43 @@ Public Attributes

    Индекс кандидата для обработки

    -

    Definition at line 92 of file evolve_optimizer.h.

    +

    Definition at line 108 of file evolve_optimizer.h.

    - -

    ◆ loss

    + +

    ◆ loss

    - +
    int32_t EvolveOptimizer_t::loss[100]float EvolveOptimizer_t::loss[100]

    Loss для каждого кандидата

    -

    Definition at line 93 of file evolve_optimizer.h.

    +

    Definition at line 109 of file evolve_optimizer.h.

    - -

    ◆ candidates

    + +

    ◆ candidates

    - +
    int32_t EvolveOptimizer_t::candidates[100][20]float EvolveOptimizer_t::candidates[100][20]

    Параметры кандидатов

    -

    Definition at line 94 of file evolve_optimizer.h.

    +

    Definition at line 110 of file evolve_optimizer.h.

    @@ -270,28 +305,20 @@ Public Attributes

    Индексы отсортированных кандидатов

    -

    Definition at line 95 of file evolve_optimizer.h.

    +

    Definition at line 111 of file evolve_optimizer.h.


    The documentation for this struct was generated from the following file: - - diff --git a/Doc/html/struct_evolve_optimizer__t.js b/Doc/html/struct_evolve_optimizer__t.js index 86e701f..cf9289a 100644 --- a/Doc/html/struct_evolve_optimizer__t.js +++ b/Doc/html/struct_evolve_optimizer__t.js @@ -1,11 +1,12 @@ var struct_evolve_optimizer__t = [ + [ "stability", "struct_evolve_optimizer__t.html#a80eb0b8525b6bb838484f5922b9d8f7c", null ], [ "n_params", "struct_evolve_optimizer__t.html#a1c270fce82e0c97e6c88fd0971c1eed8", null ], [ "n_cand", "struct_evolve_optimizer__t.html#ac35c7ca8cede4ab9c53a2845a91cd1b1", null ], [ "n_best", "struct_evolve_optimizer__t.html#a950cd70cb6bff33b78ad35ee58c729a6", null ], - [ "iq_mutation", "struct_evolve_optimizer__t.html#a5391277564b54e2271856a2466033df5", null ], + [ "mutation_amp", "struct_evolve_optimizer__t.html#af779c7aeba0053e36cee7aade160f1c8", null ], [ "cand_index", "struct_evolve_optimizer__t.html#a0ae0e63ba351335d4445d927991c64ae", null ], - [ "loss", "struct_evolve_optimizer__t.html#ac723b265a3d43b754489f14310314f0d", null ], - [ "candidates", "struct_evolve_optimizer__t.html#a61bd0c8ae322a79936ba1f2ae22e0e0d", null ], + [ "loss", "struct_evolve_optimizer__t.html#a93f628397c2f8d4027f2906752b650df", null ], + [ "candidates", "struct_evolve_optimizer__t.html#aec67667fd1f1533e693e41c79bc28da4", null ], [ "sorted_idx", "struct_evolve_optimizer__t.html#a74b81df1c298c99162310f3f7d91735a", null ] ]; \ No newline at end of file diff --git a/Doc/html/struct_g_p_i_o___l_e_d_type_def-members.html b/Doc/html/struct_g_p_i_o___l_e_d_type_def-members.html index beef91b..cd97a90 100644 --- a/Doc/html/struct_g_p_i_o___l_e_d_type_def-members.html +++ b/Doc/html/struct_g_p_i_o___l_e_d_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    tickprev (defined in GPIO_LEDTypeDef)GPIO_LEDTypeDef
    -
    diff --git a/Doc/html/struct_g_p_i_o___l_e_d_type_def.html b/Doc/html/struct_g_p_i_o___l_e_d_type_def.html index 3bc820a..8e74029 100644 --- a/Doc/html/struct_g_p_i_o___l_e_d_type_def.html +++ b/Doc/html/struct_g_p_i_o___l_e_d_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: GPIO_LEDTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    GPIO_LEDTypeDef Struct Reference
    @@ -106,25 +112,31 @@ $(function(){initNavTree('struct_g_p_i_o___l_e_d_type_def.html','','struct_g_p_i

    #include <general_gpio.h>

    - + + + + + +

    +

    Public Attributes

    GPIO_LEDStateTypeDef state
     Текущий режим работы светодиода
     
    GPIO_TypeDef * LED_Port
     GPIO порт ножки светодиода
     
    uint32_t LED_Pin
     GPIO пин ножки светодиода
     
    uint8_t LED_ActiveLvl
     Активный уровень ножки (при котором светодиод горит)
     
    uint32_t LED_Period
     Период моргания светодиода
     
    uint32_t tickprev
     
    -

    Detailed Description

    +

    Detailed Description

    Структура светодиода

    Definition at line 93 of file general_gpio.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ state

    @@ -232,23 +244,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h
    - - diff --git a/Doc/html/struct_g_p_i_o___switch_type_def-members.html b/Doc/html/struct_g_p_i_o___switch_type_def-members.html index 4957c60..23156f4 100644 --- a/Doc/html/struct_g_p_i_o___switch_type_def-members.html +++ b/Doc/html/struct_g_p_i_o___switch_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    -
    diff --git a/Doc/html/struct_g_p_i_o___switch_type_def.html b/Doc/html/struct_g_p_i_o___switch_type_def.html index 5629694..7e5088c 100644 --- a/Doc/html/struct_g_p_i_o___switch_type_def.html +++ b/Doc/html/struct_g_p_i_o___switch_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: GPIO_SwitchTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    GPIO_SwitchTypeDef Struct Reference
    @@ -106,25 +112,31 @@ $(function(){initNavTree('struct_g_p_i_o___switch_type_def.html','','struct_g_p_

    #include <general_gpio.h>

    - + + + + + +

    +

    Public Attributes

    GPIO_TypeDef * Sw_Port
     GPIO порт ножки кнопки
     
    uint32_t Sw_Pin
     GPIO пин ножки кнопки
     
    uint8_t Sw_ActiveLvl
     Активный уровень ножки (при котором кнопка нажата)
     
    uint32_t Sw_PrevState
     Предыдущее состояние кнопки
     
    uint32_t Sw_FilterDelay
     Фильтр от дребезга (в мс)
     
    uint32_t tickprev
     
    -

    Detailed Description

    +

    Detailed Description

    Структура кнопки

    Definition at line 110 of file general_gpio.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ Sw_Port

    @@ -232,23 +244,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_gpio.h
    - - diff --git a/Doc/html/struct_h_f___stack_frame__t-members.html b/Doc/html/struct_h_f___stack_frame__t-members.html index dcf3ead..7641c7d 100644 --- a/Doc/html/struct_h_f___stack_frame__t-members.html +++ b/Doc/html/struct_h_f___stack_frame__t-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_h_f___stack_frame__t.html b/Doc/html/struct_h_f___stack_frame__t.html index e7069f8..10afeb7 100644 --- a/Doc/html/struct_h_f___stack_frame__t.html +++ b/Doc/html/struct_h_f___stack_frame__t.html @@ -3,7 +3,7 @@ - + MyLibs: HF_StackFrame_t Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    @@ -106,31 +112,39 @@ $(function(){initNavTree('struct_h_f___stack_frame__t.html','','struct_h_f___sta

    #include <trace.h>

    - + + + + + + + +

    +

    Public Attributes

    uint32_t r0
     Регистр R0.
     
    uint32_t r1
     Регистр R1.
     
    uint32_t r2
     Регистр R2.
     
    uint32_t r3
     Регистр R3.
     
    uint32_t r12
     Регистр R12.
     
    uint32_t lr
     Link Register.
     
    uint32_t pc
     Program Counter.
     
    uint32_t psr
     Program Status Register.
     
    -

    Detailed Description

    +

    Detailed Description

    Контекст стек-фрейма процессора при HardFault.

    Сохраняет регистры R0-R3, R12, LR, PC, PSR для последующего анализа.

    Definition at line 463 of file trace.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ r0

    @@ -276,23 +290,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h
    - - diff --git a/Doc/html/struct_r_t_t___flash_header__t-members.html b/Doc/html/struct_r_t_t___flash_header__t-members.html index f48c46e..47d5610 100644 --- a/Doc/html/struct_r_t_t___flash_header__t-members.html +++ b/Doc/html/struct_r_t_t___flash_header__t-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_r_t_t___flash_header__t.html b/Doc/html/struct_r_t_t___flash_header__t.html index 6a18e98..cc17867 100644 --- a/Doc/html/struct_r_t_t___flash_header__t.html +++ b/Doc/html/struct_r_t_t___flash_header__t.html @@ -3,7 +3,7 @@ - + MyLibs: RTT_FlashHeader_t Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    @@ -106,20 +112,23 @@ $(function(){initNavTree('struct_r_t_t___flash_header__t.html','','struct_r_t_t_

    #include <trace.h>

    - + + +

    +

    Public Attributes

    uint32_t tag
     Уникальный идентификатор буфера
     
    uint32_t size
     Размер данных
     
    char data [1024]
     Буфер RTT.
     
    -

    Detailed Description

    +

    Detailed Description

    Структура RTT, которая будет положена в Flash.

    Definition at line 180 of file trace.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ tag

    @@ -175,23 +184,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h
    - - diff --git a/Doc/html/struct_s_p_i___settings_type_def-members.html b/Doc/html/struct_s_p_i___settings_type_def-members.html index efc46dd..dc63a06 100644 --- a/Doc/html/struct_s_p_i___settings_type_def-members.html +++ b/Doc/html/struct_s_p_i___settings_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_s_p_i___settings_type_def.html b/Doc/html/struct_s_p_i___settings_type_def.html index d45765e..4499565 100644 --- a/Doc/html/struct_s_p_i___settings_type_def.html +++ b/Doc/html/struct_s_p_i___settings_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: SPI_SettingsTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    SPI_SettingsTypeDef Struct Reference
    - + + + + + + + + + +

    +

    Public Attributes

    SPI_HandleTypeDef hspi
     
    GPIO_TypeDef * CLK_GPIOx
     
    uint32_t CLK_PIN
     
    uint32_t CLK_GPIO_AlternageFunc
     
    GPIO_TypeDef * MISO_GPIOx
     
    uint32_t MISO_PIN
     
    uint32_t MISO_GPIO_AlternageFunc
     
    GPIO_TypeDef * MOSI_GPIOx
     
    uint32_t MOSI_PIN
     
    uint32_t MOSI_GPIO_AlternageFunc
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 33 of file __general_spi.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ hspi

    @@ -279,23 +295,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h
    - - diff --git a/Doc/html/struct_t_i_m___encoder_type_def-members.html b/Doc/html/struct_t_i_m___encoder_type_def-members.html index 0519215..430b6ed 100644 --- a/Doc/html/struct_t_i_m___encoder_type_def-members.html +++ b/Doc/html/struct_t_i_m___encoder_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_t_i_m___encoder_type_def.html b/Doc/html/struct_t_i_m___encoder_type_def.html index 8404f92..68dc357 100644 --- a/Doc/html/struct_t_i_m___encoder_type_def.html +++ b/Doc/html/struct_t_i_m___encoder_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: TIM_EncoderTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    TIM_EncoderTypeDef Struct Reference
    @@ -105,40 +111,50 @@ $(function(){initNavTree('struct_t_i_m___encoder_type_def.html','','struct_t_i_m More...

    #include <general_tim.h>

    -
    Collaboration diagram for TIM_EncoderTypeDef:
    +
    + + Collaboration diagram for TIM_EncoderTypeDef:
    - + + + + + + + + +

    +

    Public Attributes

    int16_t Encoder_Diff
     Считанная разница
     
    uint16_t Encoder_Shdw
     Последние считанные тики
     
    TIM_HandleTypeDef * htim
     Указатель на HAL handle таймера
     
    TIM_Encoder_InitTypeDef sConfig
     Указатель на структуру настройки энкодера
     
    GPIO_TypeDef * GPIOx
     Порт, куда подключается энкодер
     
    uint32_t GPIO_PIN_TI1
     Пин, куда подключается канал TI1.
     
    uint32_t GPIO_PIN_TI2
     Пин, куда подключается канал TI2.
     
    uint32_t GPIO_PIN_SW
     Пин, куда кнопка энкодера (если есть)
     
    GPIO_SwitchTypeDef Sw
     Структура кнопки
     
    -

    Detailed Description

    +

    Detailed Description

    Структура инициализации енкодера


    Содержит все базовые структуры, которые нужны для инициализации таймера. Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
    @@ -146,7 +162,7 @@ Public Attributes

    Также высокоуровневые настройки частоты работы таймера. Если какая-либо высокоуровневая настройка не задана, то по возможности берется низкоуровневая настройка из структур

    Definition at line 140 of file general_tim.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ Encoder_Diff

    @@ -310,23 +326,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h
    - - diff --git a/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map b/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map index 7e20fbf..23c67d8 100644 --- a/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map +++ b/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.map @@ -1,5 +1,5 @@ - + - + diff --git a/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 b/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 index b7fa754..3bf5ef6 100644 --- a/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 +++ b/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.md5 @@ -1 +1 @@ -2ea4c5426996fe33f0078eba5fb4ab62 \ No newline at end of file +941563dd38300d4589813f0d77aba757 \ No newline at end of file diff --git a/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.png b/Doc/html/struct_t_i_m___encoder_type_def__coll__graph.png index 9ea81a6f632fc408621bb84f9ff0b07ef7ce0e93..c4f904c1688d4a4f298f1deac6e56bfa2a85c2c4 100644 GIT binary patch delta 1760 zcmZ8hX;c!37B-t4am%fz&m=c=aNNtK+%-u_)b||M6x?{37N#kUsl?<`$e8AWhNd=- z!qZ7D7cj^bjTFmq0Rp$QjBuxC0{YU?bKZOBy!n3I@7!~LeD|F1-mhC_OZkD8!cX#Y zGBPr8zW|Jj4NhPip5tZC{faap+TU&pggiLnoA#={Jh0Z*W1Pa(tbW#DsVLgH zOBGS4RStDd-qer)oJ(x!CJ5q}^Q-;Q1uEa;5u4GQq!fo-`BiK9ske72)FwKOMynOB z?^_w1`Fc7yfb9%tyG*vL9yyS9=cZ%~hR6PWk{3-4fM7ga6SZk&%wp=>Gm{ zgel=UoT_(bBfZ*>2Z>8HHL_$1R$v&<4}YmenY%9IS*9n+RL~TU}Ge1AMmQmjt8Lr>}RBn>vs{a2>(uYNrsxClfert-{fugE@rdZ@I!pTrh?{ zM5`^V)OUg5N+KGPTzLx1;xtB3ER4*`6KWE!1()Q8LmiZ>KW5rihPaYgj&C%aY=Bf3 z9xSW+X3%R^UcPW-gzK#xOlbbi+W|uVY==h<#YT9~-L^+HCkAcVt1p)fg_e|AOqadt zu~KU4k{Ky|awa?qVQ&95JT&u#Kl7Fc-*%v*XzX|%N^H|@L%~k7%HUq(u4WlB6&6Ov zdz|D_n!BuvC3~HgJw3J6mz#YC?0Y@JQCEHGHo%;-AOqZa_3T4p6wQ0g6oQnp-`&)N zMBTq&l%K9c7AK2WkstTM91BVE+3zT6O3m#z{=HK%VPgwiFS3eR8vJw&vSp^x-IawA zISA7$6|}G>#^8{6YV9L6m4@*LxyIljJvBAc5ItY!1k%UTdtp(0-FkdsZHVz(D@IJa z;;wubls1STQx$Qx7dapWYhx!*bw^1-kh@oW{?yEN(>W7Iw@96B(EG&iLBHgjXJXUu z;Z#T=dJ+LA6>}$9=Q#9}`!h$DS41QGy?)Q7yI9Z7b1@!_UmXPYKhEw~;kLnU` zb!W`GiDrSGd@d(U8=%O4i`j57;ghFd;%oTr8|!p5b1KbeAp5Ms8`H&mG!#BT{n&Ek ztc@Lz^j@|neRt(+X=diWVIaN0$#jn9Mn!KdQ4nI>me(_w;yrm+flxB`3S$d`ft-f7k#a^tSWG?qMriVRxE{9D4mC zb28{*;h)|{x8x}{7omy**O_(e^Iy%MJa|qS8WMwn?{dxjR_H2PCNiiphs6e}z=8@~ zuWNMgofjYtzwBaWz_RSFtkstTBl+V)EM}59a*f*4(*paoTKLTOP#>lW4D?z!s3ZK= z`Hj?!wA}9=*#M8`#e_-v z#86uR`hIJy7j8vcNsj-fkV{WG!)~0eDHyU(n!Q1^=S>j)4!RxDEWyHHz}U)l*chC; z1oVN7-9tU^7;aeoaKkxSq6;1@wdR4jFL^IsQX;uKKNl!LVuzQjNHvP&{O@8Spfz#Q zrrs8;y*|Lq(B-1^pS>;iupxHJ3Bg}mn$GU9%7|RGqloL-Y$0lw3Fa>(Jt%&MJZlQ#d&mIDjBMion+=$Rjt s)cJWfOxYPa!c)zEzcGF5*rAP28Q9K|a#>?0>(XHhh4_25ct&Uc0T&}#O8@`> delta 1834 zcmY*acU04d7N$lep@3n@1|tY4^Fa!-@}3bHvI-Gp1*AL(7*@c5EF&6*MZnQQAR!1v z5KP#K?5IGgC4!JJ`U?<-8b$*==96G}TI)OQ{qvrC&b{CLzVF^mnJ(G8%2GMt!x9n_ z1?#!a_h3qdbr**-7p_r+Q)sM)kBa1)pco$MZ02tKy|L7fK^NtDij`a8nJGFcunV~i zMdDbO;x1$ta{u&i_|q>S)TnA00OR%PYW29H5BwYH&VN)wbB)A~pOS+s>kS zU;BqwoxfWTvBj7{_KMz#10Q?e!1WKSDw_tS-76+|Mk<0{=^uYuAJnyry*5o_QEQ86MTBYu}g!0YWCO`%=87#91iv+id7f8zPhoBR-Uc9mF@r z4*&akr>HAd&LuF$zo0mqis2*zKvRoc%lvvWPDC^aNM|xy7YrlxV@n5-5x~o;WSptP z2q9~NS^DmMBo92HVOAmxTeNcJn_%(g8vRPT$8S5eC-T;Qcqca6D`}wV*ycWDE)05> z$X?G!WEDy7yWKDBqsO9hYhHOVCbqSsbz*qU@hR@UKEppv_GQSm6vHWc?j34_bAX1A zE5PjGR7DT{bQh{O<FeV|lnUiRq!=_R73Am__t_$gAxOCloU5J+kM$&H+&llQt%NMJAe{zmnOA zrdA8#BP-1R} zE+kK*`8%wotrWE_?jU!Y%^jom2LO0(rXV?qfsLTNeKbl2zTs-tK@xnervr}7S{U}H zeho0Vsz?IqRs)6ieiroB`-%*V?dK6Fz5xO|29*^Zemh6vNWWk?T5m7U`6NH*H3mvsGyH+f4?ca=YJ(U4XZ zr^lXo{UJS8N;E5R|1O)gc6p`cqB}kd8ve{kKp?fUuv$32j!m@>sx;)Z$Kt>keNiZx zutSWnY11Wv$%ot#MX5QeyN)qZ~%Xv`atdSXq1ph(jtHfJe>&LPq- zyzRZDf!Z1f^aY%R(1jI{c6+(Xh0))s?(MW%c>bdB;x6TIR;X*~qfwWk9mIy89(C~T z2e)-9l&^cAb+e7S_H1X*6X;S%M+G#fBS}5$bAVTg%AWJB+m{eQge`qx%92#iKOUb2 zpV35um%ez%Omb*Ln;<`IWn1vklb^#ZtIn7T2a71mq%$zsR7G2oEf{`8{?GG%g3?pA0WvG#-7NQS?LtTz-PAt+QH&o|Ltefe>e z;mWP{sk+`$;ha`KBx_#2#osuesyTa-*dPH8AlQJ*@6WJR0!p_qtX?+eoj{OVPa8|y{V?;irD%cP)e_u6 zI?tP!IL6uKtymR(2w&vk=_>gd zHl-d*ApVI_Xo+Qajs^0yQ^%C$%I}x2kA>mVOA52GjdUKo6hn?G2AokW0^M;>G8bp7 z8`GLAvR-cTlJo|aLjwGmCtZ27i!;5m>kj2wFV-BxrcRRu6HGE=ACAd_GjxUI_Moqw zYO)(@;Ps7xTft+N$B2i95w2|uEL!yA-YJ~ixT>ELZc`9x5y_um+Fr3Irw70BYm~zv z$?6YI4==Z^C5#v~M-w=Y;{M6RE6A*xqSC{nL0;@}ktw=;6JZe??C*by7TSQZLHUHe zX&7DJa&{Q3qtPaFOrG?{Nzc>QdvHDo^|6`tjo(f^NduF`2XtM4Z9So~bpIbO;WM-7 zxjdH`$`8I - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_t_i_m___settings_type_def.html b/Doc/html/struct_t_i_m___settings_type_def.html index 954a378..32bf216 100644 --- a/Doc/html/struct_t_i_m___settings_type_def.html +++ b/Doc/html/struct_t_i_m___settings_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: TIM_SettingsTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    TIM_SettingsTypeDef Struct Reference
    @@ -106,30 +112,42 @@ $(function(){initNavTree('struct_t_i_m___settings_type_def.html','','struct_t_i_

    #include <general_tim.h>

    - + + + + + - + + - + + + + +

    +

    Public Attributes

    TIM_HandleTypeDef htim
     HAL handle таймера
     
    TIM_ClockConfigTypeDef sClockSourceConfig
     Настройки тактирования таймера
     
    TIM_SlaveConfigTypeDef sSlaveConfig
     Настройки слейв режима таймера
     
    TIM_MasterConfigTypeDef sMasterConfig
     Настройки мастер режима таймера
     
    TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig
     Настройки дедтаймов таймера
     
    TIM_ITModeTypeDef sTimMode
     Настройки прерывания таймера
     Настройки прерывания таймера
    +
     
    TIM_MHzTickBaseTypeDef sTickBaseUS
     Длительность одного тика
     Длительность одного тика
    +
     
    uint8_t sTickBasePrescaler
     Дополнительный делитель, для удобного деления sTickBaseUS.
     
    float sTimAHBFreqMHz
     Частота шины тактирования таймера
     
    float sTimFreqHz
     Желаемая частота таймера
     
    -

    Detailed Description

    +

    Detailed Description

    Структура инициализации таймера


    Содержит все базовые структуры, которые нужны для инициализации таймера. Если структуры настроек не заданы, то они заполнятся сами дефолтными параметрами
    @@ -137,7 +155,7 @@ Public Attributes

    Также высокоуровневые настройки частоты работы таймера. Если какая-либо высокоуровневая настройка не задана, то по возможности берется низкоуровневая настройка из структур

    Definition at line 112 of file general_tim.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ htim

    @@ -240,7 +258,8 @@ Public Attributes
    -

    Настройки прерывания таймера

    +

    Настройки прерывания таймера
    +

    Definition at line 120 of file general_tim.h.

    @@ -258,7 +277,8 @@ Public Attributes
    -

    Длительность одного тика

    +

    Длительность одного тика
    +

    Definition at line 121 of file general_tim.h.

    @@ -319,23 +339,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/general_tim.h
    - - diff --git a/Doc/html/struct_u_a_r_t___settings_type_def-members.html b/Doc/html/struct_u_a_r_t___settings_type_def-members.html index dc903a7..95a4d63 100644 --- a/Doc/html/struct_u_a_r_t___settings_type_def-members.html +++ b/Doc/html/struct_u_a_r_t___settings_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/struct_u_a_r_t___settings_type_def.html b/Doc/html/struct_u_a_r_t___settings_type_def.html index 6f127d1..43f2851 100644 --- a/Doc/html/struct_u_a_r_t___settings_type_def.html +++ b/Doc/html/struct_u_a_r_t___settings_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: UART_SettingsTypeDef Struct Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    UART_SettingsTypeDef Struct Reference
    - + + + + + +

    +

    Public Attributes

    UART_HandleTypeDef huart
     
    GPIO_TypeDef * GPIOx
     
    uint16_t GPIO_PIN_RX
     
    uint16_t GPIO_PIN_TX
     
    DMA_Stream_TypeDef * DMAChannel
     
    uint32_t DMA_CHANNEL_X
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 45 of file __general_uart.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ huart

    @@ -211,23 +223,15 @@ Public Attributes

    The documentation for this struct was generated from the following file:
    - - diff --git a/Doc/html/sync_off.png b/Doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/Doc/html/sync_on.png b/Doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/Doc/html/tab_a.png b/Doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/Doc/html/tab_ad.png b/Doc/html/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/Doc/html/tab_s.png b/Doc/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/Doc/html/tab_sd.png b/Doc/html/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/Doc/html/tabs.css b/Doc/html/tabs.css index 84f33ae..fe4854a 100644 --- a/Doc/html/tabs.css +++ b/Doc/html/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-color:var(--nav-menu-background-color)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;line-height:36px;text-decoration:none;color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-color:var(--nav-menu-background-color);line-height:36px}.sm-dox a span.sub-arrow{top:15px;right:10px;box-sizing:content-box;padding:0;margin:0;display:inline-block;width:5px;height:5px;background-color:var(--nav-menu-background-color);border-right:2px solid var(--nav-arrow-color);border-bottom:2px solid var(--nav-arrow-color);transform:rotate(45deg);-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 6px}.sm-dox a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px !important}.sm-dox a:hover span.sub-arrow{background-color:var(--nav-menu-active-bg);border-right:2px solid var(--nav-arrow-selected-color);border-bottom:2px solid var(--nav-arrow-selected-color)}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0;padding:3px}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{transform:rotate(-45deg)}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:6px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:6px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/Doc/html/topics.html b/Doc/html/topics.html index 1361458..3bcb61d 100644 --- a/Doc/html/topics.html +++ b/Doc/html/topics.html @@ -3,7 +3,7 @@ - + MyLibs: Topics @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    Here is a list of all topics with brief descriptions:
    [detail level 12345]
    - - + + - + - + - - - + + + - + - +
     My LibsВсе используемые MyLibs библиотеки
     ConfigsКонфигурации для библиотек MyLibs
     My LibsВсе используемые MyLibs библиотеки
     ConfigsКонфигурации для библиотек MyLibs
     Trace configsКонфигурация трекеров и трассировки
     Evolve configsКонфигурация однослойного персептрона и алгоритма обучения
     Libraries configsПодключение различных модулей библиотеки
     General ToolsОбщие макросы и typedef'ы, используемые по всему проекту
     General ToolsОбщие макросы и typedef'ы, используемые по всему проекту
     Bit access definesМакросы и typedef'ы для работы с битами в unsigned типах
     Evolve optimizerБиблиотека для эволюционного подбора параметров
     Error Handler definesДефайны для обработки ошибок
     Delays definesМакросы и определения для работы с задержками в миллисекундах
     Utils definesОбщие вспомогательные макросы
     Trace definesДефайны для работы с трассировкой
     Trace definesДефайны для работы с трассировкой
     Serial trace definesДефайны для работы с serial трассировкой (SWO, RTT)
     GPIO trace definesДефайны для работы с GPIO трассировкой
     Flash RTT BufferМакросы и функции для сохранения/чтения RTT буфера в Flash
     Hardfault trace definesМодуль трассировки HardFault с возможностью сохранения RTT буфера во Flash
     Trackers definesДефайны для работы с трекерами
     PeripheralМодули для управления периферией
     GPIO ToolsФункции и макросы для удобной работы с GPIO
     General toolsОбщие функции/макросы для работы с GPIO
     PeripheralМодули для управления периферией
     GPIO ToolsФункции и макросы для удобной работы с GPIO
     General toolsОбщие функции/макросы для работы с GPIO
     Init definesНастройка состояний кнопок и количества тиков в периоде ШИМ
     Switch toolsФункции для работы с GPIO, как с кнопкой
     LED toolsФункции для работы с GPIO, для управления светодиодом
     TIM ToolsФункции и макросы для удобной работы с TIM
     TIM ToolsФункции и макросы для удобной работы с TIM
     PWM/OC Channels toolsФункции для инициализации базовых функций каналов таймера
     Encoder toolsФункции для считывания энкодера
     Delay toolsФункции для формирования задержек с помощью таймеров
     General toolsФункции для базовой инициализации таймеров
     General toolsФункции для базовой инициализации таймеров
     Init definesНастройка таймеров
    -
    diff --git a/Doc/html/trace_8h.html b/Doc/html/trace_8h.html index d8b254f..cb80436 100644 --- a/Doc/html/trace_8h.html +++ b/Doc/html/trace_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    trace.h File Reference
    @@ -106,13 +113,14 @@ $(function(){initNavTree('trace_8h.html','',''); });
    #include "mylibs_defs.h"
    #include <string.h>
    #include "SEGGER_RTT.h"
    -
    Include dependency graph for trace.h:
    +
    + + Include dependency graph for trace.h:
    -
    This graph shows which files directly or indirectly include this file:
    +
    + + This graph shows which files directly or indirectly include this file:

    Go to the source code of this file.

    - - + - + + +

    +

    Classes

    struct  RTT_FlashHeader_t
    struct  RTT_FlashHeader_t
     Структура RTT, которая будет положена в Flash. More...
    struct  HF_StackFrame_t
     
    struct  HF_StackFrame_t
     Контекст стек-фрейма процессора при HardFault. More...
     
    - - + + - + + - + + +

    +

    Macros

    #define my_printf(...)
    #define my_printf(...)   SEGGER_RTT_printf(0, __VA_ARGS__)
     Универсальный макрос для вывода трассировки
     
    #define log_printf(TAG, fmt, ...)
     Макрос логирования с поддержкой уровней LOG_LEVEL.
    #define TRACE_GPIO_SET(_gpio_, _pin_)
     
    #define TRACE_GPIO_SET(_gpio_, _pin_)   (_gpio_)->BSRR = (((_pin_)))
     Установить указанную ножку GPIO.
    #define TRACE_GPIO_RESET(_gpio_, _pin_)
     
    #define TRACE_GPIO_RESET(_gpio_, _pin_)   (_gpio_)->BSRR = ((_pin_)<<16)
     Сбросить указанную ножку GPIO.
     
    - + + + + + +

    +

    Functions

    __STATIC_FORCEINLINE void RTT_FlashPrepare (void)
     Подготовка Flash к записи
     
    __STATIC_FORCEINLINE int RTT_SaveToFlash (uint32_t tag, uint32_t tail_size)
     Сохраняет последние символы RTT-буфера в Flash по тегу
     
    __STATIC_FORCEINLINE int RTT_ReadFromFlash (uint32_t tag, char *Buffer, uint32_t tail_size, uint32_t *read_size)
     Читает последние символы RTT-буфера из Flash по тегу
     
    __STATIC_FORCEINLINE int RTT_EraseFlash (void)
     Стирание сектора Flash с RTT-буфером
     
    __STATIC_FORCEINLINE int HF_CheckRecovered (int erase)
     Проверка и вывод последнего HardFault-трейса из Flash.
     
    __STATIC_FORCEINLINE void HF_HandleFault (void)
     Обработчик HardFault.
     
    -

    Detailed Description

    +

    Detailed Description

    Заголочный файл для работы с трассировкой.

    Definition in file trace.h.

    - -
    diff --git a/Doc/html/trace_8h__dep__incl.map b/Doc/html/trace_8h__dep__incl.map index 77208d6..a3f2a35 100644 --- a/Doc/html/trace_8h__dep__incl.map +++ b/Doc/html/trace_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/trace_8h__dep__incl.md5 b/Doc/html/trace_8h__dep__incl.md5 index 92c640d..7cae4e3 100644 --- a/Doc/html/trace_8h__dep__incl.md5 +++ b/Doc/html/trace_8h__dep__incl.md5 @@ -1 +1 @@ -6db45c82fbfd5a7b1d1cecc0d0fad259 \ No newline at end of file +99f98c0a88d15e48ceee0c0796ad19d5 \ No newline at end of file diff --git a/Doc/html/trace_8h__dep__incl.png b/Doc/html/trace_8h__dep__incl.png index 085fac82189f8f956d1aeb6273c91d73967a93d7..c8c439c61f27b788c3adddd94114b0beb05185f8 100644 GIT binary patch literal 3376 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 InETxN2MPpwLI3~& literal 2854 zcmb`Jdpr|*AIEj-K?xZ}E|oP*lyFKjmuQ)}_MlXTkVdYHAq(AW<+e4KC>$}VHn|LQ zna;tsrmT=To6&Q2kr<63_s4n8>v^8nIsZMc*YohM|9;Bas~#yRY~v$fPJSs*q=Jqb z1NhE2GHdSLW1B)wKFHkC{F9S%M6_;|lZKY71^@uM3v$&;NAkXDi!Aodbsp+d^xaP| z_PcR&OmRn^*{n6p3I>+V_V6p?V;e@AtfAJZbcYN_Lip&aC3dQ}q!pEsY5v1T3JN)g ztV`piJgS9GSP4aA`-c{^{wN(SWCU0B_x5UAG3;V8ueKx49`~m_U|CdYdVxOnihBy` z;hW{6&z~=#mq_vYZ>moKHo1W`%3%M+V8F0pBcF^JSzBBC+A}9B6B3UeEP;=$NO&ArnUGJM>gWL8lQ)PtL9{h=lJqdl!p^J!; z#er)^(KEE~7L;E^3=|ithzr#|y((ru(@IvgGXX4Q-HS9?8ZL{F@+?HzVeYAjeRwy7 zR%%+UUs5xP8OvcN>KWPcP6HM}iDZB&e3*P7Da=r^=#^Os>jS--J~}879|I#tF-2b- z&~n{m6|e2;qkKMgL}%9a*39*L2KxG}W7+;S!5wQKSZ63W1tWs;Dd2xlIf-Zx#F8^E zKM<^~EVN_yWeJAp`h*e zq!=+U)CwHvylzIFd?9ho2X{DdWPT}!tQi;%_kaNUyj6)MwDrb{BsI7z(PoXWJ`nfQ zm)}%%rZFZebdz^#E+8kd@us1N(33~3OTZQN2~YB)K7F0-iXJx?0RRhq7aaMhV8aRV z6#o(dEb_PJ7I#w{kiE2u`_P5mSE`@5lW}?~y6vTTNE_S1bb+tAW)C$dl!*~Lm_7Zf zr($TM8QN2tYk7ROh)10*kdW<}Xln3Rb0Rdh6dhQ-)HimoYnSh~OcPsi>H+ltW(shh zCI-@UM(X*Ckgg?RQCQ3@K!C@tZo({=tZFT|s_cY^S2d!oZ_w^m^5O>kU zf&(YFD6wgbw(k=%>#?IVaT<%FUnZXknWA5!IECxPY?Y*qD6`*P=q5mvdA&_Bc1A#u zUD$X{p_2$c_}Jy5uqfvMcuaSu--e+AzqN8AbCwx%%psrCG5=~2Rr}_1*W>4gd(~z( z*W*LNYeN#wl$Zf_wB^E7cW1R7%dWEo-g6P1a-mrO;a2R`oGM)O_T=#*X9)Lx=}O2- zm#lTB&SSZYg$gGYbhBPsu{(?(=AcRl{uwe%f}h=~C&vLtqNix77+_YqocOtJnScf}~%2&tCfcaDh!m+oJa3D0J_Dni8=1 zy<}{8dAXz53knU6(7F4NQ8*pkl30zr__}o+i?;||DQ9)_@OCq?f)=CB!^2t{$pC3| z6MxcalYOmt3m0}BfY<`Y{|V>f(Dx2Yx~%y*S;FR)scVlbBMtkV-{w0k}^tMzZ6D7Zm2c4V4e;NVev;slU~`gPonJ2x0BC_I+d@scz5 zV8X@K8{Gsx2beRKI73J$j!ckdz}JgVF(ZBU;{qiI9Qj_?xn{g*3yooT`#UR+d9*L)>M9e0qVwNbk1 zJ9KHiv>ej#lzKK)vPjYNEm`tVSxl$*L<-fiOfbO|X_LN0A~oXXR|c)06` zD!qWV)t+*92r=PbKOR#IbGOhXMccr!jTvJ@XU31Z)o=;1kDkM6HNMSiFP`;)*o#^v zn>BuF@cR&3~quiFvDOOfVyGPwvn z7?BYb{EaN19A7CgoI(8cY89}R1YJTex2a|)^^}{t)Cu!VnDk=T+8Xj_7WG?@lWl&>RHMMWgyRoeY&EGb28Ik6u~Zz$t!!YEM|lJ8 z-*WlKb~2H5N17C1rB)VTLWt03Hk}k*zH|1vB#pTD_bu~!&dT19He8CEc{Jm9A92zP JMsdDy^Pk))jgbHV diff --git a/Doc/html/trace_8h__incl.map b/Doc/html/trace_8h__incl.map index ccf5247..01eafc0 100644 --- a/Doc/html/trace_8h__incl.map +++ b/Doc/html/trace_8h__incl.map @@ -1,5 +1,5 @@ - - + + diff --git a/Doc/html/trace_8h__incl.md5 b/Doc/html/trace_8h__incl.md5 index ebc32ea..7a1eeb2 100644 --- a/Doc/html/trace_8h__incl.md5 +++ b/Doc/html/trace_8h__incl.md5 @@ -1 +1 @@ -4051482c4be4cefdf69e8f83da6d912d \ No newline at end of file +3a6d24b597cc9be1714ca6f437269dfb \ No newline at end of file diff --git a/Doc/html/trace_8h__incl.png b/Doc/html/trace_8h__incl.png index 8ff10f6762339faa0f2c8a7d0ab6c90119b53bca..bee5a08ace904a95e1ee0011a9c9c912e9da6635 100644 GIT binary patch literal 7065 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 XX}i7G-QRr=`K1I|Iap%MeeV4S%fVVq diff --git a/Doc/html/trace_8h_source.html b/Doc/html/trace_8h_source.html index 668e926..d102564 100644 --- a/Doc/html/trace_8h_source.html +++ b/Doc/html/trace_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trace.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
    - + - +
    -
    180typedef struct {
    181 uint32_t tag; ///< Уникальный идентификатор буфера
    182 uint32_t size; ///< Размер данных
    -
    183 char data[RTT_FLASH_BUFFER_SIZE]; ///< Буфер RTT
    +
    183 char data[RTT_FLASH_BUFFER_SIZE]; ///< Буфер RTT
    185
    @@ -655,14 +663,14 @@ $(function(){initNavTree('trace_8h_source.html','',''); });
    536 );
    537
    538 my_printf("\n===== HardFault occurred! =====\n");
    -
    539 my_printf("R0 = 0x%08X\n", stack_frame->r0);
    -
    540 my_printf("R1 = 0x%08X\n", stack_frame->r1);
    -
    541 my_printf("R2 = 0x%08X\n", stack_frame->r2);
    -
    542 my_printf("R3 = 0x%08X\n", stack_frame->r3);
    -
    543 my_printf("R12 = 0x%08X\n", stack_frame->r12);
    -
    544 my_printf("LR = 0x%08X\n", stack_frame->lr);
    -
    545 my_printf("PC = 0x%08X\n", stack_frame->pc);
    -
    546 my_printf("PSR = 0x%08X\n", stack_frame->psr);
    +
    539 my_printf("R0 = 0x%08X\n", stack_frame->r0);
    +
    540 my_printf("R1 = 0x%08X\n", stack_frame->r1);
    +
    541 my_printf("R2 = 0x%08X\n", stack_frame->r2);
    +
    542 my_printf("R3 = 0x%08X\n", stack_frame->r3);
    +
    543 my_printf("R12 = 0x%08X\n", stack_frame->r12);
    +
    544 my_printf("LR = 0x%08X\n", stack_frame->lr);
    +
    545 my_printf("PC = 0x%08X\n", stack_frame->pc);
    +
    546 my_printf("PSR = 0x%08X\n", stack_frame->psr);
    547
    548 my_printf("CFSR = 0x%08X\n", SCB->CFSR);
    549 my_printf("HFSR = 0x%08X\n", SCB->HFSR);
    @@ -726,12 +734,11 @@ $(function(){initNavTree('trace_8h_source.html','',''); });
    uint32_t size
    Размер данных
    Definition trace.h:182
    - diff --git a/Doc/html/trackers_8h.html b/Doc/html/trackers_8h.html index ab445ec..84a684b 100644 --- a/Doc/html/trackers_8h.html +++ b/Doc/html/trackers_8h.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trackers.h File Reference +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trackers.h File Reference + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    trackers.h File Reference
    @@ -104,97 +109,111 @@ $(function(){initNavTree('trackers_8h.html','',''); });

    Заголочный файл для работы с трекерами Trackers defines. More...

    #include "mylibs_defs.h"
    -
    Include dependency graph for trackers.h:
    +
    + + Include dependency graph for trackers.h:
    -
    This graph shows which files directly or indirectly include this file:
    +
    + + This graph shows which files directly or indirectly include this file:

    Go to the source code of this file.

    - - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + +

    +

    Macros

    #define TrackerTypeDef(num_user_vars)
     Структура для счетчиков отладки
    #define num_of_usercnts(_user_)
     
    #define num_of_usercnts(_user_)   (sizeof(_user_) / sizeof(uint32_t))
     Получить количетство пользовательских переменных
    #define assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define assert_usertracker(_cntstruct_, _uservarnumb_)   ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
     Проверка существует ли указанная пользовательская переменная
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define if_assert_usertracker(_cntstruct_, _uservarnumb_)   if(assert_usertracker(_cntstruct_, _uservarnumb_))
     Условие для проверки существует ли указанная пользовательская переменная
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
     
    #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)   (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
     Тернарный оператор для проверки существует ли указанная пользовательская переменная
    #define TrackerGet_Ok(_cntstruct_)
     
    #define TrackerGet_Ok(_cntstruct_)   (_cntstruct_).cnt_ok
     Считать счетчик успешных событий
    #define TrackerGet_Err(_cntstruct_)
     
    #define TrackerGet_Err(_cntstruct_)   (_cntstruct_).cnt_err
     Считать счетчик ошибок
    #define TrackerGet_Warn(_cntstruct_)
     
    #define TrackerGet_Warn(_cntstruct_)   (_cntstruct_).cnt_warn
     Считать счетчик предупреждений
    #define TrackerGet_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerGet_User(_cntstruct_, _uservarnumb_)   (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
     Считать пользовательскую переменную
    #define TrackerCnt_Ok(_cntstruct_)
     
    #define TrackerCnt_Ok(_cntstruct_)   (_cntstruct_).cnt_ok++
     Инкрементирование счетчика успешных событий
    #define TrackerCnt_Err(_cntstruct_)
     
    #define TrackerCnt_Err(_cntstruct_)   (_cntstruct_).cnt_err++
     Инкрементирование счетчика ошибок
    #define TrackerCnt_Warn(_cntstruct_)
     
    #define TrackerCnt_Warn(_cntstruct_)   (_cntstruct_).cnt_warn++
     Инкрементирование счетчика предупреждений
    #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerCnt_User(_cntstruct_, _uservarnumb_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
     Инкрементирование пользовательской переменной
    #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
     
    #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
     Запись числа в пользовательскую переменную
    #define TrackerClear_All(_cntstruct_)
     
    #define TrackerClear_All(_cntstruct_)   memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
     Очистка всей структуры
    #define TrackerClear_Ok(_cntstruct_)
     
    #define TrackerClear_Ok(_cntstruct_)   (_cntstruct_).cnt_ok = 0
     Очистка счетчика успешных событий
    #define TrackerClear_Err(_cntstruct_)
     
    #define TrackerClear_Err(_cntstruct_)   (_cntstruct_).cnt_err = 0
     Очистка счетчика ошибок
    #define TrackerClear_Warn(_cntstruct_)
     
    #define TrackerClear_Warn(_cntstruct_)   (_cntstruct_).cnt_warn = 0
     Очистка счетчика предупреждений
    #define TrackerClear_User(_cntstruct_, _uservarnumb_)
     
    #define TrackerClear_User(_cntstruct_, _uservarnumb_)   if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
     Очистка пользовательской переменной
    #define TrackerClear_UserAll(_cntstruct_)
     
    #define TrackerClear_UserAll(_cntstruct_)   memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
     Очистка всех пользовательских переменных
     
    -

    Detailed Description

    +

    Detailed Description

    Заголочный файл для работы с трекерами Trackers defines.

    Definition in file trackers.h.

    - -
    diff --git a/Doc/html/trackers_8h__dep__incl.map b/Doc/html/trackers_8h__dep__incl.map index 1b0fa3d..2d500d0 100644 --- a/Doc/html/trackers_8h__dep__incl.map +++ b/Doc/html/trackers_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/Doc/html/trackers_8h__dep__incl.md5 b/Doc/html/trackers_8h__dep__incl.md5 index 90e66c4..f1a498d 100644 --- a/Doc/html/trackers_8h__dep__incl.md5 +++ b/Doc/html/trackers_8h__dep__incl.md5 @@ -1 +1 @@ -0e606a2ac14f204c2f3eb519136b3d25 \ No newline at end of file +33dbfd4ef039421a18fe436f2a444bd1 \ No newline at end of file diff --git a/Doc/html/trackers_8h__dep__incl.png b/Doc/html/trackers_8h__dep__incl.png index 3db1a1083334754e860f6d6a9b03823cdf9f540f..5a4f16294853f93aecc23dcaa50a0c1f9289671f 100644 GIT binary patch literal 3527 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 literal 2894 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 diff --git a/Doc/html/trackers_8h__incl.map b/Doc/html/trackers_8h__incl.map index 3e6b58f..3efb504 100644 --- a/Doc/html/trackers_8h__incl.map +++ b/Doc/html/trackers_8h__incl.map @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/Doc/html/trackers_8h__incl.md5 b/Doc/html/trackers_8h__incl.md5 index b38f593..72c1e03 100644 --- a/Doc/html/trackers_8h__incl.md5 +++ b/Doc/html/trackers_8h__incl.md5 @@ -1 +1 @@ -efe05b63911c6edeb90de988b14c85fc \ No newline at end of file +727bb8e299b6891ca417cde17bb1a2f9 \ No newline at end of file diff --git a/Doc/html/trackers_8h__incl.png b/Doc/html/trackers_8h__incl.png index c95cf1a2124236e007a3bb206e6f57ab4c139d26..a6d14239828ee7a8b428623b9bb07b6ed831685f 100644 GIT binary patch literal 4286 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 T4fF2P{Sk0+a(BeqU&{C=)LNp* literal 4009 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 Qyzt}E1_A}+LAM_K6I1rW#{d8T diff --git a/Doc/html/trackers_8h_source.html b/Doc/html/trackers_8h_source.html index f618be6..f8587f1 100644 --- a/Doc/html/trackers_8h_source.html +++ b/Doc/html/trackers_8h_source.html @@ -3,14 +3,15 @@ - + -MyLibs: E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/trackers.h Source File +MyLibs: F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/trackers.h Source File + @@ -43,22 +44,28 @@ MathJax.Hub.Config({
    - + - +
    -
    Заголочный файл для дефайнов библиотеки MyLibsGeneral.
    - diff --git a/Doc/html/unionuint16___bit_type_def-members.html b/Doc/html/unionuint16___bit_type_def-members.html index 50f13d1..3bae288 100644 --- a/Doc/html/unionuint16___bit_type_def-members.html +++ b/Doc/html/unionuint16___bit_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/unionuint16___bit_type_def.html b/Doc/html/unionuint16___bit_type_def.html index a6cc4cb..e290dc4 100644 --- a/Doc/html/unionuint16___bit_type_def.html +++ b/Doc/html/unionuint16___bit_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: uint16_BitTypeDef Union Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    uint16_BitTypeDef Union Reference
    - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +

    Public Attributes

    uint16_t all
    +
     
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
    bit
     
       unsigned   bit0:1 
     
       unsigned   bit1:1 
     
       unsigned   bit2:1 
     
       unsigned   bit3:1 
     
       unsigned   bit4:1 
     
       unsigned   bit5:1 
     
       unsigned   bit6:1 
     
       unsigned   bit7:1 
     
       unsigned   bit8:1 
     
       unsigned   bit9:1 
     
       unsigned   bit10:1 
     
       unsigned   bit11:1 
     
       unsigned   bit12:1 
     
       unsigned   bit13:1 
     
       unsigned   bit14:1 
     
       unsigned   bit15:1 
     
    bit 
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 55 of file bit_access.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ all

    @@ -401,23 +426,15 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    - - diff --git a/Doc/html/unionuint32___bit_type_def-members.html b/Doc/html/unionuint32___bit_type_def-members.html index e728915..1ebc9db 100644 --- a/Doc/html/unionuint32___bit_type_def-members.html +++ b/Doc/html/unionuint32___bit_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/unionuint32___bit_type_def.html b/Doc/html/unionuint32___bit_type_def.html index 05761c6..fbb4745 100644 --- a/Doc/html/unionuint32___bit_type_def.html +++ b/Doc/html/unionuint32___bit_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: uint32_BitTypeDef Union Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    uint32_BitTypeDef Union Reference
    - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +

    Public Attributes

    uint32_t all
    +
     
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
    bit
     
       unsigned   bit0:1 
     
       unsigned   bit1:1 
     
       unsigned   bit2:1 
     
       unsigned   bit3:1 
     
       unsigned   bit4:1 
     
       unsigned   bit5:1 
     
       unsigned   bit6:1 
     
       unsigned   bit7:1 
     
       unsigned   bit8:1 
     
       unsigned   bit9:1 
     
       unsigned   bit10:1 
     
       unsigned   bit11:1 
     
       unsigned   bit12:1 
     
       unsigned   bit13:1 
     
       unsigned   bit14:1 
     
       unsigned   bit15:1 
     
       unsigned   bit16:1 
     
       unsigned   bit17:1 
     
       unsigned   bit18:1 
     
       unsigned   bit19:1 
     
       unsigned   bit20:1 
     
       unsigned   bit21:1 
     
       unsigned   bit22:1 
     
       unsigned   bit23:1 
     
       unsigned   bit24:1 
     
       unsigned   bit25:1 
     
       unsigned   bit26:1 
     
       unsigned   bit27:1 
     
       unsigned   bit28:1 
     
       unsigned   bit29:1 
     
       unsigned   bit30:1 
     
       unsigned   bit31:1 
     
    bit 
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 80 of file bit_access.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ all

    @@ -673,23 +714,15 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    - - diff --git a/Doc/html/unionuint64___bit_type_def-members.html b/Doc/html/unionuint64___bit_type_def-members.html index aa8f0ea..39f8418 100644 --- a/Doc/html/unionuint64___bit_type_def-members.html +++ b/Doc/html/unionuint64___bit_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/unionuint64___bit_type_def.html b/Doc/html/unionuint64___bit_type_def.html index d9aa7f7..7f31bd5 100644 --- a/Doc/html/unionuint64___bit_type_def.html +++ b/Doc/html/unionuint64___bit_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: uint64_BitTypeDef Union Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    uint64_BitTypeDef Union Reference
    - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +

    Public Attributes

    uint64_t all
    +
     
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
       unsigned   bit8:1 
       unsigned   bit9:1 
       unsigned   bit10:1 
       unsigned   bit11:1 
       unsigned   bit12:1 
       unsigned   bit13:1 
       unsigned   bit14:1 
       unsigned   bit15:1 
       unsigned   bit16:1 
       unsigned   bit17:1 
       unsigned   bit18:1 
       unsigned   bit19:1 
       unsigned   bit20:1 
       unsigned   bit21:1 
       unsigned   bit22:1 
       unsigned   bit23:1 
       unsigned   bit24:1 
       unsigned   bit25:1 
       unsigned   bit26:1 
       unsigned   bit27:1 
       unsigned   bit28:1 
       unsigned   bit29:1 
       unsigned   bit30:1 
       unsigned   bit31:1 
       unsigned   bit32:1 
       unsigned   bit33:1 
       unsigned   bit34:1 
       unsigned   bit35:1 
       unsigned   bit36:1 
       unsigned   bit37:1 
       unsigned   bit38:1 
       unsigned   bit39:1 
       unsigned   bit40:1 
       unsigned   bit41:1 
       unsigned   bit42:1 
       unsigned   bit43:1 
       unsigned   bit44:1 
       unsigned   bit45:1 
       unsigned   bit46:1 
       unsigned   bit47:1 
       unsigned   bit48:1 
       unsigned   bit49:1 
       unsigned   bit50:1 
       unsigned   bit51:1 
       unsigned   bit52:1 
       unsigned   bit53:1 
       unsigned   bit54:1 
       unsigned   bit55:1 
       unsigned   bit56:1 
       unsigned   bit57:1 
       unsigned   bit58:1 
       unsigned   bit59:1 
       unsigned   bit60:1 
       unsigned   bit61:1 
       unsigned   bit62:1 
       unsigned   bit63:1 
    bit
     
       unsigned   bit0:1 
     
       unsigned   bit1:1 
     
       unsigned   bit2:1 
     
       unsigned   bit3:1 
     
       unsigned   bit4:1 
     
       unsigned   bit5:1 
     
       unsigned   bit6:1 
     
       unsigned   bit7:1 
     
       unsigned   bit8:1 
     
       unsigned   bit9:1 
     
       unsigned   bit10:1 
     
       unsigned   bit11:1 
     
       unsigned   bit12:1 
     
       unsigned   bit13:1 
     
       unsigned   bit14:1 
     
       unsigned   bit15:1 
     
       unsigned   bit16:1 
     
       unsigned   bit17:1 
     
       unsigned   bit18:1 
     
       unsigned   bit19:1 
     
       unsigned   bit20:1 
     
       unsigned   bit21:1 
     
       unsigned   bit22:1 
     
       unsigned   bit23:1 
     
       unsigned   bit24:1 
     
       unsigned   bit25:1 
     
       unsigned   bit26:1 
     
       unsigned   bit27:1 
     
       unsigned   bit28:1 
     
       unsigned   bit29:1 
     
       unsigned   bit30:1 
     
       unsigned   bit31:1 
     
       unsigned   bit32:1 
     
       unsigned   bit33:1 
     
       unsigned   bit34:1 
     
       unsigned   bit35:1 
     
       unsigned   bit36:1 
     
       unsigned   bit37:1 
     
       unsigned   bit38:1 
     
       unsigned   bit39:1 
     
       unsigned   bit40:1 
     
       unsigned   bit41:1 
     
       unsigned   bit42:1 
     
       unsigned   bit43:1 
     
       unsigned   bit44:1 
     
       unsigned   bit45:1 
     
       unsigned   bit46:1 
     
       unsigned   bit47:1 
     
       unsigned   bit48:1 
     
       unsigned   bit49:1 
     
       unsigned   bit50:1 
     
       unsigned   bit51:1 
     
       unsigned   bit52:1 
     
       unsigned   bit53:1 
     
       unsigned   bit54:1 
     
       unsigned   bit55:1 
     
       unsigned   bit56:1 
     
       unsigned   bit57:1 
     
       unsigned   bit58:1 
     
       unsigned   bit59:1 
     
       unsigned   bit60:1 
     
       unsigned   bit61:1 
     
       unsigned   bit62:1 
     
       unsigned   bit63:1 
     
    bit 
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 97 of file bit_access.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ all

    @@ -1217,23 +1290,15 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    - - diff --git a/Doc/html/unionuint8___bit_type_def-members.html b/Doc/html/unionuint8___bit_type_def-members.html index d5c72bf..4e59f97 100644 --- a/Doc/html/unionuint8___bit_type_def-members.html +++ b/Doc/html/unionuint8___bit_type_def-members.html @@ -3,7 +3,7 @@ - + MyLibs: Member List @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { - diff --git a/Doc/html/unionuint8___bit_type_def.html b/Doc/html/unionuint8___bit_type_def.html index 53a402f..5f54a9c 100644 --- a/Doc/html/unionuint8___bit_type_def.html +++ b/Doc/html/unionuint8___bit_type_def.html @@ -3,7 +3,7 @@ - + MyLibs: uint8_BitTypeDef Union Reference @@ -11,6 +11,7 @@ + @@ -43,20 +44,21 @@ MathJax.Hub.Config({ - + - @@ -71,9 +73,10 @@ $(function() { -
    +
    uint8_BitTypeDef Union Reference
    - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + +

    +

    Public Attributes

    uint8_t all
    +
     
    struct { 
       unsigned   bit0:1 
       unsigned   bit1:1 
       unsigned   bit2:1 
       unsigned   bit3:1 
       unsigned   bit4:1 
       unsigned   bit5:1 
       unsigned   bit6:1 
       unsigned   bit7:1 
    bit
     
       unsigned   bit0:1 
     
       unsigned   bit1:1 
     
       unsigned   bit2:1 
     
       unsigned   bit3:1 
     
       unsigned   bit4:1 
     
       unsigned   bit5:1 
     
       unsigned   bit6:1 
     
       unsigned   bit7:1 
     
    bit 
     
    -

    Detailed Description

    +

    Detailed Description

    Definition at line 39 of file bit_access.h.

    -

    Member Data Documentation

    +

    Member Data Documentation

    ◆ all

    @@ -265,23 +282,15 @@ struct { 

    The documentation for this union was generated from the following file:
      -
    • E:/.WORK/STM32/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    • +
    • F:/Work/Projects/STM/.Elementary/STM32_ExtendedLibs/MyLibsGeneral/Inc/bit_access.h
    - - diff --git a/Doc/latex/Makefile b/Doc/latex/Makefile index 8e14614..7f82972 100644 --- a/Doc/latex/Makefile +++ b/Doc/latex/Makefile @@ -9,34 +9,19 @@ all: $(MANUAL_FILE).pdf pdf: $(MANUAL_FILE).pdf $(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex - $(LATEX_CMD) $(MANUAL_FILE) || \ - if [ $$? != 0 ] ; then \ - \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \ - false; \ - fi + $(LATEX_CMD) $(MANUAL_FILE) $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) || \ - if [ $$? != 0 ] ; then \ - \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \ - false; \ - fi + $(LATEX_CMD) $(MANUAL_FILE) latex_count=$(LATEX_COUNT) ; \ while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\ do \ echo "Rerunning latex...." ;\ - $(LATEX_CMD) $(MANUAL_FILE) || \ - if [ $$? != 0 ] ; then \ - \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \ - false; \ - fi; \ + $(LATEX_CMD) $(MANUAL_FILE) ;\ latex_count=`expr $$latex_count - 1` ;\ done $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) || \ - if [ $$? != 0 ] ; then \ - \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \ - false; \ - fi + $(LATEX_CMD) $(MANUAL_FILE) + clean: rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf diff --git a/Doc/latex/____general__flash_8c_source.tex b/Doc/latex/____general__flash_8c_source.tex index 7aa9eb2..b82fafe 100644 --- a/Doc/latex/____general__flash_8c_source.tex +++ b/Doc/latex/____general__flash_8c_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+flash.\+c} -\hypertarget{____general__flash_8c_source}{}\label{____general__flash_8c_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_flash.c@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_flash.c}} +\hypertarget{____general__flash_8c_source}{}\label{____general__flash_8c_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_flash.c@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_flash.c}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__flash_8c_source_l00001}00001\ \textcolor{preprocessor}{\#include\ "{}general\_flash.h"{}}} diff --git a/Doc/latex/____general__flash_8h_source.tex b/Doc/latex/____general__flash_8h_source.tex index 2922838..788727d 100644 --- a/Doc/latex/____general__flash_8h_source.tex +++ b/Doc/latex/____general__flash_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+flash.\+h} -\hypertarget{____general__flash_8h_source}{}\label{____general__flash_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_flash.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_flash.h}} +\hypertarget{____general__flash_8h_source}{}\label{____general__flash_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_flash.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_flash.h}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00001}00001\ \textcolor{comment}{/**************************************************************************}} @@ -11,28 +11,28 @@ \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00007}00007\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00008}00008\ \textcolor{comment}{//////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00009}00009\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00010}00010\ } +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00010}00010\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00011}00011\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00012}00012\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00013}00013\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00013}00013\ \textcolor{comment}{}\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00014}00014\ } \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00015}00015\ } \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00016}00016\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00017}00017\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00018}00018\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00019}00019\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00019}00019\ \textcolor{comment}{}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00020}00020\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00021}00021\ } +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00021}00021\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00022}00022\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00023}00023\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00024}00024\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00025}00025\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00025}00025\ \textcolor{comment}{}\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00026}00026\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00027}00027\ } +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00027}00027\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00028}00028\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00029}00029\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00030}00030\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00031}00031\ } +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00031}00031\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00032}00032\ HAL\_StatusTypeDef\ FLASH\_Enable\_DualBankMode(\textcolor{keywordtype}{void});} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00033}00033\ HAL\_StatusTypeDef\ FLASH\_WriteProtection(uint32\_t\ BankN,\ uint32\_t\ WriteProtection);} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00034}00034\ \textcolor{comment}{/*\ functions\ for\ reading\ bytes/halswords/words\ */}} @@ -44,7 +44,7 @@ \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00040}00040\ HAL\_StatusTypeDef\ FLASH\_Write\_HalfWord(uint32\_t\ Address,\ uint16\_t\ Data);} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00041}00041\ HAL\_StatusTypeDef\ FLASH\_Write\_Word(uint32\_t\ Address,\ uint32\_t\ Data);\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00042}00042\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00043}00043\ } +\DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00043}00043\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__flash_8h_source_l00044}00044\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_FLASH\_GENERAL\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/____general__spi_8c_source.tex b/Doc/latex/____general__spi_8c_source.tex index b6fb659..04c94c0 100644 --- a/Doc/latex/____general__spi_8c_source.tex +++ b/Doc/latex/____general__spi_8c_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+spi.\+c} -\hypertarget{____general__spi_8c_source}{}\label{____general__spi_8c_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_spi.c@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_spi.c}} +\hypertarget{____general__spi_8c_source}{}\label{____general__spi_8c_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_spi.c@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_spi.c}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__spi_8c_source_l00001}00001\ \textcolor{comment}{/**\ }} diff --git a/Doc/latex/____general__spi_8h_source.tex b/Doc/latex/____general__spi_8h_source.tex index eaad08f..5c91bf4 100644 --- a/Doc/latex/____general__spi_8h_source.tex +++ b/Doc/latex/____general__spi_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+spi.\+h} -\hypertarget{____general__spi_8h_source}{}\label{____general__spi_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_spi.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_spi.h}} +\hypertarget{____general__spi_8h_source}{}\label{____general__spi_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_spi.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_spi.h}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -12,7 +12,7 @@ \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00008}00008\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00009}00009\ \textcolor{comment}{//////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00010}00010\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00011}00011\ \textcolor{preprocessor}{\#define\ HAL\_SPI\_MODULE\_ENABLED\ \ }\textcolor{comment}{//\ need\ to\ uncomment\ these\ defines\ in\ stm32f4xx\_hal\_conf.h}} +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00011}00011\ \textcolor{comment}{}\textcolor{preprocessor}{\#define\ HAL\_SPI\_MODULE\_ENABLED\ \ }\textcolor{comment}{//\ need\ to\ uncomment\ these\ defines\ in\ stm32f4xx\_hal\_conf.h}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00012}00012\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ also\ need\ to\ add\ hal\_spi.c\ (source\ code)}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00013}00013\ } \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00014}00014\ \textcolor{preprocessor}{\#define\ USE\_SPI1}} @@ -20,21 +20,21 @@ \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00016}00016\ \textcolor{preprocessor}{\#define\ USE\_SPI3}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00017}00017\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00018}00018\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00019}00019\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00019}00019\ \textcolor{comment}{}\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00020}00020\ } \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00021}00021\ } \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00022}00022\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00023}00023\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00024}00024\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00025}00025\ } +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00025}00025\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00026}00026\ } \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00027}00027\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00028}00028\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00029}00029\ } +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00029}00029\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00030}00030\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00031}00031\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00032}00032\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00033}\mbox{\hyperlink{struct_s_p_i___settings_type_def}{00033}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}} +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00033}\mbox{\hyperlink{struct_s_p_i___settings_type_def}{00033}}\ \textcolor{comment}{}\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00034}00034\ \{} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00035}00035\ \ \ SPI\_HandleTypeDef\ hspi;} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00036}00036\ \ \ } @@ -52,11 +52,11 @@ \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00048}00048\ \ \ } \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00049}00049\ \}\mbox{\hyperlink{struct_s_p_i___settings_type_def}{SPI\_SettingsTypeDef}};\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00050}00050\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00051}00051\ } +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00051}00051\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00052}00052\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00053}00053\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00054}00054\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00055}00055\ \textcolor{comment}{/**\ \ }} +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00055}00055\ \textcolor{comment}{}\textcolor{comment}{/**\ \ }} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00056}00056\ \textcolor{comment}{\ \ *\ @brief\ \ Initialize\ SPI\ with\ SPI\_SettingsTypeDef\ structure.}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00057}00057\ \textcolor{comment}{\ \ *\ @param\ \ sspi\ -\/\ указатель\ на\ структуру\ с\ настройками\ SPI.}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00058}00058\ \textcolor{comment}{\ \ *\ @return\ HAL\ status.}} @@ -100,7 +100,7 @@ \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00096}00096\ \textcolor{comment}{\ \ */}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00097}00097\ HAL\_StatusTypeDef\ Check\_SPI\_Init\_Struct(\mbox{\hyperlink{struct_s_p_i___settings_type_def}{SPI\_SettingsTypeDef}}\ *sspi);\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00098}00098\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00099}00099\ } +\DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00099}00099\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__spi_8h_source_l00100}00100\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_SPI\_GENERAL\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/____general__uart_8c_source.tex b/Doc/latex/____general__uart_8c_source.tex index c4a0d97..fc097fa 100644 --- a/Doc/latex/____general__uart_8c_source.tex +++ b/Doc/latex/____general__uart_8c_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+uart.\+c} -\hypertarget{____general__uart_8c_source}{}\label{____general__uart_8c_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_uart.c@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_uart.c}} +\hypertarget{____general__uart_8c_source}{}\label{____general__uart_8c_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_uart.c@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/\_\_general\_uart.c}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__uart_8c_source_l00001}00001\ \textcolor{comment}{/**\ }} diff --git a/Doc/latex/____general__uart_8h_source.tex b/Doc/latex/____general__uart_8h_source.tex index 2605576..e60c22a 100644 --- a/Doc/latex/____general__uart_8h_source.tex +++ b/Doc/latex/____general__uart_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{\+\_\+\+\_\+general\+\_\+uart.\+h} -\hypertarget{____general__uart_8h_source}{}\label{____general__uart_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_uart.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_uart.h}} +\hypertarget{____general__uart_8h_source}{}\label{____general__uart_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_uart.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/\_\_general\_uart.h}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -12,7 +12,7 @@ \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00008}00008\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00009}00009\ \textcolor{comment}{//////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00010}00010\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00011}00011\ \textcolor{preprocessor}{\#define\ HAL\_UART\_MODULE\_ENABLED\ \ \ }\textcolor{comment}{//\ need\ to\ uncomment\ these\ defines\ in\ stm32f4xx\_hal\_conf.h}} +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00011}00011\ \textcolor{comment}{}\textcolor{preprocessor}{\#define\ HAL\_UART\_MODULE\_ENABLED\ \ \ }\textcolor{comment}{//\ need\ to\ uncomment\ these\ defines\ in\ stm32f4xx\_hal\_conf.h}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00012}00012\ \textcolor{comment}{//\#define\ HAL\_USART\_MODULE\_ENABLED\ \ //\ maybe\ also\ need\ to\ add\ hal\_uart.h/.c\ (source\ code)}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00013}00013\ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00014}00014\ \textcolor{comment}{//\#define\ USE\_USART1}} @@ -24,13 +24,13 @@ \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00020}00020\ \textcolor{comment}{/*\ note:\ used\ uart\ defines\ in\ modbus.h\ */}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00021}00021\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00022}00022\ \textcolor{comment}{/////////////////////////-\/-\/-\/USER\ SETTINGS-\/-\/-\//////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00023}00023\ \textcolor{preprocessor}{\#include\ "{}interface\_config.h"{}}\ \textcolor{comment}{/*\ used\ uart\ defines\ in\ modbus.h\ */}} +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00023}00023\ \textcolor{comment}{}\textcolor{preprocessor}{\#include\ "{}interface\_config.h"{}}\ \textcolor{comment}{/*\ used\ uart\ defines\ in\ modbus.h\ */}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00024}00024\ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00025}00025\ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00026}00026\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00027}00027\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00028}00028\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00029}00029\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00029}00029\ \textcolor{comment}{}\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00030}00030\ \textcolor{comment}{/**\ \ }} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00031}00031\ \textcolor{comment}{\ \ *\ @brief\ \ Analog\ for\ HAL\ define.\ Remade\ with\ pointer\ to\ structure.}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00032}00032\ \textcolor{comment}{\ \ *\ @note\ \ \ @ref\ \_\_HAL\_LINKDMA.}} @@ -42,11 +42,11 @@ \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00038}00038\ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00039}00039\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00040}00040\ \textcolor{comment}{////////////////////////////-\/-\/-\/DEFINES-\/-\/-\/////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00041}00041\ } +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00041}00041\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00042}00042\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00043}00043\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00044}00044\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00045}\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{00045}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}} +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00045}\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{00045}}\ \textcolor{comment}{}\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\textcolor{comment}{//\ struct\ with\ settings\ for\ custom\ function}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00046}00046\ \{} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00047}00047\ \ \ UART\_HandleTypeDef\ huart;} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00048}00048\ \ \ } @@ -60,11 +60,11 @@ \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00056}00056\ \ \ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00057}00057\ \}\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}};\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00058}00058\ \textcolor{comment}{///////////////////////-\/-\/-\/STRUCTURES\ \&\ ENUMS-\/-\/-\///////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00059}00059\ } +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00059}00059\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00060}00060\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00061}00061\ \textcolor{comment}{/////////////////////////////////////////////////////////////////////}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00062}00062\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00063}00063\ \textcolor{comment}{/**\ \ }} +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00063}00063\ \textcolor{comment}{}\textcolor{comment}{/**\ \ }} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00064}00064\ \textcolor{comment}{\ \ *\ @brief\ \ Initialize\ UART\ with\ UART\_SettingsTypeDef\ structure.}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00065}00065\ \textcolor{comment}{\ \ *\ @param\ \ suart\ -\/\ указатель\ на\ структуру\ с\ настройками\ UART.}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00066}00066\ \textcolor{comment}{\ \ *\ @return\ HAL\ status.}} @@ -108,7 +108,7 @@ \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00104}00104\ \textcolor{comment}{\ \ */}\ } \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00105}00105\ HAL\_StatusTypeDef\ Check\_UART\_Init\_Struct(\mbox{\hyperlink{struct_u_a_r_t___settings_type_def}{UART\_SettingsTypeDef}}\ *suart);\textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00106}00106\ \textcolor{comment}{///////////////////////////-\/-\/-\/FUNCTIONS-\/-\/-\////////////////////////////}} -\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00107}00107\ } +\DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00107}00107\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{____general__uart_8h_source_l00108}00108\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_UART\_GENERAL\_H\_}} \end{DoxyCode} diff --git a/Doc/latex/bit__access_8h.tex b/Doc/latex/bit__access_8h.tex index 31e7227..03df7db 100644 --- a/Doc/latex/bit__access_8h.tex +++ b/Doc/latex/bit__access_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/bit\+\_\+access.h File Reference} -\hypertarget{bit__access_8h}{}\label{bit__access_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h}} +\doxysection{F\+:/\+Work/\+Projects/\+STM/.Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/bit\+\_\+access.h File Reference} +\hypertarget{bit__access_8h}{}\label{bit__access_8h}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h}} Заголочный файл для дефайнов битового доступа. @@ -10,14 +10,14 @@ Include dependency graph for bit\+\_\+access.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{bit__access_8h__incl} +\includegraphics[width=233pt]{bit__access_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{bit__access_8h__dep__incl} +\includegraphics[width=233pt]{bit__access_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} @@ -34,13 +34,13 @@ union \mbox{\hyperlink{unionuint64___bit_type_def}{uint64\+\_\+\+Bit\+Type\+Def} \doxysubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga57dc3bb3472a66fc92312f89d42d2396}{uint8\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+) +\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga57dc3bb3472a66fc92312f89d42d2396}{uint8\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+)~(\texorpdfstring{$\ast$}{*}(\mbox{\hyperlink{unionuint8___bit_type_def}{uint8\+\_\+\+Bit\+Type\+Def}} \texorpdfstring{$\ast$}{*})(\&(\+\_\+uint8\+\_\+))).bit.\+bit\#\#\+\_\+bit\+\_\+ \begin{DoxyCompactList}\small\item\em Получить n-\/й бит из uint8\+\_\+t. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga6a122b536ad99ae611c8cf01437af086}{uint16\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+) +\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga6a122b536ad99ae611c8cf01437af086}{uint16\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+)~(\texorpdfstring{$\ast$}{*}(\mbox{\hyperlink{unionuint16___bit_type_def}{uint16\+\_\+\+Bit\+Type\+Def}} \texorpdfstring{$\ast$}{*})(\&(\+\_\+uint8\+\_\+))).bit.\+bit\#\#\+\_\+bit\+\_\+ \begin{DoxyCompactList}\small\item\em Получить n-\/й бит из uint16\+\_\+t. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_gafaa2080168b1b6f7281e8bfabab022d1}{uint32\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+) +\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_gafaa2080168b1b6f7281e8bfabab022d1}{uint32\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+)~(\texorpdfstring{$\ast$}{*}(\mbox{\hyperlink{unionuint32___bit_type_def}{uint32\+\_\+\+Bit\+Type\+Def}} \texorpdfstring{$\ast$}{*})(\&(\+\_\+uint8\+\_\+))).bit.\+bit\#\#\+\_\+bit\+\_\+ \begin{DoxyCompactList}\small\item\em Получить n-\/й бит из uint32\+\_\+t. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga47eb69ce9330a1c73fe8031240f02f0a}{uint64\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+) +\#define \mbox{\hyperlink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s_ga47eb69ce9330a1c73fe8031240f02f0a}{uint64\+\_\+bit}}(\+\_\+uint8\+\_\+, \+\_\+bit\+\_\+)~(\texorpdfstring{$\ast$}{*}(\mbox{\hyperlink{unionuint64___bit_type_def}{uint64\+\_\+\+Bit\+Type\+Def}} \texorpdfstring{$\ast$}{*})(\&(\+\_\+uint8\+\_\+))).bit.\+bit\#\#\+\_\+bit\+\_\+ \begin{DoxyCompactList}\small\item\em Получить n-\/й бит из uint64\+\_\+t. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/Doc/latex/bit__access_8h__dep__incl.md5 b/Doc/latex/bit__access_8h__dep__incl.md5 index d668a32..9c52014 100644 --- a/Doc/latex/bit__access_8h__dep__incl.md5 +++ b/Doc/latex/bit__access_8h__dep__incl.md5 @@ -1 +1 @@ -a0db7c46e6c8e84aaed5bb4becf5bf9c \ No newline at end of file +f100d5df8d78acb2e79ae9c3faf7fd33 \ No newline at end of file diff --git a/Doc/latex/bit__access_8h__dep__incl.pdf b/Doc/latex/bit__access_8h__dep__incl.pdf index 3d0eaaf1012e0db41152f9d66083bdbd18b5f60a..43600f6b5c640f4f4fd4f2e3892016c7c544590c 100644 GIT binary patch delta 19601 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 MHZuw(B}Gq03Ls+X+5i9m delta 19208 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 diff --git a/Doc/latex/bit__access_8h__incl.md5 b/Doc/latex/bit__access_8h__incl.md5 index 8982918..cb6e7b6 100644 --- a/Doc/latex/bit__access_8h__incl.md5 +++ b/Doc/latex/bit__access_8h__incl.md5 @@ -1 +1 @@ -04aae01d1a86d60c14b0ea57bbf11647 \ No newline at end of file +201ec235709cefdcc9370ba71d46f128 \ No newline at end of file diff --git a/Doc/latex/bit__access_8h__incl.pdf b/Doc/latex/bit__access_8h__incl.pdf index f48791a23ce0bf6474b6935c803d8e634c283373..4f94bcfd1bc274f2ba7d93010aac6f87f89499b4 100644 GIT binary patch delta 20570 zcmV(*K;FOhtO3}p0gz39R84QxFc7`_SIp5q#I?tE;&5E4R3It=U5P_gRr_5^Lq)d| z<=-=7D~b1`6sUGHvL`d|jpt2l!O*X=WSsG^=)@0UbPfIUuz{1Afz6h@9{T6=8Cdu! z47{i3R$N|@*T7O(1Lxok|7}1WAP~X|Cc-2d0-H=ZD05O=gy1NDY}$#Fb!93_gXvma z%D2i|`9@WU@+8?W$~$?l9Lfjfocu=4kX||YQB^T}>AjV=D}}9GaDb4HDS2B&UvTu4 z;m_68lg9qF`^4pW`j1=Eiv$a2ViTB0a~)Qg|6RQ$ z&LSVA-=WdyA}rwIC~9iSGh}VTApm2sU~}1VH!xxExDf|QljmDcMKfHC5IqCG)Ot+u zXzc&CK99=%Fq~O{6uRNPrqAf_Rp8sko4ROBh`NoV4t3PVwZoR?3!7KyK>6IOkuGM( zs6*2`MjeJ;Bx);7ZuE|>-GfCUA1`1Q2a_V+17*J?j7hPfIi}0DxOcjpyD4|y^DB*-5*W;Op!7&LKL7_`0=2GN(opu<-Q!}&YHpvPTd`iMf9F=-+`iQh2matf1) z0v!T2FtexvQvrW8H!=!7J_>Vma%Ev{3V595y?cCA#o0JMGv~H@cF*qF`!(6!Y<3f} z34tUK0x3BG0wQvUH9;alE^<={Al@}p5sf!$TdURzURp2Jvbg{Y*pe!>t(8JsYu{RL zZP8jQ%Iiz17n1!wGiOiOSo?jyzt8W_-)?5+IWu$S%$a|A=DE!?8-x);GU`Gcimtd~ z`KC8!Jn{lU^Nu1!maN#eHTv9q{VH6?p%GH}Lzhc7oy(xs+b|GZRT)yGj)w`V6 zwnGcg!ae>qtCp|)$E@@*gjQ*gH+~IdIBQKG!}T?AUApFqt=BxF+FWq`FkC;dVdIMB zNO<#BgjRpo!S%yeEWc)x7&h;P>l1Jt-L!etrbm0<{{XH}BV?^cgmzYdFZ5PIQ~C)$ zDN0%LpyomXf09G8#Gk|{U=oFsgnOQhMP~dU9*z7d^=#u{;~e!&z&S?Vr0!8@&gfMyvA%2H&2$_G;?=m}5ty+mF6q`)cQ{PA-P~S|aN7`e!ySMQFz4L+h`f)p`00HxUwzj>KN{6D z&d~=daC<5h>H~~`t~514KRmb=`(#V$kT+apAo*Nvl!HuY4L6&@tGdkR#=EXc-aB?0X z2Bz@VJnnD?0MD~FNAk^`K?+jx&3#Y+pBe6mHTNn!M$Z=vSgTEsLP^IcXVTw*#yc9E z~aWIhb)CqOgX~Hz? zEYBigk@XVKN@1mSy=SYi)q1_hE_kdQ!cG%1*@=lRhbH=QIDHN63;{w~F~nrcftCUX=CghVlN)5#J{rec4O-|g}E zomR8C*y9Ay>9E@EQPtsARfp4THTgY)-Jx0$fi4N0U$xuKW|N6PpZrdz!+}gepD(C3 zoAG=Ug%O*NJP&{ z=@;G*!}~dm(9p1R_UP2k8;^hP9PR)21eWPen|kypM2$xcs4&8_GWLbDGLHF6GGuB- zo42I3*D3pfI!u_*24x8-t2kc6`^Qemlif!gkD_b%{XAzWczsb1l{!n@LcHTIZALAitj zjFm63Zs1l4tKIDCcl8wqa!~BTT!3Y>aW(7_YFZD#TvK zK{R-Dgwknb&9{q;b}6&T(oUeU!Mb|NBq?7R#*|YK)Xr4<*;M=aOqPq9PBonZ4C`!1 zol}>#YUYK)Li2xR!ewS2x3?jNWjz*0maFdHV6pH%0D3p@5@SA;^SIRd@wGL`;}*qu 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 delta 20606 zcmV(}K+wO~tO53{0gz39luK{hFbsh2`V~CN2P+~a+wzV9ieisqSZiR1qA1e5x*_SX zWWc(AKT@h+X|irB5;GLdm-s0{u>8r91=R%et@^I4DWQFKYnaR|toLm7&_0*vfbdgU zc*oCIb$!ED3k!u7F2Gy)q7SAjzB+Ea7m6bnX4Ia=P<+|;rvXM>?XLs9;HV$MJTRYmOH7*2l1-Dlb z7G=#9sr<(o$$Y9fu8qaN2Bqj zsYB@3MQN-X&?tGIucE;TkP8e-R>?A;QMQ%=jV_L-%a-6BUyaX{*g$_t3L+b;kR#ym z7XVcuIs4*37@_^(=GpdFRmZ`Lny#nEmKidP^lzuc^XZ5nr5#^5lcxe50yQ_Y#sX6Te=|5R3O+sxb98cLVQmU{oaMcF zV3fuAI6gD)wfpYzzPs6bH`(3nk&q1}B!Li!wH3u$ z!K3wPEt>-fU`wjhT9rbpwbgoHi$|>}^+Rb@lKnk1@4jKN_WSw#|J%*XJafErKJ#2N z?*?Ine~^sY5r-m+uUxq1ZRL?aAT(nQLS)|JjT<7*9(wN{gl4^pka*SQYp%F*)Q>zV zgj(tmvShAUb?xO{ho28Z4L?O_`r&0u7cTkxl=KmVmV63nBbPyfv)c3-LQCTik1xA& z!!k5Puuu4_>+Of0{L7(7YR=%QrwgvS!`VHIH_E{0YRr zkC3$j5!zV+zR+6GiAl!3gI5OiMco_1f)HC({ z_0!bT^;7%nQ3Js0S@4EeMjcT{0z8a(bT-2Eoz(>NHHz?k2x0UXLj1?V0c1fZGn-S* zf0|nqicBU+LL6U2Fp0zUr}BbAZ`Am?Bc(lqTD30JU1jTd=7>niG1I?`aLe_-n6s`soC1dPl8^{hfB%mdK13KQgONHwG! zbrq?~;VspUs5_c-kMZ%dk8r88f8cHt4m>;1@Y4a?vw#|CKTOaTKFQW$8k?O6FCbAe z6S1D>>aobnq`m?*AVSCbsOixMVG&NZu04qw8cwPwvBOzc2Y=A7Jpyk+8b-c~f54H3 zBhY-oh-xkD#U<`Dnp#l2g#?=@%b8<94PBYNZJVa;SSND@7Lq z2-IkUXVb`@{Yp;-SjqMemf+4SVL_H$iPJjVljg-7?s0MsAO<$_)*OCve+B^USsTN- z>P{mYvgNA#Bo974*b!^?b!bLU7YtadP7gsz#}H@ISBFMA>YO8elhGu{WalJbGrGjl z?7YOMK4^MSAr7CWt2p3Kxod

    jYtfb&7kAFvohSdx@~by3)Nt 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 diff --git a/Doc/latex/bit__access_8h_source.tex b/Doc/latex/bit__access_8h_source.tex index f5e2fec..53b023f 100644 --- a/Doc/latex/bit__access_8h_source.tex +++ b/Doc/latex/bit__access_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{bit\+\_\+access.\+h} -\hypertarget{bit__access_8h_source}{}\label{bit__access_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h}} +\hypertarget{bit__access_8h_source}{}\label{bit__access_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/bit\_access.h}} \mbox{\hyperlink{bit__access_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{bit__access_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} diff --git a/Doc/latex/doxygen.sty b/Doc/latex/doxygen.sty index 6d8fc7b..4bfc17f 100644 --- a/Doc/latex/doxygen.sty +++ b/Doc/latex/doxygen.sty @@ -122,7 +122,6 @@ % Used by @code ... @endcode \newenvironment{DoxyCode}[1]{% \par% - \vspace{2pt}% \scriptsize% \normalfont\ttfamily% \rightskip0pt plus 1fil% @@ -130,14 +129,14 @@ \settowidth{\CodeWidthChar}{?}% \settoheight{\CodeHeightChar}{?}% \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{\equal{#1}{0}}% - {% + \ifthenelse{\equal{#1}{0}} + { {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% - }% - {% + } + { {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% - }% - \vspace{2pt}% + } + }{% \normalfont% \normalsize% @@ -200,10 +199,6 @@ \setlist[DoxyItemize,3]{label=\textasteriskcentered} \setlist[DoxyItemize,4]{label=\textperiodcentered} -% Used for check boxes -\newcommand{\DoxyUnchecked}{$\square$} -\newcommand{\DoxyChecked}{\rlap{\raisebox{0.3ex}{\hspace{0.4ex}\tiny \checkmark}}$\square$} - % Used by description lists (using

    ...
    ) \newenvironment{DoxyDescription}{% \description% @@ -241,13 +236,6 @@ \end{DoxyDesc}% } -% Used by @important -\newenvironment{DoxyImportant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - % Used by @author and @authors \newenvironment{DoxyAuthor}[1]{% \begin{DoxyDesc}{#1}% @@ -384,16 +372,14 @@ } % Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[2][]{% +\newenvironment{DoxyEnumFields}[1]{% \tabulinesep=1mm% \par% - \ifthenelse{\equal{#1}{2}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,r]|X[-1,l]|}}% with init value - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% \hline% \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% \hline% \endhead% }{% @@ -403,7 +389,7 @@ % Used for parameters within a detailed function description \newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[3][]{\\ \hspace*{2.0cm} ##1 {\em ##2}##3}% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% }{% } @@ -542,37 +528,6 @@ \mbox{\hyperlink{#1}{#2}}% } -% Used for the cite command -\newcommand{\DoxyCite}[3]{% - \ifthenelse{#3=1}% 1 with square parenthesis - { - \ifthenelse{\equal{#2}{number}}% - { \cite{#1} }% - {% - \ifthenelse{\equal{#2}{shortauthor}}% - { \citetext{\citeauthor{#1}} }% - {% - \ifthenelse{\equal{#2}{year}}% - { \citeyearpar{#1} }% - {}% - }% - }% - }% - {% - \ifthenelse{\equal{#2}{number}}% - { \citealp{#1} }% - {% - \ifthenelse{\equal{#2}{shortauthor}}% - { \citeauthor{#1} }% - {% - \ifthenelse{\equal{#2}{year}}% - { \citeyear{#1} }% - {}% - }% - }% - }% -} - % Used when hyperlinks are turned on % Third argument is the SectionType, see the doxygen internal % documentation for the values (relevant: Page ... Subsubsection). @@ -684,12 +639,12 @@ {1.5ex \@plus .2ex}% {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\l@subsubsubsection{\@dottedtocline{4}{10.0em}{7.8em}} -\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{13.0em}{9.4em}} -\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{15.0em}{11em}} -\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{18.0em}{12.6em}} -\renewcommand\l@paragraph{\@dottedtocline{8}{21.0em}{14.2em}} -\renewcommand\l@subparagraph{\@dottedtocline{9}{24.0em}{15.8em}} +\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}} +\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}} +\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}} +\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}} +\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}} +\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}} \makeatother % the sectsty doesn't look to be maintained but gives, in our case, some warning like: % LaTeX Warning: Command \underline has changed. @@ -722,16 +677,10 @@ \doxysubparagraphfont{#1}% \doxyminisecfont{#1}}% % Define caption that is also suitable in a table -% for usage with hyperlinks \makeatletter \def\doxyfigcaption{% \H@refstepcounter{figure}% \@dblarg{\@caption{figure}}} - -% for usage without hyperlinks -\def\doxyfigcaptionnolink{% -\refstepcounter{figure}% -\@dblarg{\@caption{figure}}} \makeatother % Define alpha enumarative names for counters > 26 diff --git a/Doc/latex/evolve__optimizer_8h.tex b/Doc/latex/evolve__optimizer_8h.tex index 3e7ba54..eca0dbc 100644 --- a/Doc/latex/evolve__optimizer_8h.tex +++ b/Doc/latex/evolve__optimizer_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/evolve\+\_\+optimizer.h File Reference} -\hypertarget{evolve__optimizer_8h}{}\label{evolve__optimizer_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}} +\doxysection{F\+:/\+Work/\+Projects/\+STM/.Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/evolve\+\_\+optimizer.h File Reference} +\hypertarget{evolve__optimizer_8h}{}\label{evolve__optimizer_8h}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}} Заголовочный файл для адаптивного подбора параметров @@ -19,7 +19,7 @@ This graph shows which files directly or indirectly include this file\+:\nopageb \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{evolve__optimizer_8h__dep__incl} +\includegraphics[width=233pt]{evolve__optimizer_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} @@ -30,18 +30,24 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \doxysubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\+\_\+\+SCALE\+\_\+\+Q16}}(x, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\+\_\+\+UNSCALE\+\_\+\+Q16}}(q16\+\_\+val, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}() -\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\end{DoxyCompactItemize} +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)~(((float)(x) -\/ (float)(min\+\_\+val)) / ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val))) +\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)~(((float)(val)) \texorpdfstring{$\ast$}{*} ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val)) + (float)(min\+\_\+val)) +\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}()~HAL\+\_\+\+Get\+Tick() +\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 +\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 +\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 +\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, uint16\+\_\+t iq\+\_\+mutation, int32\+\_\+t \texorpdfstring{$\ast$}{*}start\+\_\+params) +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) \begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, int32\+\_\+t \texorpdfstring{$\ast$}{*}params, int32\+\_\+t loss) +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) \begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 b/Doc/latex/evolve__optimizer_8h__dep__incl.md5 index 17ac4cc..b0eb260 100644 --- a/Doc/latex/evolve__optimizer_8h__dep__incl.md5 +++ b/Doc/latex/evolve__optimizer_8h__dep__incl.md5 @@ -1 +1 @@ -a385857375106a9066dc97059b8e5f66 \ No newline at end of file +ef7ed390ff839d8a446957116f861503 \ No newline at end of file diff --git a/Doc/latex/evolve__optimizer_8h__dep__incl.pdf b/Doc/latex/evolve__optimizer_8h__dep__incl.pdf index 59395c05d7d8cfd3a617a7ca0fe3f4be05643230..3145452a7a5428d3ac71bf45bf12d8022f5f9075 100644 GIT binary patch delta 20762 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 y%OU((#)LUAsU{W~cW9!5TV4YM;uK^nPW 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 diff --git a/Doc/latex/evolve__optimizer_8h__incl.md5 b/Doc/latex/evolve__optimizer_8h__incl.md5 index b0017bc..453cf70 100644 --- a/Doc/latex/evolve__optimizer_8h__incl.md5 +++ b/Doc/latex/evolve__optimizer_8h__incl.md5 @@ -1 +1 @@ -e567d0680734fcff06b08511863dc20f \ No newline at end of file +84a2c30c997cd3aae7d0053ac8a120d1 \ No newline at end of file diff --git a/Doc/latex/evolve__optimizer_8h__incl.pdf b/Doc/latex/evolve__optimizer_8h__incl.pdf index e9b6ca416be0c51c30fdd379559939bd700b90fc..77ef99f7c573e1f0e259e9234be94ebda6945352 100644 GIT binary patch delta 21994 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 GPeuv?ju`v^ diff --git a/Doc/latex/evolve__optimizer_8h_source.tex b/Doc/latex/evolve__optimizer_8h_source.tex index 37adfbd..9f5a03b 100644 --- a/Doc/latex/evolve__optimizer_8h_source.tex +++ b/Doc/latex/evolve__optimizer_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{evolve\+\_\+optimizer.\+h} -\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}} +\hypertarget{evolve__optimizer_8h_source}{}\label{evolve__optimizer_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/evolve\_optimizer.h}} \mbox{\hyperlink{evolve__optimizer_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00001}00001\ \textcolor{comment}{/**}} @@ -24,269 +24,310 @@ \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00020}00020\ \textcolor{comment}{\ \ заглушки,\ никак\ не\ влияющие\ на\ параметры\ и\ остальную\ программу}} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00021}00021\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_PARAMS\ \ \ \ \ \ \ \ \ \ -\/\ Максимальное\ количество\ параметров}} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00022}00022\ \textcolor{comment}{-\/\ @ref\ EVOLVE\_MAX\_CANDIDATES\ \ \ \ \ \ -\/\ Максимальное\ количество\ кандидатов\ для\ обучения}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{@par\ Пример\ использования:}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{@code}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ IQ\_MUTATION\ \ \ \ \ (PARAM\_SCALE\_Q16(0.1,\ 0,\ 1))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{int32\_t\ params[N\_PARAMS];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{//\ Формирование\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE\_Q16(param\_u16,\ \ 0,\ \ \ \ \ \ 1000);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE\_Q16(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE\_Q16(param\_u8,\ \ \ 10,\ \ \ \ \ 100);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE\_Q16(param\_i16,\ \ 500,\ \ \ \ 5000);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{//\ Инициалиазция}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ IQ\_MUTATION,\ params);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{//\ Шаг\ эволюции}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{int32\_t\ loss\ =\ calc\_iq\_loss();\ //\ расчет\ эффективности\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE\_Q16(params[0],\ \ 0,\ \ \ \ \ \ 1000);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE\_Q16(params[1],\ \ 0.001f,\ 0.1f);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE\_Q16(params[2],\ \ 10,\ \ \ \ \ 100);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE\_Q16(params[3],\ \ 500,\ \ \ \ 5000);}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{comment}{@endcode}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{comment}{*\ @\{\ \ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{comment}{*****************************************************************************/}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}00068\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ Q16.16\ [0,\ 65536)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{00071}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{preprocessor}{((int32\_t)((((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))\ *\ 65536.0f))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}00073\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}00074\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ Q16.16\ значения\ в\ диапазон\ [min\_val,\ max\_val]}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{00077}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \(\backslash\)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{preprocessor}{(((float)(q16\_val)\ /\ 65536.0f)\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}00079\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{\#ifndef\ local\_time}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{00081}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#endif}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}00083\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}00084\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}00085\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}00086\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}\mbox{\hyperlink{struct_evolve_optimizer__t}{00087}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00088}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00089}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00090}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{00091}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ в\ Q16.16}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00092}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{00093}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{00094}}\ \ \ int32\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}}];\ \ \ \ \textcolor{comment}{///<\ Параметры\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{00095}}\ \ \ uint16\_t\ \mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00023}00023\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ \ -\/\ Минимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 10\%)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00024}00024\ \textcolor{comment}{-\/\ (опционально)\ @ref\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ \ -\/\ Максимальная\ мутация\ в\ процентах\ от\ Loss\ (по\ умолчанию\ 100\%)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00025}00025\ \textcolor{comment}{-\/\ (опционально)\ @ref\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ \ -\/\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00026}00026\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00027}00027\ \textcolor{comment}{@par\ Пример\ использования:}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00028}00028\ \textcolor{comment}{@code}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00029}00029\ \textcolor{comment}{\#include\ "{}evolve\_optimizer.h"{}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00030}00030\ \textcolor{comment}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00031}00031\ \textcolor{comment}{\#define\ N\_CANDIDATES\ \ \ \ 100}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00032}00032\ \textcolor{comment}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00033}00033\ \textcolor{comment}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00034}00034\ \textcolor{comment}{float\ params[N\_PARAMS];}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00035}00035\ \textcolor{comment}{EvolveOptimizer\_t\ optimizer;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00036}00036\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00037}00037\ \textcolor{comment}{//\ Формирование\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00038}00038\ \textcolor{comment}{uint16\_t\ \ param\_u16\ =\ 800;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00039}00039\ \textcolor{comment}{float\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00040}00040\ \textcolor{comment}{uint8\_t\ \ \ param\_u8\ \ =\ 40;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00041}00041\ \textcolor{comment}{int16\_t\ \ \ param\_i16\ =\ 1600;}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00042}00042\ \textcolor{comment}{params[0]\ =\ PARAM\_SCALE(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00043}00043\ \textcolor{comment}{params[1]\ =\ PARAM\_SCALE(param\_f,\ \ \ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00044}00044\ \textcolor{comment}{params[2]\ =\ PARAM\_SCALE(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00045}00045\ \textcolor{comment}{params[3]\ =\ PARAM\_SCALE(param\_i16,\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00046}00046\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00047}00047\ \textcolor{comment}{//\ Инициалиазция}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00048}00048\ \textcolor{comment}{EvolveOptimizer\_Init(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00049}00049\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00050}00050\ \textcolor{comment}{//\ Шаг\ эволюции}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00051}00051\ \textcolor{comment}{float\ loss\ =\ calc\_loss();\ //\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00052}00052\ \textcolor{comment}{EvolveOptimizer\_Step(\&optimizer,\ params,\ loss);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00053}00053\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00054}00054\ \textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00055}00055\ \textcolor{comment}{param\_u16\ =\ PARAM\_UNSCALE(params[0],\ \ 0.0f,\ \ \ 1000.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00056}00056\ \textcolor{comment}{param\_f\ \ \ =\ PARAM\_UNSCALE(params[1],\ \ 0.001f,\ 0.1f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00057}00057\ \textcolor{comment}{param\_u8\ \ =\ PARAM\_UNSCALE(params[2],\ \ 10.0f,\ \ 100.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00058}00058\ \textcolor{comment}{param\_i16\ =\ PARAM\_UNSCALE(params[3],\ \ 500.0f,\ 5000.0f);}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00059}00059\ \textcolor{comment}{@endcode}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00060}00060\ \textcolor{comment}{*\ @\{\ \ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00061}00061\ \textcolor{comment}{*****************************************************************************/}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00062}00062\ \textcolor{preprocessor}{\#ifndef\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00063}00063\ \textcolor{preprocessor}{\#define\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00064}00064\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00065}00065\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{mylibs__defs_8h}{mylibs\_defs.h}}"{}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00066}00066\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00067}00067\ \textcolor{preprocessor}{\#include\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00068}00068\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00069}00069\ \textcolor{preprocessor}{\#ifdef\ ENABLE\_EVOLVE\_OPTIMIZATION}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00070}00070\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00071}00071\ \textcolor{comment}{\ \ *\ @brief\ Линейное\ масштабирование\ x\ из\ диапазона\ [min\_val,\ max\_val]\ в\ диапазон\ [0,\ 1)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00072}00072\ \textcolor{comment}{\ \ */}\textcolor{preprocessor}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00073}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{00073}}\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00074}00074\ \textcolor{preprocessor}{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00075}00075\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00076}00076\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00077}00077\ \textcolor{comment}{\ \ *\ @brief\ Обратное\ линейное\ масштабирование\ значения\ из\ [0,\ 1)\ в\ диапазон\ [min\_val,\ max\_val]}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00078}00078\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00079}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{00079}}\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \(\backslash\)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00080}00080\ \textcolor{preprocessor}{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00081}00081\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00082}00082\ \textcolor{preprocessor}{\#ifndef\ local\_time}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00083}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{00083}}\ \textcolor{preprocessor}{\#define\ local\_time()\ \ HAL\_GetTick()\ }\textcolor{comment}{///<\ Локальное\ время}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00084}00084\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00085}00085\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00086}00086\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00087}00087\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00088}00088\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MIN\_PCT}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00089}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{00089}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MIN\_PCT\ \ \ 10\ \ \ \ }\textcolor{comment}{///<\ Минимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00090}00090\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00091}00091\ \textcolor{preprocessor}{\#ifndef\ EVOLVE\_MUTATION\_MAX\_PCT}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00092}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{00092}}\ \textcolor{preprocessor}{\#define\ EVOLVE\_MUTATION\_MAX\_PCT\ \ \ 100\ \ \ }\textcolor{comment}{///<\ Максимальная\ мутация\ (в\ процентах\ от\ Loss)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00093}00093\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00094}00094\ \textcolor{preprocessor}{\#ifndef\ ELOVLE\_N\_ELITE\_CANDIDATE}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00095}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{00095}}\ \textcolor{preprocessor}{\#define\ ELOVLE\_N\_ELITE\_CANDIDATE\ \ 2\ \ \ \ \ }\textcolor{comment}{///<\ Количество\ кандидатов,\ которые\ проходят\ в\ поколение\ без\ изменений\ (по\ умолчанию\ 2)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00096}00096\ \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00097}00097\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{/**\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ *\ @cond\ EVOLVE\_INTERNAL}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}00102\ \textcolor{comment}{\ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}00103\ \textcolor{preprocessor}{\#define\ Q16\_MUL(a,b)\ ((int32\_t)(((int64\_t)(a)\ *\ (int64\_t)(b))\ >>\ 16))}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}00104\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}00105\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}00106\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}00107\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}00108\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}00109\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}00110\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}00111\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}00114\ \}\textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ \textcolor{comment}{/**\ @endcond\ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}00116\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00117}00117\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00118}00118\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00098}00098\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00099}00099\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00100}00100\ \textcolor{comment}{\ \ *\ @brief\ Структура\ эволюционного\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00101}00101\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00102}\mbox{\hyperlink{struct_evolve_optimizer__t}{00102}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00103}\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{00103}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Коэффициент\ насколько\ стабильная\ популяция\ (0..1)(@ref\ n\_cand)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00104}\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{00104}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ параметров}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00105}\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{00105}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ кандидатов\ в\ популяции}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00106}\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{00106}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00107}\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{00107}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ \mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Амплитуда\ мутации\ (0..1)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00108}\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{00108}}\ \ \ uint16\_t\ \ \mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Индекс\ кандидата\ для\ обработки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00109}\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{00109}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ loss[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \ \ \ \textcolor{comment}{///<\ Loss\ для\ каждого\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00110}\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{00110}}\ \ \ \textcolor{keywordtype}{float}\ \ \ \ \ candidates[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}][\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}}];\ \textcolor{comment}{///<\ Параметры\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00111}\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{00111}}\ \ \ uint16\_t\ \ sorted\_idx[\mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}];\ \textcolor{comment}{///<\ Индексы\ отсортированных\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00112}00112\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00113}00113\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00114}00114\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00115}00115\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00116}00116\ \textcolor{comment}{/**\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00117}00117\ \textcolor{comment}{\ *\ @cond\ EVOLVE\_INTERNAL}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00118}00118\ \textcolor{comment}{\ */}} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00119}00119\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \textcolor{comment}{\ \ *\ @param\ iq\_mutation\ \ Амплитуда\ мутации\ в\ Q16.16}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (Q16.16)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}{00132}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ iq\_mutation,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}00137\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ start\_params)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ \ \ \textcolor{keywordflow}{if}((opt\ =\ NULL)\ ||\ (start\_params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}00148\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \ \ \textcolor{keywordflow}{if}(iq\_mutation\ >\ 32768)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}00155\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}}\ \ =\ iq\_mutation;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00120}00120\ \textcolor{comment}{//\ Вспомогательный\ указатель\ для\ сортировки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00121}00121\ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ *g\_sort\_opt;\ \textcolor{comment}{//\ глобальный\ указатель\ на\ текущий\ оптимизатор}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00122}00122\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00123}00123\ \textcolor{comment}{//\ функция\ условия\ сортировки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00124}00124\ \textcolor{keyword}{static}\ \textcolor{keywordtype}{int}\ cmp\_idx(\textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *a,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{void}\ *b)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00125}00125\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ <\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00126}00126\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00127}00127\ \ \ \textcolor{keywordflow}{if}\ (g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)a]\ >\ g\_sort\_opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[*(\textcolor{keyword}{const}\ uint16\_t*)b])\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00128}00128\ \ \ \ \ \textcolor{keywordflow}{return}\ 1;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00129}00129\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00130}00130\ \}\textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00131}00131\ \textcolor{comment}{/**\ @endcond\ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00132}00132\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00133}00133\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00134}00134\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00135}00135\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00136}00136\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00137}00137\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00138}00138\ \textcolor{comment}{\ \ *\ @brief\ Инициализация\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00139}00139\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ \ \ \ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00140}00140\ \textcolor{comment}{\ \ *\ @param\ n\_params\ \ \ \ \ Количество\ параметров\ в\ одном\ кандидате}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00141}00141\ \textcolor{comment}{\ \ *\ @param\ n\_cand\ \ \ \ \ \ \ Количество\ кандидатов}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00142}00142\ \textcolor{comment}{\ \ *\ @param\ n\_best\ \ \ \ \ \ \ Количество\ лучших,\ усредняемых}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00143}00143\ \textcolor{comment}{\ \ *\ @param\ mutation\_amp\ Амплитуда\ мутации\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00144}00144\ \textcolor{comment}{\ \ *\ @param\ start\_params\ Начальные\ параметры\ (в\ диапазоне\ 0.0–1.0)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00145}00145\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00146}00146\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00147}00147\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00148}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{00148}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00149}00149\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_params,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00150}00150\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_cand,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00151}00151\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ uint16\_t\ n\_best,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00152}00152\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ mutation\_amp,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00153}00153\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ start\_params)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00154}00154\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00155}00155\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (start\_params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00156}00156\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} \DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00157}00157\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[i][j]\ =\ start\_params[j];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[i]\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}()\ +\ (ADC1-\/>DR\ \&\ 0xFF);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ srand(seed);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ \textcolor{comment}{/**}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата\ (Q16.16)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \textcolor{comment}{\ \ *\ @details}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \textcolor{comment}{\ \ *}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \textcolor{comment}{\ \ */}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}{00187}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t*\ params,} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ \ \ loss)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \textcolor{keywordflow}{if}((opt\ =\ NULL)\ ||\ (params\ ==\ NULL))} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \ \ uint16\_t\ mut\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a5391277564b54e2271856a2466033df5}{iq\_mutation}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ \ \ \textcolor{keywordflow}{if}(mut\ >\ 32768)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}00216\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ i++)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[i]\ =\ i;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \ \ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00219}00219\ \ \ \ \ g\_sort\_opt\ =\ opt;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00220}00220\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00221}00221\ \ \ \ \ g\_sort\_opt\ =\ NULL;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00222}00222\ \textcolor{comment}{//\ \ \ \ for\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand\ -\/\ 1;\ i++)\ \{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00223}00223\ \textcolor{comment}{//\ \ \ \ \ \ for\ (uint16\_t\ j\ =\ i\ +\ 1;\ j\ <\ n\_cand;\ j++)\ \{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00224}00224\ \textcolor{comment}{//\ \ \ \ \ \ \ \ if\ (opt-\/>loss[j]\ <\ opt-\/>loss[i])\ \{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00225}00225\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\_loss\ =\ opt-\/>loss[i];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00226}00226\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ opt-\/>loss[i]\ =\ opt-\/>loss[j];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00227}00227\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ opt-\/>loss[j]\ =\ tmp\_loss;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00228}00228\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00229}00229\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ for\ (uint16\_t\ k\ =\ 0;\ k\ <\ n\_params;\ k++)\ \{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00230}00230\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ \ int32\_t\ tmp\ =\ opt-\/>candidates[i][k];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00231}00231\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ \ opt-\/>candidates[i][k]\ =\ opt-\/>candidates[j][k];}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00232}00232\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \ \ opt-\/>candidates[j][k]\ =\ tmp;}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00233}00233\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00234}00234\ \textcolor{comment}{//\ \ \ \ \ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00235}00235\ \textcolor{comment}{//\ \ \ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00236}00236\ \textcolor{comment}{//\ \ \ \ \}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00237}00237\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00238}00238\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение:\ каждый\ кандидат\ берется\ случайно\ из\ лучших\ с\ мутацией}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00239}00239\ \ \ \ \ uint16\_t\ n\_elite\ =\ 2;\ \textcolor{comment}{//\ количество\ элитных\ кандидатов,\ которые\ сохраняем\ без\ изменений}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00240}00240\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00241}00241\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00242}00242\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Копируем\ лучших\ кандидатов\ напрямую\ без\ мутации}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00243}00243\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00244}00244\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[c]][i];\ \textcolor{comment}{//\ просто\ сохраняем\ параметры}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00245}00245\ \ \ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00246}00246\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00247}00247\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00248}00248\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Остальные\ кандидаты\ формируются\ с\ кроссовером\ и\ мутацией}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00249}00249\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00250}00250\ \ \ \ \ \ \ \ \ \ \ int32\_t\ noise\ =\ (rand()\ \%\ (2\ *\ mut))\ -\/\ mut;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00251}00251\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}];\ \textcolor{comment}{//\ каждый\ параметр\ из\ случайного\ лучшего}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00252}00252\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[parent][i]\ +\ noise;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00253}00253\ \ \ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00254}00254\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac723b265a3d43b754489f14310314f0d}{loss}}[c]\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00255}00255\ \ \ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00256}00256\ \ \ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00257}00257\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00258}00258\ \ \ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00259}00259\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00260}00260\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00261}00261\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ i++)} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00262}00262\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a61bd0c8ae322a79936ba1f2ae22e0e0d}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00263}00263\ \ \ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00264}00264\ \ \ \textcolor{keywordflow}{return}\ 0;} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00265}00265\ \}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00266}00266\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00267}00267\ \textcolor{comment}{//заглушки}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00268}00268\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00269}00269\ \ \ uint16\_t\ n\_params;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00270}00270\ \ \ uint16\_t\ n\_cand;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00271}00271\ \ \ uint16\_t\ n\_best;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00272}00272\ \ \ uint16\_t\ iq\_mutation;\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00273}00273\ \ \ int32\_t\ loss[0];\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00274}00274\ \ \ int32\_t\ candidates[0][0];\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00275}00275\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00276}00276\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ iq\_mutation,\ start\_params)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00277}00277\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00278}00278\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE\_Q16(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ \ \ \ (x)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00279}00279\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE\_Q16(q16\_val,\ min\_val,\ max\_val)\ \ \ \ (q16\_val)}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00280}00280\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00281}00281\ } -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00282}00282\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00283}00283\ \textcolor{comment}{}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00284}00284\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00285}00285\ \textcolor{comment}{\ \ *\ @\}}} -\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00286}00286\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00158}00158\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00159}00159\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00160}00160\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}}\ \ \ \ \ =\ n\_params;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00161}00161\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00162}00162\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00163}00163\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00164}00164\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ \ \ \ \ \ \ =\ n\_cand;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00165}00165\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00166}00166\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00167}00167\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00168}00168\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}\ \ \ \ \ \ \ =\ n\_best;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00169}00169\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00170}00170\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00171}00171\ \ \ \textcolor{keywordflow}{if}((mutation\_amp\ >\ 1)\ ||\ (mutation\_amp\ <\ 0))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00172}00172\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00173}00173\ \ \ \textcolor{keywordflow}{if}(mutation\_amp\ <=\ 0.001f)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00174}00174\ \ \ \ \ mutation\_amp\ =\ 0.001f;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00175}00175\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}}\ \ =\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00176}00176\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00177}00177\ \ \ uint32\_t\ seed\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\_time}}();} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00178}00178\ \textcolor{preprocessor}{\#ifdef\ ADC1}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00179}00179\ \ \ seed\ +=\ (ADC1-\/>DR\ \&\ 0xFF);} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00180}00180\ \textcolor{preprocessor}{\#endif}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00181}00181\ \ \ srand(seed);} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00182}00182\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00183}00183\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00184}00184\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ j\ =\ 0;\ j\ <\ n\_params;\ j++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00185}00185\ \ \ \ \ \ \ \textcolor{comment}{//\ Добавляем\ случайную\ мутацию\ вокруг\ стартового\ параметра}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00186}00186\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ base\ =\ start\_params[j];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00187}00187\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00188}00188\ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ mutation\_amp;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00189}00189\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ base\ +\ noise;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00190}00190\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00191}00191\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[i][j]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00192}00192\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00193}00193\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00194}00194\ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00195}00195\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00196}00196\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00197}00197\ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00198}00198\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00199}00199\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00200}00200\ \textcolor{comment}{/**}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00201}00201\ \textcolor{comment}{\ \ *\ @brief\ Один\ шаг\ эволюционного\ оптимизатора.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00202}00202\ \textcolor{comment}{\ \ *\ @param\ opt\ \ \ \ Указатель\ на\ структуру\ оптимизатора}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00203}00203\ \textcolor{comment}{\ \ *\ @param\ params\ Массив\ параметров,\ которые\ будут\ обновлены\ (на\ выходе\ —\ новые\ параметры)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00204}00204\ \textcolor{comment}{\ \ *\ @param\ loss\ \ \ Loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00205}00205\ \textcolor{comment}{\ \ *\ @return\ 0\ \ \ —\ если\ окей,\ }} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00206}00206\ \textcolor{comment}{\ \ *\ \ \ \ \ \ \ \ \ -\/1\ \ —\ если\ ошибка}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00207}00207\ \textcolor{comment}{\ \ *\ @details}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00208}00208\ \textcolor{comment}{\ \ *\ Сохраняет\ loss\ текущего\ кандидата\ и\ формирует\ параметры\ следующего\ кандидата.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00209}00209\ \textcolor{comment}{\ \ *\ Если\ накоплено\ n\_cand\ кандидатов,\ генерируется\ новое\ поколение.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00210}00210\ \textcolor{comment}{\ \ *\ Новое\ поколение\ формируется\ случайным\ выбором\ из\ n\_best\ лучших\ с\ добавлением\ мутации.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00211}00211\ \textcolor{comment}{\ \ *}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00212}00212\ \textcolor{comment}{\ \ *\ На\ выходе\ params\ содержит\ параметры\ следующего\ кандидата\ для\ измерений.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00213}00213\ \textcolor{comment}{\ \ *\ @note\ Функция\ использует\ глобальную\ внутреннюю\ переменную\ для\ сортировки.}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00214}00214\ \textcolor{comment}{\ \ *\ Надо\ убедится\ что\ только\ один\ экземпляр\ функции\ запущен\ в\ момент\ времени}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00215}00215\ \textcolor{comment}{\ \ */}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00216}\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{00216}}\ \_\_STATIC\_INLINE\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}*\ opt,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00217}00217\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}*\ params,} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00218}00218\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ loss)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00219}00219\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00220}00220\ \ \ \textcolor{keywordflow}{if}((opt\ ==\ NULL)\ ||\ (params\ ==\ NULL))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00221}00221\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00222}00222\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00223}00223\ \ \ uint16\_t\ n\_params\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00224}00224\ \ \ \textcolor{keywordflow}{if}(n\_params\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\_MAX\_PARAMS}})} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00225}00225\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00226}00226\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00227}00227\ \ \ uint16\_t\ n\_cand\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00228}00228\ \ \ \textcolor{keywordflow}{if}(n\_cand\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}})} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00229}00229\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;\ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00230}00230\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00231}00231\ \ \ uint16\_t\ n\_best\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}};\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00232}00232\ \ \ \textcolor{keywordflow}{if}(n\_best\ >\ \mbox{\hyperlink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\_MAX\_CANDIDATES}}/2)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00233}00233\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00234}00234\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00235}00235\ \ \ \textcolor{keywordtype}{float}\ \ \ \ mut\ \ \ \ \ \ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_af779c7aeba0053e36cee7aade160f1c8}{mutation\_amp}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00236}00236\ \ \ \textcolor{keywordflow}{if}((mut\ >\ 1)\ ||(mut\ <\ 0))} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00237}00237\ \ \ \ \ \textcolor{keywordflow}{return}\ -\/1;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00238}00238\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00239}00239\ \ \ \textcolor{comment}{//\ 1.\ Сохраняем\ loss\ текущего\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00240}00240\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}]\ =\ loss;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00241}00241\ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}++;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00242}00242\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00243}00243\ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ >=\ n\_cand)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00244}00244\ \ \ \ \ \textcolor{comment}{//\ 2.\ Сортируем\ текущее\ поколение\ по\ loss}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00245}00245\ \ \ \ \ \textcolor{keywordflow}{for}(uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}};\ i++)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00246}00246\ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[i]\ =\ i;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00247}00247\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00248}00248\ \ \ \ \ g\_sort\_opt\ =\ opt;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00249}00249\ \ \ \ \ qsort(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}},\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}},\ \textcolor{keyword}{sizeof}(uint16\_t),\ cmp\_idx);} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00250}00250\ \ \ \ \ g\_sort\_opt\ =\ NULL;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00251}00251\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00252}00252\ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Адаптивная\ мутация\ в\ зависимости\ от\ Loss\ -\/-\/-\/}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00253}00253\ \ \ \ \ \textcolor{keywordtype}{float}\ best\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[0]];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00254}00254\ \ \ \ \ \textcolor{keywordtype}{float}\ worst\_loss\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_ac35c7ca8cede4ab9c53a2845a91cd1b1}{n\_cand}}\ -\/\ 1]];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00255}00255\ \ \ \ \ \textcolor{keywordtype}{float}\ diff\ =\ worst\_loss\ -\/\ best\_loss;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00256}00256\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00257}00257\ \ \ \ \ \textcolor{keywordtype}{float}\ sum\_loss\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00258}00258\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_cand;\ i++)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00259}00259\ \ \ \ \ \ \ sum\_loss\ +=\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[i];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00260}00260\ \ \ \ \ \textcolor{keywordtype}{float}\ avg\_loss\ =\ sum\_loss\ /\ (float)n\_cand;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00261}00261\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00262}00262\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00263}00263\ \ \ \ \ \textcolor{keywordtype}{float}\ loss\_ratio\ =\ (diff\ >\ 0.0f)\ ?\ ((avg\_loss\ -\/\ best\_loss)\ /\ diff)\ :\ 0.5f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00264}00264\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ <\ 0.0f)\ loss\_ratio\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00265}00265\ \ \ \ \ \textcolor{keywordflow}{if}\ (loss\_ratio\ >\ 1.0f)\ loss\_ratio\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00266}00266\ \ \ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00267}00267\ \ \ \ \ \textcolor{comment}{//\ Записываем\ стабильность\ популяции\ в\ структуру}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00268}00268\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ <\ 0.0f)\ diff\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00269}00269\ \ \ \ \ \textcolor{keywordflow}{if}(diff\ >\ 1.0f)\ diff\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00270}00270\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ (1.0f\ -\/\ worst\_loss)\ *\ (1.0f\ -\/\ (worst\_loss\ -\/\ best\_loss));} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00271}00271\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00272}00272\ \ \ \ \ \textcolor{keywordflow}{if}(opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a80eb0b8525b6bb838484f5922b9d8f7c}{stability}}\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00273}00273\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00274}00274\ \ \ \ \ \textcolor{keywordtype}{float}\ mut\_pct\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}}\ +} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00275}00275\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\_MUTATION\_MAX\_PCT}}\ -\/\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\_MUTATION\_MIN\_PCT}})\ *\ loss\_ratio;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00276}00276\ \ \ \ \ \textcolor{keywordtype}{float}\ adaptive\_mut\ =\ mut\ *\ (mut\_pct\ /\ 100.0f);} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00277}00277\ \ \ \ \ \textcolor{keywordflow}{if}\ (adaptive\_mut\ <\ 0.0001f)\ adaptive\_mut\ =\ 0.0001f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00278}00278\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00279}00279\ \ \ \ \ \textcolor{comment}{//\ 3.\ Генерируем\ новое\ поколение}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00280}00280\ \ \ \ \ uint16\_t\ n\_elite\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\_N\_ELITE\_CANDIDATE}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00281}00281\ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ c\ =\ 0;\ c\ <\ n\_cand;\ c++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00282}00282\ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (c\ <\ n\_elite)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00283}00283\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00284}00284\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[c]][i];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00285}00285\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00286}00286\ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00287}00287\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ n\_params;\ i++)\ \{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00288}00288\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ inv\_randmax\ =\ 1.0f\ /\ (float)RAND\_MAX;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00289}00289\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ noise\ =\ ((float)rand()\ *\ inv\_randmax\ *\ 2.0f\ -\/\ 1.0f)\ *\ adaptive\_mut;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00290}00290\ \ \ \ \ \ \ \ \ \ \ uint16\_t\ parent\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a74b81df1c298c99162310f3f7d91735a}{sorted\_idx}}[rand()\ \%\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a950cd70cb6bff33b78ad35ee58c729a6}{n\_best}}];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00291}00291\ \ \ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[parent][i]\ +\ noise;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00292}00292\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ <\ 0.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00293}00293\ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ >\ 1.0f)\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[c][i]\ =\ 1.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00294}00294\ \ \ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00295}00295\ \ \ \ \ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a93f628397c2f8d4027f2906752b650df}{loss}}[c]\ =\ 0.0f;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00296}00296\ \ \ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00297}00297\ \ \ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00298}00298\ \ \ \ \ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}\ =\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00299}00299\ \ \ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00300}00300\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00301}00301\ \ \ \textcolor{comment}{//\ 4.\ Возвращаем\ параметры\ следующего\ кандидата}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00302}00302\ \ \ \textcolor{keywordflow}{for}\ (uint16\_t\ i\ =\ 0;\ i\ <\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a1c270fce82e0c97e6c88fd0971c1eed8}{n\_params}};\ i++)} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00303}00303\ \ \ \ \ params[i]\ =\ opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_aec67667fd1f1533e693e41c79bc28da4}{candidates}}[opt-\/>\mbox{\hyperlink{struct_evolve_optimizer__t_a0ae0e63ba351335d4445d927991c64ae}{cand\_index}}][i];} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00304}00304\ \ \ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00305}00305\ \ \ \textcolor{keywordflow}{return}\ 0;} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00306}00306\ \}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00307}00307\ \textcolor{preprocessor}{\#else\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00308}00308\ \textcolor{comment}{//заглушки}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00309}00309\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00310}00310\ \ \ uint16\_t\ n\_params;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00311}00311\ \ \ uint16\_t\ n\_cand;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00312}00312\ \ \ uint16\_t\ n\_best;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00313}00313\ \ \ \textcolor{keywordtype}{float}\ mutation\_amp;\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00314}00314\ \ \ \textcolor{keywordtype}{float}\ loss[0];\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00315}00315\ \ \ \textcolor{keywordtype}{float}\ candidates[0][0];\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00316}00316\ \}\ \mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}};} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00317}00317\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Init(opt,\ n\_params,\ n\_cand,\ n\_best,\ mutation\_amp,\ start\_params)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00318}00318\ \textcolor{preprocessor}{\#define\ EvolveOptimizer\_Step(opt,\ params,\ LossFunc)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00319}00319\ \textcolor{preprocessor}{\#define\ PARAM\_SCALE(x,\ min\_val,\ max\_val)\ \ \ \ \ \ \ \ \ (x)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00320}00320\ \textcolor{preprocessor}{\#define\ PARAM\_UNSCALE(val,\ min\_val,\ max\_val)\ \ \ \ \ (val)}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00321}00321\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ ENABLE\_EVOLVE\_OPTIMIZATION}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00322}00322\ } +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00323}00323\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ \_\_EVOLVE\_OPTIMIZER\_H\_}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00324}00324\ \textcolor{comment}{}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00325}00325\ \textcolor{comment}{/**\ EVOLVE\_OPTIMIZER}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00326}00326\ \textcolor{comment}{\ \ *\ @\}}} +\DoxyCodeLine{\Hypertarget{evolve__optimizer_8h_source_l00327}00327\ \textcolor{comment}{\ \ */}} \end{DoxyCode} diff --git a/Doc/latex/files.tex b/Doc/latex/files.tex index 009943f..5ca56a4 100644 --- a/Doc/latex/files.tex +++ b/Doc/latex/files.tex @@ -1,21 +1,21 @@ \doxysection{File List} Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__flash_8h_source}{\+\_\+\+\_\+general\+\_\+flash.\+h}} }{\pageref{____general__flash_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__spi_8h_source}{\+\_\+\+\_\+general\+\_\+spi.\+h}} }{\pageref{____general__spi_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__uart_8h_source}{\+\_\+\+\_\+general\+\_\+uart.\+h}} }{\pageref{____general__uart_8h_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__gpio_8h}{general\+\_\+gpio.\+h}} \\*Заголовочный файл для модуля инициализации портов и работы с ними }{\pageref{general__gpio_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__tim_8h}{general\+\_\+tim.\+h}} \\*Заголовочный файл для модуля инициализации таймеров и работы с ними }{\pageref{general__tim_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}} \\*Заголочный файл для работы с трассировкой }{\pageref{trace_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{trackers_8h}{trackers.\+h}} \\*Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} }{\pageref{trackers_8h}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__flash_8c_source}{\+\_\+\+\_\+general\+\_\+flash.\+c}} }{\pageref{____general__flash_8c_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__spi_8c_source}{\+\_\+\+\_\+general\+\_\+spi.\+c}} }{\pageref{____general__spi_8c_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__uart_8c_source}{\+\_\+\+\_\+general\+\_\+uart.\+c}} }{\pageref{____general__uart_8c_source}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{general__gpio_8c}{general\+\_\+gpio.\+c}} \\*Модуль для инициализации портов и работы с ними }{\pageref{general__gpio_8c}}{} -\item\contentsline{section}{E\+:/.\+WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{general__tim_8c}{general\+\_\+tim.\+c}} \\*Модуль для инициализации таймеров и работы с ними }{\pageref{general__tim_8c}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\mbox{\hyperlink{mainpage_8h_source}{mainpage.\+h}} }{\pageref{mainpage_8h_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__flash_8h_source}{\+\_\+\+\_\+general\+\_\+flash.\+h}} }{\pageref{____general__flash_8h_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__spi_8h_source}{\+\_\+\+\_\+general\+\_\+spi.\+h}} }{\pageref{____general__spi_8h_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{____general__uart_8h_source}{\+\_\+\+\_\+general\+\_\+uart.\+h}} }{\pageref{____general__uart_8h_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{bit__access_8h}{bit\+\_\+access.\+h}} \\*Заголочный файл для дефайнов битового доступа }{\pageref{bit__access_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{evolve__optimizer_8h}{evolve\+\_\+optimizer.\+h}} \\*Заголовочный файл для адаптивного подбора параметров }{\pageref{evolve__optimizer_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__gpio_8h}{general\+\_\+gpio.\+h}} \\*Заголовочный файл для модуля инициализации портов и работы с ними }{\pageref{general__gpio_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{general__tim_8h}{general\+\_\+tim.\+h}} \\*Заголовочный файл для модуля инициализации таймеров и работы с ними }{\pageref{general__tim_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__config_8h}{mylibs\+\_\+config.\+h}} \\*Конфигурации для библиотек My\+Libs }{\pageref{mylibs__config_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__defs_8h}{mylibs\+\_\+defs.\+h}} \\*Заголочный файл для дефайнов библиотеки My\+Libs\+General }{\pageref{mylibs__defs_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{mylibs__include_8h}{mylibs\+\_\+include.\+h}} \\*Заголочный файл для всех библиотек }{\pageref{mylibs__include_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{trace_8h}{trace.\+h}} \\*Заголочный файл для работы с трассировкой }{\pageref{trace_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/\mbox{\hyperlink{trackers_8h}{trackers.\+h}} \\*Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} }{\pageref{trackers_8h}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__flash_8c_source}{\+\_\+\+\_\+general\+\_\+flash.\+c}} }{\pageref{____general__flash_8c_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__spi_8c_source}{\+\_\+\+\_\+general\+\_\+spi.\+c}} }{\pageref{____general__spi_8c_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{____general__uart_8c_source}{\+\_\+\+\_\+general\+\_\+uart.\+c}} }{\pageref{____general__uart_8c_source}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{general__gpio_8c}{general\+\_\+gpio.\+c}} \\*Модуль для инициализации портов и работы с ними }{\pageref{general__gpio_8c}}{} +\item\contentsline{section}{F\+:/\+Work/\+Projects/\+STM/.\+Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/\mbox{\hyperlink{general__tim_8c}{general\+\_\+tim.\+c}} \\*Модуль для инициализации таймеров и работы с ними }{\pageref{general__tim_8c}}{} \end{DoxyCompactList} diff --git a/Doc/latex/general__gpio_8c.tex b/Doc/latex/general__gpio_8c.tex index af9a192..46422d9 100644 --- a/Doc/latex/general__gpio_8c.tex +++ b/Doc/latex/general__gpio_8c.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/general\+\_\+gpio.c File Reference} -\hypertarget{general__gpio_8c}{}\label{general__gpio_8c}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/general\_gpio.c@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Src/general\_gpio.c}} +\doxysection{F\+:/\+Work/\+Projects/\+STM/.Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Src/general\+\_\+gpio.c File Reference} +\hypertarget{general__gpio_8c}{}\label{general__gpio_8c}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/general\_gpio.c@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Src/general\_gpio.c}} Модуль для инициализации портов и работы с ними. @@ -10,7 +10,7 @@ Include dependency graph for general\+\_\+gpio.\+c\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{general__gpio_8c__incl} +\includegraphics[width=266pt]{general__gpio_8c__incl} \end{center} \end{figure} \doxysubsubsection*{Functions} diff --git a/Doc/latex/general__gpio_8c__incl.md5 b/Doc/latex/general__gpio_8c__incl.md5 index e665dcd..68c4ba4 100644 --- a/Doc/latex/general__gpio_8c__incl.md5 +++ b/Doc/latex/general__gpio_8c__incl.md5 @@ -1 +1 @@ -06087ea6fdcbd10af4ee99fd98be927c \ No newline at end of file +d6b4b5162b176a9d1f8fd88ea3e36d44 \ No newline at end of file diff --git a/Doc/latex/general__gpio_8c__incl.pdf b/Doc/latex/general__gpio_8c__incl.pdf index fd06f3c8aa676738c77d3a6cd9db611e772243e4..f2598002932e4e66f48412b6caaf8cce5e9db3f7 100644 GIT binary patch delta 20887 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 z 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

    jZf8S8j&i`aZ&XK~F_9u1#&16ps4Lm8to)n_5 z;5g}%LJZMEOt*mCetqkOtn`^7!=@I3N9{wTI%Yg1W^A}vj=#Ipu>?MjFjcz)t#MUvI+iqqIH9 z=(&&4bDxW;Cj&-WAETVU0pDJqJEy4RD7lZJlaEq*8(rS45BK`8Z+ehYe`YTw=)u!L zvNpIom-j8`r!k^o*=K-Z4Mj#Z7tCxm^e}4ts!JHIYWqI zQd!v+kS|m0&1xBQPKGL+f5j`x`blBV^+)%xEJ=<4((d-L)A*4T<{GYlj&4F( zJO?kroAHhKUh*P&M@_1g>S*<+(c)~D{+=M(jc4OlD8C_BUI68Fe*@+J{e$5d@8AdV zL-=9%?#_K*gzroErT^!h2)HlDQXBL)|3m)ElMww~I8+G1gxr9ohGg;5Jyh8{!*@d!MbM1=*}Y1yNIcSF%;X!QZqiT1&_2mKtqjjh7z z?Bm(ffXn4*e+rDJ8~qmda{YZ<`Wxs(Bl_ZV9h9s=zd*l6$8ik*lB^M|LY1Hi*JfV_ z%pZ>CL2sXgJ3qw#A~(YKChkRkQg%Gx`&RT_I@{=1=+8KaD?qnSlObdcd6-)dyQUoO z9gdcu-cMZXNe?ems2V@EiDBgl)nd;>Z0>{YUzL*Z;3hY z@B8R4e^|g4Y=^Ikqj(;^4!$?yyYQp%sYV|*6oxk}h6>=K?5 zej+?CoEELp%_d}e_3Ov_%KF~xNBy_;@9gjFfA7xz87N5ra4HN`r5<{}2)-*|y>|k} z?Ln_$E6iOGm*KJaVwjnQcm-Yu^z~+ZD^SZHv%dcfKL@k)2mCqo*+#;w&%?+FGM>zU z?`32uSx0t|dr3EWlbquu&cZo34_C%b=32O=+(zyiZYP)FUgh59{=%K*zJ_m>m-z@^ zf6OQO6hE0?$Y0Gr%zwmxBrFhK5k3Hhvs&CH_K5$GMoMF)nbIt&MY>1YC%tZJ1?+qQ z?M3_Z_dGtqZ2`S-FS?sl^8xZ(@>{^?g=h&kjR2;Sr|@m$2HZ{J!e(&{8H1;z(|i)< z`bDyfoF!wpX?QB0gI18?dTXMae+H6zfBpq@ihmBq_FHIqvuMRPlFvme>coiD!83ow zRq`qB74$auK9=}L(4Tl2`|v69BsUYV;OG2Up$SE~htSWsb@&Ffmoy?Ie`UH8@OV0Y z2I#_ET!sJ5Wf2GbuN&2Je?_;TmE@1;6zt>M(0zCbe45U5+k7Ct;MI!4odzdQo-%bkdQXf5feY@xG5{ zWuMGOu#A>vSAnqq9Qv^&phZ#&);NQI597TKEhV$F8@Z+Z%V8ewfmzUCwyp;Hb34C| zzlHx2-3fbsC(xVSuy3A$okRCN(k|V)al`s`Yu8-0dezDm%a>hw#nQ`Lnl4Gtn>%Cr zIIUsq1@&V_*Nv(jQBz$tf4s6{*wFG+*^ttbWFj6bj;fKO!f+@U@cXuVafKV^Lm4Yet2vNrUTT)K*qa9b8j`npb?I zrl!}_25MqOtw;4k%hkr1nmIZ#ruN|Zvzh?DYhtWf&75NJGzRZrf3OYUXcTTx8~w{B zsu|p>HfAPmTGrm!IuV-du*ef)6PC(D%Tb4H0nh?a#ur=Lfqi2!1BkD2bO%8u8+0lY zj7@CJ1Y#3u4>DY$anX{@%vnv16GPEx^U(4Pp0GG}c?QMCXB;V31x;X&$%qp&5_^og zoQ?+Fp>~w_w%^&Kf1t}-Q`RN1C5sj`Ww=Gn^cl_+Ja=NockN04`AcZrHKA#Herbqn zZ}cx$>1BKSb~UqmR#Sdyl*Y}?&<5N~5|dinC&8odgh`w_M}?=6t<6mtycHg)(vi?n z>El}(Yos}?E7XiRHa@njeMKuQO|U(KW?vKS3om_#0w1P z=p4IL7VF;H_yI>xMn<|PiU|5ofkxkVsh(W8Wl0=yV%c7BNXU4#=AU>n+HvixS*zD! zRIS~$nv6E`Zs{y1XG9TfoFYd)=sr4i)*Xqu8NVU!W{Z@Md3Bk(QS~6?%aO6yJ)en* z&vV@|jVH%|5!eMIY$8>bK%LH^rotggT4^g~m}if$k_`i0sKw3cJm9ClBQW-QzcP8| zK^YfnYo}Cy5uxTvFo34Gm=tO2mvtQg^6axi^7Rd)iguc8{12NPC*0O9t zEUBN6>hqMW2%11w(1nr(m%1uWxZ-t|UMVBdHJ)f5->$VpEVMBU&PcOaRp4xdh}7_Bk6C)X%;V#H3S|5CB0<*s zUO1pYo>GwBdI%LXP*%SeNmU=cO_#4DyZ2CA5^oAInbp#*kJycjGh`Rtwjz6JzY;?` zCd(SaBL0QvL2>y_;Snx1VC$|QO;fI$h8Ned?gRS*`)r)cq87ykb(>VDNca7L$B>Up$LLd2obQ-H7(`(@A1T<-_Be zv_gye8FpE8jui`mqpD)8(rHnRM>fYO%38GwiomR_tTw(uk+rsJ1 z_b8nM8n4@UMeZZ%e343;$sb^e&+D!Wpp&hL1^V$PvyN$$jisSlRcg>-=fiTS4ECMz z_{`5F#}u7XvTOYTxB4B`=LII(%z6tF3nH!tN0 zX3`DRoS;anvxq!nuuN>T~L8Od_Is3fi0l5=UFY!5+B%~^1 z#vL3bJvsYle>QRNr~XblfG3sfo24%v76;1?Z##(^HZqfD8vpAg_rm+lZneg!xw!wBPH+FkI? zeEHuqFx^AL!ES+AI{K#NPQ1~jfywXyBKg*(wXw!5$_M*vuNxa~aeWv;EiqxpeQ=#( z1=#_}=a-h^LMQE>mD*nXGEj*X<4NHn{d+_-Ps_uR^+koa87j^ck-`<#QUqf<0@SlN zWOpMXz}l)cJ1FN%V4QC&^4zbhn94yRRtpxmal3*5|3J2V4OWg{@HmDnQ-v@qFNyn3 zIb3xxbFR6Ced$d=Jp3sVrqk&2tn}px=TTFc#iD93f-^8dj?c6nc@N?4h(T@Tqupzu4+tE`olC z!ykKJpl;diI-%~tPzXj6GDFRIn_61%RvOp||2+uDl@+Cgmd>s4YitZ|@mO?#ny2t_ zXy_R76UNr{3tBx2bz8P@TPn22teC3YG!whPyYr2H%;|ll*sFlnhHtO^zI%K(fF7f~ z!?6L7QM`n6#Q8$r?7-CgLA_t!o??%=?j-~nk;alyQ1cu{`?6e__>Uz9s6yh)>5@cN zh@#Sh;O4_6cPxSE_sXkeyI#l0fY0rd%P;D{5KXhKNKIbyGZjq#cEdhT-`79>6n9MN z%-N*&VHU}Q(v9o7LVlI$MHx*3H}xi$q`Y#vN^D_H18bv(y`?&H+t?-?I6 zZu4=EpBWv~>D(5OY&l^(7R|XJo8i^GEhrhtq>e{ZXYqC2iZYFA1C5d%k2Q8({r@<3 z_~RYE@WL#V+#;pGZ&WBwm0%+d#w*?Y8_^ojvfL<34NakQcAXNX)cmv#-f{sUB2XPd z`*AN3{83=-%M3N0FJVLy?pZy*?IYc?dVc8tvji|R_D--k)U1X@R8Zxzt3CiA+CqY;&PQ@ zGh{NmxGpcGcPK-r_&YDuMu&J;16QYA9KpCtJeiQ_TM$Qpt{X`)dRZQD1z0`(n?#2N4DpDcVr3QxJ z&P&;3*>jGs{7WBIzq50>cK+k}w3+9f-#tXAUZSxh&;xD|4fP4AbebAJOpT8OZ~T)U zCn{$gDpyRkCzWlUK7UW__y1Y5Lb8sd;60e!fl*jz9&B(eNH6at+78`SS{tE0sxsdf zPVjiBZK)-~><^sAHdjzg36C@{68+==D4epZp=2shjj=^Tq`Tj`5K< z7p=BS9=n`5Z~3fqf!2oBRnu?QU~ha$?jgq9Tw)Hvh5?~lC`PQ{aEQcG3=gKJrH=ef z1@Bbvc%64tG`RvFYR38YR@~9n@TioiWgW9^2XQ0fmUEzg#FmPikK@_#qYmQb6=rve z+f22Ko++iLhe@U?%*OJTWJR2Gt~4o(%KAah13e+_*x)>KiO*U2m8>(Gwc6Kn%Z=5p zXQ^Zmwg4Fs!SmJ^EhEl!dOZnG(nj>Kg~q1CzDc?Zun@NI5Oa!@1c_|eJ>Fg3ERnV9 zj9T2_W^LZ;JGcF9k57k%mNYra%FK?N(wa(c`zzn_jB0DK#({y=NI5yaiJrDv@aD?` z9+av#m=Wh~LNhs2-@xNRr4T6<=>1AmZFZ(12#`bZ^#z&4^u3l_utK?SbgDIUqrZwR z-=vV>C|SbX*EiXDbhlW9<6~j1qc4*BXm0$pX5^6Q0#xE%7)*2-BRHW)-qn1TG`NH) zVOMDG4)LJTZ+)Qo?lSU0r2OTbAG-Zj?%2xw#FGa!`#

    Z_XvnlI-VA2*2JJ7+$+gE6-~Zj;>fsup<0R|uBzIz!>DgD+mBVCE zJylor&&sdYbDdIw%-==ce}X^zL`i+pmSpLyL@>v94u)p8JF!Aj6V81goFvo0wurNq z+}---Z>;Pj)`)-=yk8qd2a|Y56ZB5 z;imU^2zVvZBsgYTqmeL}+VK>|*-DGFFN*QUHB0C22fYzzPZnW4!;ffR8-K5{AXYFr z7hUZa=*@2tH5hehOSxyL8LwhZ>dt6U)}2B7cur%ydijxhF-!VD0xh~?{u9IbB@rd) z6Ozis+xg#fn68kIqX(4?0xkvr2f*QQX*3e~FPDEA&{9B=`0CbCTXoW_7c}4d7YD6v zdMf+f6Ujq=e0xsbeiM)!W9G&*b|451*KQZeR&o2AQF<0RHiVST1z*VJq=(9=)cKTRUZcCZbq<}b#VM~?5DCSu1%-RpUQX{BD-zI@*_wYEI1NLX%^qB!c1YiTnMn{Jeraa&JW!eRIJgdO&!;6(d`-U%TUnkFS+AR_xM&FBf z<8;%3ppZP~3G&e?Q~-LQKXcd+PAr?bXNV?KGqW}}w`>(Mf)M{3XJU-6q$qF{3MGM- zm64K_zM@s;zb{wRN?ZI z*m)A97{V8ux@g#SSomLLxQq!fEC*z@(6qEU(NvHu(k56rlG|_{^pz;qBe+9ZyuNqv zuWjP0G5py+lh{Q77~@$~(I11)pW#VO<4gnNp$iN=JR zL&I)PuKFUJ{Ejq(>8bfoxx?!GIbX13RP8SRUL#G`V6t4%6J1m{Bm2S>_pus4txqWJ zzOt$@o?r4n&c1sfm>W}N-*n!Qkbc+3ZZ+EM*9ZQ7sj1oV$8xvkE)2Crzf+D3_YQ;G zi&gThPr_;shRnX<$6eL)nwGoev#lfQb7tq37!vr=9Hr9J>NK2CXZ|f}&f>hOg>6@p zac4!(x{k?tt*u*tv_e7=nMn+o~gH~fh7S#t+*lfP3+#`Zej4TgR#YTq=nqcaea+wKk+E>!&T!0 zJsgrlKG5iHflE3nrq2H4_XWPm%r$q_teWwpagxOaRNJjL5KR?k@Jm7a_ivd)0nln7 zc?9}zC+@QTlX{@lUnD?R^Gn-Xf{&2TVo_z@ku0?u*wy$f5N8T|{Gm4frMzfC3a1zV zIl1;Ew(batY-pTo;Qr#y-aRw%7xiL?!Q^jAcY>IPxTi5b1^+3OnT(c9AURZ~xTQETBGbmw0l-3| zl^6!TS-oe3ZS(PP^@C|O#eTxCPD6sfkhhY%dJ}06a4#Y+S4+@frdQ~N7G4PorP5r3 zh-9s;gNPe_{Ub68J>K42IuJ`?-RN}3Uj8s6_gSwLnR=fZlFQ+e|fcF{Qv*} diff --git a/Doc/latex/general__gpio_8h__incl.md5 b/Doc/latex/general__gpio_8h__incl.md5 index 4ec2cb9..e609b83 100644 --- a/Doc/latex/general__gpio_8h__incl.md5 +++ b/Doc/latex/general__gpio_8h__incl.md5 @@ -1 +1 @@ -c4bc3b9676509254c26d2cac446951d4 \ No newline at end of file +6f17442ee0a3e2ee4f9dbda2a2e7f4a9 \ No newline at end of file diff --git a/Doc/latex/general__gpio_8h__incl.pdf b/Doc/latex/general__gpio_8h__incl.pdf index ae0be16d55e3d3997df5b04875d436136586cbb4..f9043ee59d4d42d985803efd36270287c2b65e6a 100644 GIT binary patch delta 20904 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

    lW?^MB|6E-VpV72XqN@pAE2 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

    yDhFRFdy>~sBBAc79U1Z?Hw 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 delta 19886 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 TJ(Js59tt!#Hwq;sMNdWw=k@FM delta 21247 zcmV(pg!0gz9BRm)CXF$~?`ugLP=#e~?-&7(^sg!({L=}285gecEe475od1;7~I(nq|x1dyW5W3 z&n~z(_`Y^~`;Z2A+);2lE(ZNmEIyAeMt6PUHoIVcaN6cnwVG3ZC>A%0AKi4;ZJbWR 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 \+\_\+ms\+\_\+) \begin{DoxyCompactList}\small\item\em Проверяет, завершилась ли задержка. \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -36,20 +36,13 @@ Collaboration diagram for Delays defines\+:\nopagebreak \item \doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}{ms\+Delay\+Wait\+Done} — проверка, завершена ли задержка. Эти макросы удобны для реализации неблокирующих задержек. \end{DoxyItemize} -\label{doc-define-members} -\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}\index{Delays defines@{Delays defines}!msDelay@{msDelay}} +\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479}\label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479} +\index{Delays defines@{Delays defines}!msDelay@{msDelay}} \index{msDelay@{msDelay}!Delays defines@{Delays defines}} \doxysubsubsubsubsection{\texorpdfstring{msDelay}{msDelay}} -{\footnotesize\ttfamily \label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gabeb97579daeb622c6651ed03c4a27479} -\#define ms\+Delay(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define ms\+Delay(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+ }\end{DoxyParamCaption})~HAL\+\_\+\+Delay(\+\_\+ms\+\_\+)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{HAL\_Delay(\_ms\_)} - -\end{DoxyCode} Задержка на указанное количество миллисекунд. @@ -66,17 +59,12 @@ Collaboration diagram for Delays defines\+:\nopagebreak Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}\index{Delays defines@{Delays defines}!msDelayStart@{msDelayStart}} +\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25}\label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25} +\index{Delays defines@{Delays defines}!msDelayStart@{msDelayStart}} \index{msDelayStart@{msDelayStart}!Delays defines@{Delays defines}} \doxysubsubsubsubsection{\texorpdfstring{msDelayStart}{msDelayStart}} -{\footnotesize\ttfamily \label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga8a5051b1292d1019fe8dd3fc5521ab25} -\#define ms\+Delay\+Start(\begin{DoxyParamCaption}\item[{}]{\+\_\+pvar\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define ms\+Delay\+Start(\begin{DoxyParamCaption}\item[{}]{\+\_\+pvar\+\_\+ }\end{DoxyParamCaption})~\texorpdfstring{$\ast$}{*}(\+\_\+pvar\+\_\+) = HAL\+\_\+\+Get\+Tick()} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{*(\_pvar\_)\ =\ HAL\_GetTick()} - -\end{DoxyCode} Начать отсчет задержки. @@ -92,17 +80,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00082}{82}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00094}{94}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}\index{Delays defines@{Delays defines}!msDelayWhileActive@{msDelayWhileActive}} +\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85}\label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85} +\index{Delays defines@{Delays defines}!msDelayWhileActive@{msDelayWhileActive}} \index{msDelayWhileActive@{msDelayWhileActive}!Delays defines@{Delays defines}} \doxysubsubsubsubsection{\texorpdfstring{msDelayWhileActive}{msDelayWhileActive}} -{\footnotesize\ttfamily \label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_ga0b97e172659a59ee4fa56f851643ae85} -\#define ms\+Delay\+While\+Active(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+}{, }\item[{}]{\+\_\+pvar\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define ms\+Delay\+While\+Active(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+, }\item[{}]{\+\_\+pvar\+\_\+ }\end{DoxyParamCaption})~(HAL\+\_\+\+Get\+Tick() -\/ \texorpdfstring{$\ast$}{*}(\+\_\+pvar\+\_\+) $<$ \+\_\+ms\+\_\+)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(HAL\_GetTick()\ -\/\ *(\_pvar\_)\ <\ \_ms\_)} - -\end{DoxyCode} Проверяет, активна ли задержка. @@ -132,17 +115,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00094}{94}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00111}{111}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}\index{Delays defines@{Delays defines}!msDelayWaitDone@{msDelayWaitDone}} +\Hypertarget{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518}\label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518} +\index{Delays defines@{Delays defines}!msDelayWaitDone@{msDelayWaitDone}} \index{msDelayWaitDone@{msDelayWaitDone}!Delays defines@{Delays defines}} \doxysubsubsubsubsection{\texorpdfstring{msDelayWaitDone}{msDelayWaitDone}} -{\footnotesize\ttfamily \label{group___d_e_l_a_y_s___d_e_f_i_n_e_s_gaed082c07b9fc4d1894330d885b9b5518} -\#define ms\+Delay\+Wait\+Done(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+}{, }\item[{}]{\+\_\+pvar\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define ms\+Delay\+Wait\+Done(\begin{DoxyParamCaption}\item[{}]{\+\_\+ms\+\_\+, }\item[{}]{\+\_\+pvar\+\_\+ }\end{DoxyParamCaption})~(HAL\+\_\+\+Get\+Tick() -\/ \texorpdfstring{$\ast$}{*}(\+\_\+pvar\+\_\+) $>$= \+\_\+ms\+\_\+)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(HAL\_GetTick()\ -\/\ *(\_pvar\_)\ >=\ \_ms\_)} - -\end{DoxyCode} Проверяет, завершилась ли задержка. diff --git a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex index c4cbba2..54906b7 100644 --- a/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Error Handler defines } +\doxysubsubsection{Error Handler defines} \hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}{}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s}\index{Error Handler defines@{Error Handler defines}} @@ -15,17 +15,17 @@ Collaboration diagram for Error Handler defines\+:\nopagebreak \doxysubsubsubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}{My\+Libs\+\_\+\+Error\+\_\+\+Handler}}(params) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}{My\+Libs\+\_\+\+Error\+\_\+\+Handler}}(params)~Error\+\_\+\+Handler(params) \begin{DoxyCompactList}\small\item\em Error\+\_\+\+Handler который будет вызыватся в библиотеке \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}{check\+\_\+null\+\_\+ptr\+\_\+1}}(p1) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}{check\+\_\+null\+\_\+ptr\+\_\+1}}(p1)~(p1 == NULL) \begin{DoxyCompactList}\small\item\em Проверить один указатель на NULL. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\+\_\+null\+\_\+ptr\+\_\+2}}(p1, p2) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}{check\+\_\+null\+\_\+ptr\+\_\+2}}(p1, p2)~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& p2 == NULL)) \begin{DoxyCompactList}\small\item\em Проверить два указателя на NULL. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}{check\+\_\+null\+\_\+ptr\+\_\+3}}(p1, p2, p3) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}{check\+\_\+null\+\_\+ptr\+\_\+3}}(p1, p2, p3)~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& p3 == NULL)))) \begin{DoxyCompactList}\small\item\em Проверить три указателя на NULL. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}{check\+\_\+null\+\_\+ptr\+\_\+4}}(p1, p2, p3, p4) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}{check\+\_\+null\+\_\+ptr\+\_\+4}}(p1, p2, p3, p4)~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& ((p3 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p3 != NULL \&\& p4 == NULL)))))) \begin{DoxyCompactList}\small\item\em Проверить четыре указателя на NULL. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}{check\+\_\+null\+\_\+ptr\+\_\+5}}(p1, p2, p3, p4, p5) +\#define \mbox{\hyperlink{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}{check\+\_\+null\+\_\+ptr\+\_\+5}}(p1, p2, p3, p4, p5)~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& ((p3 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p3 != NULL \&\& ((p4 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p4 != NULL \&\& p5 == NULL)))))))) \begin{DoxyCompactList}\small\item\em Проверить пять указателей на NULL. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsubsubsection*{Functions} \begin{DoxyCompactItemize} @@ -40,20 +40,13 @@ void {\bfseries Error\+\_\+\+Handler} (void) -\label{doc-define-members} -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}\index{Error Handler defines@{Error Handler defines}!MyLibs\_Error\_Handler@{MyLibs\_Error\_Handler}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f} +\index{Error Handler defines@{Error Handler defines}!MyLibs\_Error\_Handler@{MyLibs\_Error\_Handler}} \index{MyLibs\_Error\_Handler@{MyLibs\_Error\_Handler}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{MyLibs\_Error\_Handler}{MyLibs\_Error\_Handler}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gae110df81afd885a390bbeb152d7b709f} -\#define My\+Libs\+\_\+\+Error\+\_\+\+Handler(\begin{DoxyParamCaption}\item[{}]{params}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define My\+Libs\+\_\+\+Error\+\_\+\+Handler(\begin{DoxyParamCaption}\item[{}]{params }\end{DoxyParamCaption})~Error\+\_\+\+Handler(params)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{Error\_Handler(params)} - -\end{DoxyCode} Error\+\_\+\+Handler который будет вызыватся в библиотеке @@ -62,17 +55,12 @@ Error\+\_\+\+Handler который будет вызыватся в библи Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00031}{31}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_1@{check\_null\_ptr\_1}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9} +\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_1@{check\_null\_ptr\_1}} \index{check\_null\_ptr\_1@{check\_null\_ptr\_1}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{check\_null\_ptr\_1}{check\_null\_ptr\_1}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga5d066a5b9781f9437e75d98677489eb9} -\#define check\+\_\+null\+\_\+ptr\+\_\+1(\begin{DoxyParamCaption}\item[{}]{p1}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define check\+\_\+null\+\_\+ptr\+\_\+1(\begin{DoxyParamCaption}\item[{}]{p1 }\end{DoxyParamCaption})~(p1 == NULL)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(p1\ ==\ NULL)} - -\end{DoxyCode} Проверить один указатель на NULL. @@ -81,17 +69,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00031}{31}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00038}{38}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_2@{check\_null\_ptr\_2}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3} +\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_2@{check\_null\_ptr\_2}} \index{check\_null\_ptr\_2@{check\_null\_ptr\_2}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{check\_null\_ptr\_2}{check\_null\_ptr\_2}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga27b363f333cacdccc15f5174e096b5b3} -\#define check\+\_\+null\+\_\+ptr\+\_\+2(\begin{DoxyParamCaption}\item[{}]{p1}{, }\item[{}]{p2}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define check\+\_\+null\+\_\+ptr\+\_\+2(\begin{DoxyParamCaption}\item[{}]{p1, }\item[{}]{p2 }\end{DoxyParamCaption})~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& p2 == NULL))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ p2\ ==\ NULL))} - -\end{DoxyCode} Проверить два указателя на NULL. @@ -100,17 +83,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00038}{38}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00041}{41}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_3@{check\_null\_ptr\_3}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2} +\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_3@{check\_null\_ptr\_3}} \index{check\_null\_ptr\_3@{check\_null\_ptr\_3}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{check\_null\_ptr\_3}{check\_null\_ptr\_3}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga838b40542faa9aa273d18f921b21fda2} -\#define check\+\_\+null\+\_\+ptr\+\_\+3(\begin{DoxyParamCaption}\item[{}]{p1}{, }\item[{}]{p2}{, }\item[{}]{p3}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define check\+\_\+null\+\_\+ptr\+\_\+3(\begin{DoxyParamCaption}\item[{}]{p1, }\item[{}]{p2, }\item[{}]{p3 }\end{DoxyParamCaption})~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& p3 == NULL))))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ p3\ ==\ NULL))))} - -\end{DoxyCode} Проверить три указателя на NULL. @@ -119,17 +97,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00041}{41}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00044}{44}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_4@{check\_null\_ptr\_4}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254} +\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_4@{check\_null\_ptr\_4}} \index{check\_null\_ptr\_4@{check\_null\_ptr\_4}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{check\_null\_ptr\_4}{check\_null\_ptr\_4}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_ga590973be111afc3f9ba15e6939530254} -\#define check\+\_\+null\+\_\+ptr\+\_\+4(\begin{DoxyParamCaption}\item[{}]{p1}{, }\item[{}]{p2}{, }\item[{}]{p3}{, }\item[{}]{p4}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define check\+\_\+null\+\_\+ptr\+\_\+4(\begin{DoxyParamCaption}\item[{}]{p1, }\item[{}]{p2, }\item[{}]{p3, }\item[{}]{p4 }\end{DoxyParamCaption})~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& ((p3 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p3 != NULL \&\& p4 == NULL))))))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ p4\ ==\ NULL))))))} - -\end{DoxyCode} Проверить четыре указателя на NULL. @@ -138,17 +111,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00044}{44}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00047}{47}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_5@{check\_null\_ptr\_5}} +\Hypertarget{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490}\label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490} +\index{Error Handler defines@{Error Handler defines}!check\_null\_ptr\_5@{check\_null\_ptr\_5}} \index{check\_null\_ptr\_5@{check\_null\_ptr\_5}!Error Handler defines@{Error Handler defines}} \doxysubsubsubsubsection{\texorpdfstring{check\_null\_ptr\_5}{check\_null\_ptr\_5}} -{\footnotesize\ttfamily \label{group___e_r_r_o_r___h_a_n_d_l_e_r___d_e_f_i_n_e_s_gaab0aafd7a4a21ec4f338b19269f65490} -\#define check\+\_\+null\+\_\+ptr\+\_\+5(\begin{DoxyParamCaption}\item[{}]{p1}{, }\item[{}]{p2}{, }\item[{}]{p3}{, }\item[{}]{p4}{, }\item[{}]{p5}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define check\+\_\+null\+\_\+ptr\+\_\+5(\begin{DoxyParamCaption}\item[{}]{p1, }\item[{}]{p2, }\item[{}]{p3, }\item[{}]{p4, }\item[{}]{p5 }\end{DoxyParamCaption})~((p1 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p1 != NULL \&\& ((p2 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p2 != NULL \&\& ((p3 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p3 != NULL \&\& ((p4 == NULL) \texorpdfstring{$\vert$}{|}\texorpdfstring{$\vert$}{|} (p4 != NULL \&\& p5 == NULL))))))))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((p1\ ==\ NULL)\ ||\ (p1\ !=\ NULL\ \&\&\ ((p2\ ==\ NULL)\ ||\ (p2\ !=\ NULL\ \&\&\ ((p3\ ==\ NULL)\ ||\ (p3\ !=\ NULL\ \&\&\ ((p4\ ==\ NULL)\ ||\ (p4\ !=\ NULL\ \&\&\ p5\ ==\ NULL))))))))} - -\end{DoxyCode} Проверить пять указателей на NULL. diff --git a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex index e26da1c..82a20c6 100644 --- a/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex +++ b/Doc/latex/group___e_v_o_l_v_e___c_o_n_f_i_g.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Evolve configs } +\doxysubsubsection{Evolve configs} \hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g}{}\label{group___e_v_o_l_v_e___c_o_n_f_i_g}\index{Evolve configs@{Evolve configs}} @@ -28,14 +28,12 @@ Collaboration diagram for Evolve configs\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}\index{Evolve configs@{Evolve configs}!ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}} +\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}\label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47} +\index{Evolve configs@{Evolve configs}!ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}} \index{ENABLE\_EVOLVE\_OPTIMIZATION@{ENABLE\_EVOLVE\_OPTIMIZATION}!Evolve configs@{Evolve configs}} \doxysubsubsubsubsection{\texorpdfstring{ENABLE\_EVOLVE\_OPTIMIZATION}{ENABLE\_EVOLVE\_OPTIMIZATION}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47} -\#define ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} +{\footnotesize\ttfamily \#define ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} @@ -45,11 +43,11 @@ Collaboration diagram for Evolve configs\+:\nopagebreak Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}} +\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}\label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee} +\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}} \index{EVOLVE\_MAX\_PARAMS@{EVOLVE\_MAX\_PARAMS}!Evolve configs@{Evolve configs}} \doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_PARAMS}{EVOLVE\_MAX\_PARAMS}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee} -\#define EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS~20} +{\footnotesize\ttfamily \#define EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS~20} @@ -59,11 +57,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00064}{64}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00065}{65}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}} +\Hypertarget{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}\label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971} +\index{Evolve configs@{Evolve configs}!EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}} \index{EVOLVE\_MAX\_CANDIDATES@{EVOLVE\_MAX\_CANDIDATES}!Evolve configs@{Evolve configs}} \doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MAX\_CANDIDATES}{EVOLVE\_MAX\_CANDIDATES}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971} -\#define EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES~100} +{\footnotesize\ttfamily \#define EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES~100} diff --git a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex index 0ca1115..5d69cd9 100644 --- a/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex +++ b/Doc/latex/group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Evolve optimizer } +\doxysubsubsection{Evolve optimizer} \hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}\index{Evolve optimizer@{Evolve optimizer}} @@ -20,18 +20,24 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \doxysubsubsubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\+\_\+\+SCALE\+\_\+\+Q16}}(x, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\+\_\+\+UNSCALE\+\_\+\+Q16}}(q16\+\_\+val, min\+\_\+val, max\+\_\+val) -\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}() -\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\end{DoxyCompactItemize} +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x, min\+\_\+val, max\+\_\+val)~(((float)(x) -\/ (float)(min\+\_\+val)) / ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val))) +\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val, min\+\_\+val, max\+\_\+val)~(((float)(val)) \texorpdfstring{$\ast$}{*} ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val)) + (float)(min\+\_\+val)) +\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}{local\+\_\+time}}()~HAL\+\_\+\+Get\+Tick() +\begin{DoxyCompactList}\small\item\em Локальное время \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10 +\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100 +\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2 +\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsubsubsection*{Functions} \begin{DoxyCompactItemize} \item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, uint16\+\_\+t iq\+\_\+mutation, int32\+\_\+t \texorpdfstring{$\ast$}{*}start\+\_\+params) +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params) \begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, int32\+\_\+t \texorpdfstring{$\ast$}{*}params, int32\+\_\+t loss) +\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss) \begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -51,6 +57,9 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}, то вставляются заглушки, никак не влияющие на параметры и остальную программу \item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров \item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения +\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%) +\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%) +\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений \end{DoxyItemize} \begin{DoxyParagraph}{Пример использования\+:} @@ -60,8 +69,8 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}} \DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_CANDIDATES\ \ \ \ 100}} \DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}} -\DoxyCodeLine{\textcolor{preprocessor}{\#define\ IQ\_MUTATION\ \ \ \ \ (PARAM\_SCALE\_Q16(0.1,\ 0,\ 1))}} -\DoxyCodeLine{int32\_t\ params[N\_PARAMS];} +\DoxyCodeLine{\textcolor{preprocessor}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}} +\DoxyCodeLine{\textcolor{keywordtype}{float}\ params[N\_PARAMS];} \DoxyCodeLine{\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ optimizer;} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{comment}{//\ Формирование\ параметров}} @@ -69,99 +78,123 @@ struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \DoxyCodeLine{\textcolor{keywordtype}{float}\ \ \ \ \ param\_f\ \ \ =\ 0.01f;} \DoxyCodeLine{uint8\_t\ \ \ param\_u8\ \ =\ 40;} \DoxyCodeLine{int16\_t\ \ \ param\_i16\ =\ 1600;} -\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_u16,\ \ 0,\ \ \ \ \ \ 1000);} -\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);} -\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_u8,\ \ \ 10,\ \ \ \ \ 100);} -\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}{PARAM\_SCALE\_Q16}}(param\_i16,\ \ 500,\ \ \ \ 5000);} +\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);} +\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);} +\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);} +\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}} -\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ IQ\_MUTATION,\ params);} +\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}} -\DoxyCodeLine{int32\_t\ loss\ =\ calc\_iq\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров}} -\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}{EvolveOptimizer\_Step}}(\&optimizer,\ params,\ loss);} +\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}} +\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\&optimizer,\ params,\ loss);} \DoxyCodeLine{} \DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}} -\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[0],\ \ 0,\ \ \ \ \ \ 1000);} -\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[1],\ \ 0.001f,\ 0.1f);} -\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[2],\ \ 10,\ \ \ \ \ 100);} -\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}{PARAM\_UNSCALE\_Q16}}(params[3],\ \ 500,\ \ \ \ 5000);} +\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);} +\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[1],\ \ 0.001f,\ 0.1f);} +\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);} +\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);} \end{DoxyCode} + ~\newline \end{DoxyParagraph} -\label{doc-define-members} -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE\_Q16@{PARAM\_SCALE\_Q16}} -\index{PARAM\_SCALE\_Q16@{PARAM\_SCALE\_Q16}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE\_Q16}{PARAM\_SCALE\_Q16}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaff223481fcffea77394a331afde29fdc} -\#define PARAM\+\_\+\+SCALE\+\_\+\+Q16(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} - -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((int32\_t)((((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))\ *\ 65536.0f))} - -\end{DoxyCode} - - -Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в Q16.\+16 \mbox{[}0, 65536) +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e} +\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE@{PARAM\_SCALE}} +\index{PARAM\_SCALE@{PARAM\_SCALE}!Evolve optimizer@{Evolve optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}} +{\footnotesize\ttfamily \#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x, }\item[{}]{min\+\_\+val, }\item[{}]{max\+\_\+val }\end{DoxyParamCaption})~(((float)(x) -\/ (float)(min\+\_\+val)) / ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val)))} -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00071}{71}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. - -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE\_Q16@{PARAM\_UNSCALE\_Q16}} -\index{PARAM\_UNSCALE\_Q16@{PARAM\_UNSCALE\_Q16}!Evolve optimizer@{Evolve optimizer}} -\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE\_Q16}{PARAM\_UNSCALE\_Q16}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga71a0c240c667e976d9caef391ab767ba} -\#define PARAM\+\_\+\+UNSCALE\+\_\+\+Q16(\begin{DoxyParamCaption}\item[{}]{q16\+\_\+val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})} - -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(((float)(q16\_val)\ /\ 65536.0f)\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))} - -\end{DoxyCode} - - -Обратное линейное масштабирование Q16.\+16 значения в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. +Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00077}{77}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}\index{Evolve optimizer@{Evolve optimizer}!local\_time@{local\_time}} +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3} +\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}} +\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Evolve optimizer@{Evolve optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}} +{\footnotesize\ttfamily \#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val, }\item[{}]{min\+\_\+val, }\item[{}]{max\+\_\+val }\end{DoxyParamCaption})~(((float)(val)) \texorpdfstring{$\ast$}{*} ((float)(max\+\_\+val) -\/ (float)(min\+\_\+val)) + (float)(min\+\_\+val))} + + + +Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653} +\index{Evolve optimizer@{Evolve optimizer}!local\_time@{local\_time}} \index{local\_time@{local\_time}!Evolve optimizer@{Evolve optimizer}} \doxysubsubsubsubsection{\texorpdfstring{local\_time}{local\_time}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga9c853b02c22f26023c34d1d404b6d653} -\#define local\+\_\+time(\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define local\+\_\+time(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~HAL\+\_\+\+Get\+Tick()} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{HAL\_GetTick()} - -\end{DoxyCode} Локальное время -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00081}{81}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00083}{83}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6} +\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}} +\index{EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}!Evolve optimizer@{Evolve optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MIN\_PCT}{EVOLVE\_MUTATION\_MIN\_PCT}} +{\footnotesize\ttfamily \#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10} + + + +Минимальная мутация (в процентах от Loss) + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc} +\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}} +\index{EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}!Evolve optimizer@{Evolve optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MAX\_PCT}{EVOLVE\_MUTATION\_MAX\_PCT}} +{\footnotesize\ttfamily \#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100} + + + +Максимальная мутация (в процентах от Loss) + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. + +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb} +\index{Evolve optimizer@{Evolve optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}} +\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Evolve optimizer@{Evolve optimizer}} +\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}} +{\footnotesize\ttfamily \#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2} + + + +Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) + + + +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. -\label{doc-func-members} -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-func-members} \doxysubsubsubsection{Function Documentation} -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Init@{EvolveOptimizer\_Init}} +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21} +\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Init@{EvolveOptimizer\_Init}} \index{EvolveOptimizer\_Init@{EvolveOptimizer\_Init}!Evolve optimizer@{Evolve optimizer}} \doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Init()}{EvolveOptimizer\_Init()}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gadaf3a90724197e1737d5c70c7bcc75e1} -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{uint16\+\_\+t}]{iq\+\_\+mutation}{, }\item[{int32\+\_\+t \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt, }\item[{uint16\+\_\+t}]{n\+\_\+params, }\item[{uint16\+\_\+t}]{n\+\_\+cand, }\item[{uint16\+\_\+t}]{n\+\_\+best, }\item[{float}]{mutation\+\_\+amp, }\item[{float \texorpdfstring{$\ast$}{*}}]{start\+\_\+params }\end{DoxyParamCaption})} @@ -177,9 +210,9 @@ Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00081}{81}} of \hline {\em n\+\_\+best} & Количество лучших, усредняемых \\ \hline -{\em iq\+\_\+mutation} & Амплитуда мутации в Q16.\+16 \\ +{\em mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\ \hline -{\em start\+\_\+params} & Начальные параметры (Q16.\+16) \\ +{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} @@ -187,13 +220,13 @@ Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00081}{81}} of \end{DoxyReturn} -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00132}{132}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00148}{148}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. -\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Step@{EvolveOptimizer\_Step}} +\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef} +\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Step@{EvolveOptimizer\_Step}} \index{EvolveOptimizer\_Step@{EvolveOptimizer\_Step}!Evolve optimizer@{Evolve optimizer}} \doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Step()}{EvolveOptimizer\_Step()}} -{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga75acd71c85d4e60dc0eb31bc5780086a} -\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{int32\+\_\+t \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{int32\+\_\+t}]{loss}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt, }\item[{float \texorpdfstring{$\ast$}{*}}]{params, }\item[{float}]{loss }\end{DoxyParamCaption})} @@ -205,7 +238,7 @@ Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00132}{132}} of \hline {\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\ \hline -{\em loss} & Loss текущего кандидата (Q16.\+16) \\ +{\em loss} & Loss текущего кандидата \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} @@ -218,5 +251,5 @@ Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00132}{132}} of \end{DoxyNote} -Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00187}{187}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. +Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00216}{216}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}. diff --git a/Doc/latex/group___g_p_i_o___i_n_i_t.tex b/Doc/latex/group___g_p_i_o___i_n_i_t.tex index e399d87..860c2ce 100644 --- a/Doc/latex/group___g_p_i_o___i_n_i_t.tex +++ b/Doc/latex/group___g_p_i_o___i_n_i_t.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsubsection{Init defines } +\doxysubsubsubsubsection{Init defines} \hypertarget{group___g_p_i_o___i_n_i_t}{}\label{group___g_p_i_o___i_n_i_t}\index{Init defines@{Init defines}} @@ -32,14 +32,12 @@ Collaboration diagram for Init defines\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___g_p_i_o___i_n_i_t_doc-define-members} \doxysubsubsubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___g_p_i_o___i_n_i_t_ga1d42e219765ec526d99e306638ac0023}\index{Init defines@{Init defines}!LED\_PWM\_TICKS@{LED\_PWM\_TICKS}} +\Hypertarget{group___g_p_i_o___i_n_i_t_ga1d42e219765ec526d99e306638ac0023}\label{group___g_p_i_o___i_n_i_t_ga1d42e219765ec526d99e306638ac0023} +\index{Init defines@{Init defines}!LED\_PWM\_TICKS@{LED\_PWM\_TICKS}} \index{LED\_PWM\_TICKS@{LED\_PWM\_TICKS}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{LED\_PWM\_TICKS}{LED\_PWM\_TICKS}} -{\footnotesize\ttfamily \label{group___g_p_i_o___i_n_i_t_ga1d42e219765ec526d99e306638ac0023} -\#define LED\+\_\+\+PWM\+\_\+\+TICKS~15} +{\footnotesize\ttfamily \#define LED\+\_\+\+PWM\+\_\+\+TICKS~15} @@ -49,11 +47,11 @@ Collaboration diagram for Init defines\+:\nopagebreak Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00031}{31}} of file \mbox{\hyperlink{general__gpio_8h_source}{general\+\_\+gpio.\+h}}. -\Hypertarget{group___g_p_i_o___i_n_i_t_gaf2e697ac60e05813d45ea2c9c9e79c25}\index{Init defines@{Init defines}!LED\_ON@{LED\_ON}} +\Hypertarget{group___g_p_i_o___i_n_i_t_gaf2e697ac60e05813d45ea2c9c9e79c25}\label{group___g_p_i_o___i_n_i_t_gaf2e697ac60e05813d45ea2c9c9e79c25} +\index{Init defines@{Init defines}!LED\_ON@{LED\_ON}} \index{LED\_ON@{LED\_ON}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{LED\_ON}{LED\_ON}} -{\footnotesize\ttfamily \label{group___g_p_i_o___i_n_i_t_gaf2e697ac60e05813d45ea2c9c9e79c25} -\#define LED\+\_\+\+ON~1} +{\footnotesize\ttfamily \#define LED\+\_\+\+ON~1} @@ -63,11 +61,11 @@ Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00031}{31}} of file Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00035}{35}} of file \mbox{\hyperlink{general__gpio_8h_source}{general\+\_\+gpio.\+h}}. -\Hypertarget{group___g_p_i_o___i_n_i_t_ga80700bb63bd56ebabbb4728aa433fd29}\index{Init defines@{Init defines}!LED\_OFF@{LED\_OFF}} +\Hypertarget{group___g_p_i_o___i_n_i_t_ga80700bb63bd56ebabbb4728aa433fd29}\label{group___g_p_i_o___i_n_i_t_ga80700bb63bd56ebabbb4728aa433fd29} +\index{Init defines@{Init defines}!LED\_OFF@{LED\_OFF}} \index{LED\_OFF@{LED\_OFF}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{LED\_OFF}{LED\_OFF}} -{\footnotesize\ttfamily \label{group___g_p_i_o___i_n_i_t_ga80700bb63bd56ebabbb4728aa433fd29} -\#define LED\+\_\+\+OFF~0} +{\footnotesize\ttfamily \#define LED\+\_\+\+OFF~0} @@ -77,11 +75,11 @@ Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00035}{35}} of file Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00038}{38}} of file \mbox{\hyperlink{general__gpio_8h_source}{general\+\_\+gpio.\+h}}. -\Hypertarget{group___g_p_i_o___i_n_i_t_ga19d9e3aced311179a2914e0c9b13d0f9}\index{Init defines@{Init defines}!SW\_ON@{SW\_ON}} +\Hypertarget{group___g_p_i_o___i_n_i_t_ga19d9e3aced311179a2914e0c9b13d0f9}\label{group___g_p_i_o___i_n_i_t_ga19d9e3aced311179a2914e0c9b13d0f9} +\index{Init defines@{Init defines}!SW\_ON@{SW\_ON}} \index{SW\_ON@{SW\_ON}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{SW\_ON}{SW\_ON}} -{\footnotesize\ttfamily \label{group___g_p_i_o___i_n_i_t_ga19d9e3aced311179a2914e0c9b13d0f9} -\#define SW\+\_\+\+ON~1} +{\footnotesize\ttfamily \#define SW\+\_\+\+ON~1} @@ -91,11 +89,11 @@ Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00038}{38}} of file Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00042}{42}} of file \mbox{\hyperlink{general__gpio_8h_source}{general\+\_\+gpio.\+h}}. -\Hypertarget{group___g_p_i_o___i_n_i_t_gacd8900c9ec0efde1da3253b718574067}\index{Init defines@{Init defines}!SW\_OFF@{SW\_OFF}} +\Hypertarget{group___g_p_i_o___i_n_i_t_gacd8900c9ec0efde1da3253b718574067}\label{group___g_p_i_o___i_n_i_t_gacd8900c9ec0efde1da3253b718574067} +\index{Init defines@{Init defines}!SW\_OFF@{SW\_OFF}} \index{SW\_OFF@{SW\_OFF}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{SW\_OFF}{SW\_OFF}} -{\footnotesize\ttfamily \label{group___g_p_i_o___i_n_i_t_gacd8900c9ec0efde1da3253b718574067} -\#define SW\+\_\+\+OFF~0} +{\footnotesize\ttfamily \#define SW\+\_\+\+OFF~0} diff --git a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex index c974e48..07a864c 100644 --- a/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex +++ b/Doc/latex/group___l_i_b_s___c_o_n_f_i_g.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Libraries configs } +\doxysubsubsection{Libraries configs} \hypertarget{group___l_i_b_s___c_o_n_f_i_g}{}\label{group___l_i_b_s___c_o_n_f_i_g}\index{Libraries configs@{Libraries configs}} @@ -32,14 +32,12 @@ Collaboration diagram for Libraries configs\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}\index{Libraries configs@{Libraries configs}!INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66}\label{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66} +\index{Libraries configs@{Libraries configs}!INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}} \index{INCLUDE\_EVOLVE\_OPTIMIZER@{INCLUDE\_EVOLVE\_OPTIMIZER}!Libraries configs@{Libraries configs}} \doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_EVOLVE\_OPTIMIZER}{INCLUDE\_EVOLVE\_OPTIMIZER}} -{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga66560656d080d6551627a19dfb847c66} -\#define INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER} +{\footnotesize\ttfamily \#define INCLUDE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZER} @@ -49,11 +47,11 @@ Collaboration diagram for Libraries configs\+:\nopagebreak Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}\index{Libraries configs@{Libraries configs}!INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be}\label{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be} +\index{Libraries configs@{Libraries configs}!INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}} \index{INCLUDE\_BIT\_ACCESS\_LIB@{INCLUDE\_BIT\_ACCESS\_LIB}!Libraries configs@{Libraries configs}} \doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_BIT\_ACCESS\_LIB}{INCLUDE\_BIT\_ACCESS\_LIB}} -{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_gaf4ddb2a71ec0d05c2480e197cd17c0be} -\#define INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB} +{\footnotesize\ttfamily \#define INCLUDE\+\_\+\+BIT\+\_\+\+ACCESS\+\_\+\+LIB} @@ -63,11 +61,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00080}{80}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00081}{81}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32}\label{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32} +\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}} \index{INCLUDE\_TRACKERS\_LIB@{INCLUDE\_TRACKERS\_LIB}!Libraries configs@{Libraries configs}} \doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_TRACKERS\_LIB}{INCLUDE\_TRACKERS\_LIB}} -{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga4403055986b70bb02b8d37073a122e32} -\#define INCLUDE\+\_\+\+TRACKERS\+\_\+\+LIB} +{\footnotesize\ttfamily \#define INCLUDE\+\_\+\+TRACKERS\+\_\+\+LIB} @@ -77,11 +75,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00081}{81}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7}\label{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7} +\index{Libraries configs@{Libraries configs}!INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}} \index{INCLUDE\_TRACE\_LIB@{INCLUDE\_TRACE\_LIB}!Libraries configs@{Libraries configs}} \doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_TRACE\_LIB}{INCLUDE\_TRACE\_LIB}} -{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga0a3ca94b616997069dd53e2c6c2687d7} -\#define INCLUDE\+\_\+\+TRACE\+\_\+\+LIB} +{\footnotesize\ttfamily \#define INCLUDE\+\_\+\+TRACE\+\_\+\+LIB} @@ -91,11 +89,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00082}{82}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00083}{83}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}\index{Libraries configs@{Libraries configs}!INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}} +\Hypertarget{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281}\label{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281} +\index{Libraries configs@{Libraries configs}!INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}} \index{INCLUDE\_GENERAL\_PERIPH\_LIBS@{INCLUDE\_GENERAL\_PERIPH\_LIBS}!Libraries configs@{Libraries configs}} \doxysubsubsubsubsection{\texorpdfstring{INCLUDE\_GENERAL\_PERIPH\_LIBS}{INCLUDE\_GENERAL\_PERIPH\_LIBS}} -{\footnotesize\ttfamily \label{group___l_i_b_s___c_o_n_f_i_g_ga181a46326e46b60afb160190832c7281} -\#define INCLUDE\+\_\+\+GENERAL\+\_\+\+PERIPH\+\_\+\+LIBS} +{\footnotesize\ttfamily \#define INCLUDE\+\_\+\+GENERAL\+\_\+\+PERIPH\+\_\+\+LIBS} diff --git a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex index 775dad4..9604806 100644 --- a/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex +++ b/Doc/latex/group___m_y___l_i_b_s___g_p_i_o.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{GPIO Tools } +\doxysubsubsection{GPIO Tools} \hypertarget{group___m_y___l_i_b_s___g_p_i_o}{}\label{group___m_y___l_i_b_s___g_p_i_o}\index{GPIO Tools@{GPIO Tools}} diff --git a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex index f539f3f..6b4ceeb 100644 --- a/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex +++ b/Doc/latex/group___m_y___l_i_b_s___t_i_m.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{TIM Tools } +\doxysubsubsection{TIM Tools} \hypertarget{group___m_y___l_i_b_s___t_i_m}{}\label{group___m_y___l_i_b_s___t_i_m}\index{TIM Tools@{TIM Tools}} diff --git a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex index cd0caf7..6be6234 100644 --- a/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___a_l_l.tex @@ -1,4 +1,4 @@ -\doxysection{My Libs } +\doxysection{My Libs} \hypertarget{group___m_y_l_i_b_s___a_l_l}{}\label{group___m_y_l_i_b_s___a_l_l}\index{My Libs@{My Libs}} diff --git a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex index 94de885..1ccb529 100644 --- a/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex +++ b/Doc/latex/group___m_y_l_i_b_s___c_o_n_f_i_g.tex @@ -1,4 +1,4 @@ -\doxysubsection{Configs } +\doxysubsection{Configs} \hypertarget{group___m_y_l_i_b_s___c_o_n_f_i_g}{}\label{group___m_y_l_i_b_s___c_o_n_f_i_g}\index{Configs@{Configs}} diff --git a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex index 2216629..a144e29 100644 --- a/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___m_y_l_i_b_s___d_e_f_i_n_e_s.tex @@ -1,4 +1,4 @@ -\doxysubsection{General Tools } +\doxysubsection{General Tools} \hypertarget{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{}\label{group___m_y_l_i_b_s___d_e_f_i_n_e_s}\index{General Tools@{General Tools}} diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex index ca64b35..dfa5778 100644 --- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{General tools } +\doxysubsubsubsection{General tools} \hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}{}\label{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}\index{General tools@{General tools}} @@ -21,7 +21,7 @@ Collaboration diagram for General tools\+:\nopagebreak \begin{DoxyCompactItemize} \item \#define \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga580b842096340b066c28b24d6b315be6}{GPIO\+\_\+\+TIM\+\_\+\+Alternate\+\_\+\+Mapping}}(INSTANCE) -\begin{DoxyCompactList}\small\item\em Маппинг альтернативной функции SPI между GPIO. \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{DoxyCompactList}\small\item\em Маппинг альтернативной функции TIM между GPIO. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsubsubsubsection*{Functions} \begin{DoxyCompactItemize} \item @@ -34,14 +34,12 @@ HAL\+\_\+\+Status\+Type\+Def \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___g_ -\label{doc-define-members} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_doc-define-members} \doxysubsubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga580b842096340b066c28b24d6b315be6}\index{General tools@{General tools}!GPIO\_TIM\_Alternate\_Mapping@{GPIO\_TIM\_Alternate\_Mapping}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga580b842096340b066c28b24d6b315be6}\label{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga580b842096340b066c28b24d6b315be6} +\index{General tools@{General tools}!GPIO\_TIM\_Alternate\_Mapping@{GPIO\_TIM\_Alternate\_Mapping}} \index{GPIO\_TIM\_Alternate\_Mapping@{GPIO\_TIM\_Alternate\_Mapping}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_TIM\_Alternate\_Mapping}{GPIO\_TIM\_Alternate\_Mapping}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga580b842096340b066c28b24d6b315be6} -\#define GPIO\+\_\+\+TIM\+\_\+\+Alternate\+\_\+\+Mapping(\begin{DoxyParamCaption}\item[{}]{INSTANCE}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define GPIO\+\_\+\+TIM\+\_\+\+Alternate\+\_\+\+Mapping(\begin{DoxyParamCaption}\item[{}]{INSTANCE }\end{DoxyParamCaption})} {\bfseries Value\+:} \begin{DoxyCode}{0} @@ -54,22 +52,20 @@ HAL\+\_\+\+Status\+Type\+Def \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___g_ \end{DoxyCode} -Маппинг альтернативной функции SPI между GPIO. +Маппинг альтернативной функции TIM между GPIO. + -Маппинг альтернативной функции TIM между GPIO Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00069}{69}} of file \mbox{\hyperlink{general__gpio_8h_source}{general\+\_\+gpio.\+h}}. -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga962f010f783b81fcdd27eb6b53db28e6}\index{General tools@{General tools}!GPIO\_Clock\_Enable@{GPIO\_Clock\_Enable}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga962f010f783b81fcdd27eb6b53db28e6}\label{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga962f010f783b81fcdd27eb6b53db28e6} +\index{General tools@{General tools}!GPIO\_Clock\_Enable@{GPIO\_Clock\_Enable}} \index{GPIO\_Clock\_Enable@{GPIO\_Clock\_Enable}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_Clock\_Enable()}{GPIO\_Clock\_Enable()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l_ga962f010f783b81fcdd27eb6b53db28e6} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+Clock\+\_\+\+Enable (\begin{DoxyParamCaption}\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+Clock\+\_\+\+Enable (\begin{DoxyParamCaption}\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex index 4dbc044..78a19ef 100644 --- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex +++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___l_e_d_s.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{LED tools } +\doxysubsubsubsection{LED tools} \hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}{}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}\index{LED tools@{LED tools}} @@ -50,20 +50,18 @@ void \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gad6e6189824406c4d -\label{doc-enum-members} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_doc-enum-members} \doxysubsubsubsubsection{Enumeration Type Documentation} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1}\index{LED tools@{LED tools}!GPIO\_LEDStateTypeDef@{GPIO\_LEDStateTypeDef}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1} +\index{LED tools@{LED tools}!GPIO\_LEDStateTypeDef@{GPIO\_LEDStateTypeDef}} \index{GPIO\_LEDStateTypeDef@{GPIO\_LEDStateTypeDef}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LEDStateTypeDef}{GPIO\_LEDStateTypeDef}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1} -enum \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1}{GPIO\+\_\+\+LEDState\+Type\+Def}}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaac2b90d8b8c9579b6aa5d3bbda9b1ff1}{GPIO\+\_\+\+LEDState\+Type\+Def}}} Режимы работы светодиода -\begin{DoxyEnumFields}[2]{Enumerator} +\begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{LED\_IS\_OFF@{LED\_IS\_OFF}!LED tools@{LED tools}}\index{LED tools@{LED tools}!LED\_IS\_OFF@{LED\_IS\_OFF}}}\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ggaac2b90d8b8c9579b6aa5d3bbda9b1ff1a74276cd2464314e422e8a144483f74ae} LED\+\_\+\+IS\+\_\+\+OFF&Светодиод выключен \\ \hline @@ -87,14 +85,12 @@ Definition at line \mbox{\hyperlink{general__gpio_8h_source_l00081}{81}} of file -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gac936453c7a0841c0b17bcfdae4958084}\index{LED tools@{LED tools}!GPIO\_LED\_Init@{GPIO\_LED\_Init}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gac936453c7a0841c0b17bcfdae4958084}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gac936453c7a0841c0b17bcfdae4958084} +\index{LED tools@{LED tools}!GPIO\_LED\_Init@{GPIO\_LED\_Init}} \index{GPIO\_LED\_Init@{GPIO\_LED\_Init}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Init()}{GPIO\_LED\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gac936453c7a0841c0b17bcfdae4958084} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx}{, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN\+\_\+X}{, }\item[{uint8\+\_\+t}]{LED\+\_\+\+Active\+Level}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN\+\_\+X, }\item[{uint8\+\_\+t}]{LED\+\_\+\+Active\+Level }\end{DoxyParamCaption})} @@ -115,11 +111,11 @@ HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Init (\begin{DoxyParamCaptio Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00073}{73}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ga4b9572949326b050694cd55d0a7e5f6c}\index{LED tools@{LED tools}!GPIO\_LED\_On@{GPIO\_LED\_On}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ga4b9572949326b050694cd55d0a7e5f6c}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ga4b9572949326b050694cd55d0a7e5f6c} +\index{LED tools@{LED tools}!GPIO\_LED\_On@{GPIO\_LED\_On}} \index{GPIO\_LED\_On@{GPIO\_LED\_On}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_On()}{GPIO\_LED\_On()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_ga4b9572949326b050694cd55d0a7e5f6c} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+On (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+On (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led }\end{DoxyParamCaption})} @@ -137,11 +133,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00091}{91}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaadda2d4f021390a4e392210a5ace5357}\index{LED tools@{LED tools}!GPIO\_LED\_Off@{GPIO\_LED\_Off}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaadda2d4f021390a4e392210a5ace5357}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaadda2d4f021390a4e392210a5ace5357} +\index{LED tools@{LED tools}!GPIO\_LED\_Off@{GPIO\_LED\_Off}} \index{GPIO\_LED\_Off@{GPIO\_LED\_Off}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Off()}{GPIO\_LED\_Off()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaadda2d4f021390a4e392210a5ace5357} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Off (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Off (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led }\end{DoxyParamCaption})} @@ -159,11 +155,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00107}{107}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gae78b570447d55a462a679a89dbaa8ea2}\index{LED tools@{LED tools}!GPIO\_LED\_Set@{GPIO\_LED\_Set}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gae78b570447d55a462a679a89dbaa8ea2}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gae78b570447d55a462a679a89dbaa8ea2} +\index{LED tools@{LED tools}!GPIO\_LED\_Set@{GPIO\_LED\_Set}} \index{GPIO\_LED\_Set@{GPIO\_LED\_Set}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Set()}{GPIO\_LED\_Set()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gae78b570447d55a462a679a89dbaa8ea2} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{, }\item[{uint8\+\_\+t}]{led\+\_\+state}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led, }\item[{uint8\+\_\+t}]{led\+\_\+state }\end{DoxyParamCaption})} @@ -183,11 +179,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00125}{125}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaf22f44ecaf6a1932b47edc5a845b03a9}\index{LED tools@{LED tools}!GPIO\_LED\_Blink\_Start@{GPIO\_LED\_Blink\_Start}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaf22f44ecaf6a1932b47edc5a845b03a9}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaf22f44ecaf6a1932b47edc5a845b03a9} +\index{LED tools@{LED tools}!GPIO\_LED\_Blink\_Start@{GPIO\_LED\_Blink\_Start}} \index{GPIO\_LED\_Blink\_Start@{GPIO\_LED\_Blink\_Start}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Blink\_Start()}{GPIO\_LED\_Blink\_Start()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaf22f44ecaf6a1932b47edc5a845b03a9} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Blink\+\_\+\+Start (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{, }\item[{uint32\+\_\+t}]{period}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Blink\+\_\+\+Start (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led, }\item[{uint32\+\_\+t}]{period }\end{DoxyParamCaption})} @@ -207,11 +203,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00146}{146}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaa00f20021781464af3dfe74aa3e59a0a}\index{LED tools@{LED tools}!GPIO\_LED\_Fading\_Start@{GPIO\_LED\_Fading\_Start}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaa00f20021781464af3dfe74aa3e59a0a}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaa00f20021781464af3dfe74aa3e59a0a} +\index{LED tools@{LED tools}!GPIO\_LED\_Fading\_Start@{GPIO\_LED\_Fading\_Start}} \index{GPIO\_LED\_Fading\_Start@{GPIO\_LED\_Fading\_Start}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Fading\_Start()}{GPIO\_LED\_Fading\_Start()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gaa00f20021781464af3dfe74aa3e59a0a} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Fading\+\_\+\+Start (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{, }\item[{uint32\+\_\+t}]{period}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+LED\+\_\+\+Fading\+\_\+\+Start (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led, }\item[{uint32\+\_\+t}]{period }\end{DoxyParamCaption})} @@ -231,11 +227,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00164}{164}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gad6e6189824406c4d472b6340c7f19bb2}\index{LED tools@{LED tools}!GPIO\_LED\_Dynamic\_Handle@{GPIO\_LED\_Dynamic\_Handle}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gad6e6189824406c4d472b6340c7f19bb2}\label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gad6e6189824406c4d472b6340c7f19bb2} +\index{LED tools@{LED tools}!GPIO\_LED\_Dynamic\_Handle@{GPIO\_LED\_Dynamic\_Handle}} \index{GPIO\_LED\_Dynamic\_Handle@{GPIO\_LED\_Dynamic\_Handle}!LED tools@{LED tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_LED\_Dynamic\_Handle()}{GPIO\_LED\_Dynamic\_Handle()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s_gad6e6189824406c4d472b6340c7f19bb2} -void GPIO\+\_\+\+LED\+\_\+\+Dynamic\+\_\+\+Handle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily void GPIO\+\_\+\+LED\+\_\+\+Dynamic\+\_\+\+Handle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___l_e_d_type_def}{GPIO\+\_\+\+LEDType\+Def}} \texorpdfstring{$\ast$}{*}}]{led }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex index d57e257..52e0bdf 100644 --- a/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex +++ b/Doc/latex/group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Switch tools } +\doxysubsubsubsection{Switch tools} \hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}{}\label{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}\index{Switch tools@{Switch tools}} @@ -31,14 +31,12 @@ int \mbox{\hyperlink{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_ga960b24335b202 -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_gacafee0e68877f2b25df843356871d1f7}\index{Switch tools@{Switch tools}!GPIO\_Switch\_Init@{GPIO\_Switch\_Init}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_gacafee0e68877f2b25df843356871d1f7}\label{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_gacafee0e68877f2b25df843356871d1f7} +\index{Switch tools@{Switch tools}!GPIO\_Switch\_Init@{GPIO\_Switch\_Init}} \index{GPIO\_Switch\_Init@{GPIO\_Switch\_Init}!Switch tools@{Switch tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_Switch\_Init()}{GPIO\_Switch\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_gacafee0e68877f2b25df843356871d1f7} -HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+Switch\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{sw}{, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx}{, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN\+\_\+X}{, }\item[{uint8\+\_\+t}]{SW\+\_\+\+Active\+Level}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def GPIO\+\_\+\+Switch\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{sw, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN\+\_\+X, }\item[{uint8\+\_\+t}]{SW\+\_\+\+Active\+Level }\end{DoxyParamCaption})} @@ -62,11 +60,11 @@ HAL Status Definition at line \mbox{\hyperlink{general__gpio_8c_source_l00258}{258}} of file \mbox{\hyperlink{general__gpio_8c_source}{general\+\_\+gpio.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_ga960b24335b2026abcad126ab8c422d70}\index{Switch tools@{Switch tools}!GPIO\_Read\_Switch@{GPIO\_Read\_Switch}} +\Hypertarget{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_ga960b24335b2026abcad126ab8c422d70}\label{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_ga960b24335b2026abcad126ab8c422d70} +\index{Switch tools@{Switch tools}!GPIO\_Read\_Switch@{GPIO\_Read\_Switch}} \index{GPIO\_Read\_Switch@{GPIO\_Read\_Switch}!Switch tools@{Switch tools}} \doxysubsubsubsubsubsection{\texorpdfstring{GPIO\_Read\_Switch()}{GPIO\_Read\_Switch()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h_ga960b24335b2026abcad126ab8c422d70} -int GPIO\+\_\+\+Read\+\_\+\+Switch (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{sw}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily int GPIO\+\_\+\+Read\+\_\+\+Switch (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_g_p_i_o___switch_type_def}{GPIO\+\_\+\+Switch\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{sw }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex index 2dd9286..34a3794 100644 --- a/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l.tex @@ -1,4 +1,4 @@ -\doxysubsection{Peripheral } +\doxysubsection{Peripheral} \hypertarget{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l}{}\label{group___m_y_l_i_b_s___p_e_r_i_p_h_e_r_a_l}\index{Peripheral@{Peripheral}} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex index 240a0fb..36b886e 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___d_e_l_a_y.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Delay tools } +\doxysubsubsubsection{Delay tools} \hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}{}\label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y}\index{Delay tools@{Delay tools}} @@ -28,14 +28,12 @@ HAL\+\_\+\+Status\+Type\+Def \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___d_e_ -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga4c0dfde4e15f677600605348b4e97834}\index{Delay tools@{Delay tools}!TIM\_Delay\_Start@{TIM\_Delay\_Start}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga4c0dfde4e15f677600605348b4e97834}\label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga4c0dfde4e15f677600605348b4e97834} +\index{Delay tools@{Delay tools}!TIM\_Delay\_Start@{TIM\_Delay\_Start}} \index{TIM\_Delay\_Start@{TIM\_Delay\_Start}!Delay tools@{Delay tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Delay\_Start()}{TIM\_Delay\_Start()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga4c0dfde4e15f677600605348b4e97834} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay\+\_\+\+Start (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay\+\_\+\+Start (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim }\end{DoxyParamCaption})} @@ -53,11 +51,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00363}{363}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga88c552a133cb6e3015453cccab74c07e}\index{Delay tools@{Delay tools}!TIM\_Delay@{TIM\_Delay}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga88c552a133cb6e3015453cccab74c07e}\label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga88c552a133cb6e3015453cccab74c07e} +\index{Delay tools@{Delay tools}!TIM\_Delay@{TIM\_Delay}} \index{TIM\_Delay@{TIM\_Delay}!Delay tools@{Delay tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Delay()}{TIM\_Delay()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga88c552a133cb6e3015453cccab74c07e} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{, }\item[{uint16\+\_\+t}]{delay}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim, }\item[{uint16\+\_\+t}]{delay }\end{DoxyParamCaption})} @@ -77,11 +75,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00337}{337}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga108637af414bff3373059273b815ce9b}\index{Delay tools@{Delay tools}!TIM\_Delay\_NonBlocking@{TIM\_Delay\_NonBlocking}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga108637af414bff3373059273b815ce9b}\label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga108637af414bff3373059273b815ce9b} +\index{Delay tools@{Delay tools}!TIM\_Delay\_NonBlocking@{TIM\_Delay\_NonBlocking}} \index{TIM\_Delay\_NonBlocking@{TIM\_Delay\_NonBlocking}!Delay tools@{Delay tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Delay\_NonBlocking()}{TIM\_Delay\_NonBlocking()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___d_e_l_a_y_ga108637af414bff3373059273b815ce9b} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay\+\_\+\+Non\+Blocking (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{, }\item[{uint16\+\_\+t}]{delay}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Delay\+\_\+\+Non\+Blocking (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim, }\item[{uint16\+\_\+t}]{delay }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex index 76a4df1..8654cc5 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Encoder tools } +\doxysubsubsubsection{Encoder tools} \hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}{}\label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r}\index{Encoder tools@{Encoder tools}} @@ -33,14 +33,12 @@ int \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga117b795017e9e -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc}\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_Init@{TIM\_Encoder\_Init}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc}\label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc} +\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_Init@{TIM\_Encoder\_Init}} \index{TIM\_Encoder\_Init@{TIM\_Encoder\_Init}!Encoder tools@{Encoder tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Encoder\_Init()}{TIM\_Encoder\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga8d16c3b7e7c6decc54c5c3d1a8bf0fbc} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Encoder\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc}{, }\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Encoder\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc, }\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim }\end{DoxyParamCaption})} @@ -63,11 +61,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00168}{168}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_gac3bc6525f88c275e47eb864e6d567501}\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_Read@{TIM\_Encoder\_Read}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_gac3bc6525f88c275e47eb864e6d567501}\label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_gac3bc6525f88c275e47eb864e6d567501} +\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_Read@{TIM\_Encoder\_Read}} \index{TIM\_Encoder\_Read@{TIM\_Encoder\_Read}!Encoder tools@{Encoder tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Encoder\_Read()}{TIM\_Encoder\_Read()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_gac3bc6525f88c275e47eb864e6d567501} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Encoder\+\_\+\+Read (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Encoder\+\_\+\+Read (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc }\end{DoxyParamCaption})} @@ -85,11 +83,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00303}{303}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga117b795017e9e3a357ddefe323412761}\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_ReadSwitch@{TIM\_Encoder\_ReadSwitch}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga117b795017e9e3a357ddefe323412761}\label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga117b795017e9e3a357ddefe323412761} +\index{Encoder tools@{Encoder tools}!TIM\_Encoder\_ReadSwitch@{TIM\_Encoder\_ReadSwitch}} \index{TIM\_Encoder\_ReadSwitch@{TIM\_Encoder\_ReadSwitch}!Encoder tools@{Encoder tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Encoder\_ReadSwitch()}{TIM\_Encoder\_ReadSwitch()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___e_n_c_o_d_e_r_ga117b795017e9e3a357ddefe323412761} -int TIM\+\_\+\+Encoder\+\_\+\+Read\+Switch (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily int TIM\+\_\+\+Encoder\+\_\+\+Read\+Switch (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___encoder_type_def}{TIM\+\_\+\+Encoder\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{henc }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex index 2726bd5..345eb21 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{General tools } +\doxysubsubsubsection{General tools} \hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}{}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}\index{General tools@{General tools}} @@ -56,20 +56,18 @@ void \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga879e3f1c919c -\label{doc-enum-members} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_doc-enum-members} \doxysubsubsubsubsection{Enumeration Type Documentation} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}\index{General tools@{General tools}!TIM\_ITModeTypeDef@{TIM\_ITModeTypeDef}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787} +\index{General tools@{General tools}!TIM\_ITModeTypeDef@{TIM\_ITModeTypeDef}} \index{TIM\_ITModeTypeDef@{TIM\_ITModeTypeDef}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_ITModeTypeDef}{TIM\_ITModeTypeDef}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787} -enum \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}{TIM\+\_\+\+ITMode\+Type\+Def}}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}{TIM\+\_\+\+ITMode\+Type\+Def}}} Режим прерываний таймера -\begin{DoxyEnumFields}[2]{Enumerator} +\begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{TIM\_DEFAULT@{TIM\_DEFAULT}!General tools@{General tools}}\index{General tools@{General tools}!TIM\_DEFAULT@{TIM\_DEFAULT}}}\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ggaeb611874216a4661fb83366b99b9e787ab0869828a4dfd62eaa44868ca27835f8} TIM\+\_\+\+DEFAULT&Прерываний отключены \\ \hline @@ -83,17 +81,17 @@ TIM\+\_\+\+IT\+\_\+\+MODE&Прерываний включены \\ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00076}{76}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800}\index{General tools@{General tools}!TIM\_MHzTickBaseTypeDef@{TIM\_MHzTickBaseTypeDef}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800} +\index{General tools@{General tools}!TIM\_MHzTickBaseTypeDef@{TIM\_MHzTickBaseTypeDef}} \index{TIM\_MHzTickBaseTypeDef@{TIM\_MHzTickBaseTypeDef}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_MHzTickBaseTypeDef}{TIM\_MHzTickBaseTypeDef}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800} -enum \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800}{TIM\+\_\+\+MHz\+Tick\+Base\+Type\+Def}}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaa0a51c870325217ac099881f09dd0800}{TIM\+\_\+\+MHz\+Tick\+Base\+Type\+Def}}} Длительность тика таймера (частота тактирования таймера) -enum дает базовые длительности, но можно выставить другие (напр 500 -\/ 0.\+5 мс) \begin{DoxyEnumFields}[2]{Enumerator} +enum дает базовые длительности, но можно выставить другие (напр 500 -\/ 0.\+5 мс) \begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{TIM\_Base\_Disable@{TIM\_Base\_Disable}!General tools@{General tools}}\index{General tools@{General tools}!TIM\_Base\_Disable@{TIM\_Base\_Disable}}}\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ggaa0a51c870325217ac099881f09dd0800ae838122c0e83bc57ad31b546bf2f00e5} TIM\+\_\+\+Base\+\_\+\+Disable&Таймер отключен \\ \hline @@ -129,14 +127,12 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00090}{90}} of file -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga7044214f24a9868ba7e1650b55e639ec}\index{General tools@{General tools}!TIM\_Base\_Init@{TIM\_Base\_Init}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga7044214f24a9868ba7e1650b55e639ec}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga7044214f24a9868ba7e1650b55e639ec} +\index{General tools@{General tools}!TIM\_Base\_Init@{TIM\_Base\_Init}} \index{TIM\_Base\_Init@{TIM\_Base\_Init}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Base\_Init()}{TIM\_Base\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga7044214f24a9868ba7e1650b55e639ec} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Base\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\+\_\+\+Settings\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{stim}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Base\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_t_i_m___settings_type_def}{TIM\+\_\+\+Settings\+Type\+Def}} \texorpdfstring{$\ast$}{*}}]{stim }\end{DoxyParamCaption})} @@ -166,11 +162,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00034}{34}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaad47337be7ba2f6c0777c40d7278c931}\index{General tools@{General tools}!TIM\_Base\_MspInit@{TIM\_Base\_MspInit}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaad47337be7ba2f6c0777c40d7278c931}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaad47337be7ba2f6c0777c40d7278c931} +\index{General tools@{General tools}!TIM\_Base\_MspInit@{TIM\_Base\_MspInit}} \index{TIM\_Base\_MspInit@{TIM\_Base\_MspInit}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Base\_MspInit()}{TIM\_Base\_MspInit()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaad47337be7ba2f6c0777c40d7278c931} -void TIM\+\_\+\+Base\+\_\+\+Msp\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{, }\item[{\mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}{TIM\+\_\+\+ITMode\+Type\+Def}}}]{it\+\_\+mode}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily void TIM\+\_\+\+Base\+\_\+\+Msp\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim, }\item[{\mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_gaeb611874216a4661fb83366b99b9e787}{TIM\+\_\+\+ITMode\+Type\+Def}}}]{it\+\_\+mode }\end{DoxyParamCaption})} @@ -188,11 +184,11 @@ void TIM\+\_\+\+Base\+\_\+\+Msp\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\ Definition at line \mbox{\hyperlink{general__tim_8c_source_l00408}{408}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga879e3f1c919c02990736730275367115}\index{General tools@{General tools}!TIM\_Base\_MspDeInit@{TIM\_Base\_MspDeInit}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga879e3f1c919c02990736730275367115}\label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga879e3f1c919c02990736730275367115} +\index{General tools@{General tools}!TIM\_Base\_MspDeInit@{TIM\_Base\_MspDeInit}} \index{TIM\_Base\_MspDeInit@{TIM\_Base\_MspDeInit}!General tools@{General tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Base\_MspDeInit()}{TIM\_Base\_MspDeInit()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l_ga879e3f1c919c02990736730275367115} -void TIM\+\_\+\+Base\+\_\+\+Msp\+De\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily void TIM\+\_\+\+Base\+\_\+\+Msp\+De\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex index 0498d91..b760e6e 100644 --- a/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex +++ b/Doc/latex/group___m_y_l_i_b_s___t_i_m___o_c.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{PWM/\+OC Channels tools } +\doxysubsubsubsection{PWM/\+OC Channels tools} \hypertarget{group___m_y_l_i_b_s___t_i_m___o_c}{}\label{group___m_y_l_i_b_s___t_i_m___o_c}\index{PWM/OC Channels tools@{PWM/OC Channels tools}} @@ -26,14 +26,12 @@ HAL\+\_\+\+Status\+Type\+Def \mbox{\hyperlink{group___m_y_l_i_b_s___t_i_m___o_c_ -\label{doc-func-members} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___o_c_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___m_y_l_i_b_s___t_i_m___o_c_gadb2f465d89f609e035867e980c3a29c6}\index{PWM/OC Channels tools@{PWM/OC Channels tools}!TIM\_Output\_PWM\_Init@{TIM\_Output\_PWM\_Init}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___o_c_gadb2f465d89f609e035867e980c3a29c6}\label{group___m_y_l_i_b_s___t_i_m___o_c_gadb2f465d89f609e035867e980c3a29c6} +\index{PWM/OC Channels tools@{PWM/OC Channels tools}!TIM\_Output\_PWM\_Init@{TIM\_Output\_PWM\_Init}} \index{TIM\_Output\_PWM\_Init@{TIM\_Output\_PWM\_Init}!PWM/OC Channels tools@{PWM/OC Channels tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_Output\_PWM\_Init()}{TIM\_Output\_PWM\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___o_c_gadb2f465d89f609e035867e980c3a29c6} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Output\+\_\+\+PWM\+\_\+\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{, }\item[{TIM\+\_\+\+OC\+\_\+\+Init\+Type\+Def \texorpdfstring{$\ast$}{*}}]{s\+Config\+OC}{, }\item[{uint32\+\_\+t}]{TIM\+\_\+\+CHANNEL}{, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx}{, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+Output\+\_\+\+PWM\+\_\+\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim, }\item[{TIM\+\_\+\+OC\+\_\+\+Init\+Type\+Def \texorpdfstring{$\ast$}{*}}]{s\+Config\+OC, }\item[{uint32\+\_\+t}]{TIM\+\_\+\+CHANNEL, }\item[{GPIO\+\_\+\+Type\+Def \texorpdfstring{$\ast$}{*}}]{GPIOx, }\item[{uint32\+\_\+t}]{GPIO\+\_\+\+PIN }\end{DoxyParamCaption})} @@ -62,11 +60,11 @@ HAL status. Definition at line \mbox{\hyperlink{general__tim_8c_source_l00226}{226}} of file \mbox{\hyperlink{general__tim_8c_source}{general\+\_\+tim.\+c}}. -\Hypertarget{group___m_y_l_i_b_s___t_i_m___o_c_gae2608ca8023e9a0713af0b4fbfbc1889}\index{PWM/OC Channels tools@{PWM/OC Channels tools}!TIM\_OC\_Comparator\_Init@{TIM\_OC\_Comparator\_Init}} +\Hypertarget{group___m_y_l_i_b_s___t_i_m___o_c_gae2608ca8023e9a0713af0b4fbfbc1889}\label{group___m_y_l_i_b_s___t_i_m___o_c_gae2608ca8023e9a0713af0b4fbfbc1889} +\index{PWM/OC Channels tools@{PWM/OC Channels tools}!TIM\_OC\_Comparator\_Init@{TIM\_OC\_Comparator\_Init}} \index{TIM\_OC\_Comparator\_Init@{TIM\_OC\_Comparator\_Init}!PWM/OC Channels tools@{PWM/OC Channels tools}} \doxysubsubsubsubsubsection{\texorpdfstring{TIM\_OC\_Comparator\_Init()}{TIM\_OC\_Comparator\_Init()}} -{\footnotesize\ttfamily \label{group___m_y_l_i_b_s___t_i_m___o_c_gae2608ca8023e9a0713af0b4fbfbc1889} -HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+OC\+\_\+\+Comparator\+\_\+\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim}{, }\item[{uint32\+\_\+t}]{TIM\+\_\+\+CHANNEL}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily HAL\+\_\+\+Status\+Type\+Def TIM\+\_\+\+OC\+\_\+\+Comparator\+\_\+\+Init (\begin{DoxyParamCaption}\item[{TIM\+\_\+\+Handle\+Type\+Def \texorpdfstring{$\ast$}{*}}]{htim, }\item[{uint32\+\_\+t}]{TIM\+\_\+\+CHANNEL }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___t_i_m___i_n_i_t.tex b/Doc/latex/group___t_i_m___i_n_i_t.tex index f8a6cfe..cce8c68 100644 --- a/Doc/latex/group___t_i_m___i_n_i_t.tex +++ b/Doc/latex/group___t_i_m___i_n_i_t.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsubsection{Init defines } +\doxysubsubsubsubsection{Init defines} \hypertarget{group___t_i_m___i_n_i_t}{}\label{group___t_i_m___i_n_i_t}\index{Init defines@{Init defines}} @@ -52,24 +52,22 @@ Collaboration diagram for Init defines\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___t_i_m___i_n_i_t_doc-define-members} \doxysubsubsubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___t_i_m___i_n_i_t_ga23382b8f04b3e6db2c59dfa1ef5ea4a2}\index{Init defines@{Init defines}!HAL\_TIM\_MODULE\_ENABLED@{HAL\_TIM\_MODULE\_ENABLED}} +\Hypertarget{group___t_i_m___i_n_i_t_ga23382b8f04b3e6db2c59dfa1ef5ea4a2}\label{group___t_i_m___i_n_i_t_ga23382b8f04b3e6db2c59dfa1ef5ea4a2} +\index{Init defines@{Init defines}!HAL\_TIM\_MODULE\_ENABLED@{HAL\_TIM\_MODULE\_ENABLED}} \index{HAL\_TIM\_MODULE\_ENABLED@{HAL\_TIM\_MODULE\_ENABLED}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{HAL\_TIM\_MODULE\_ENABLED}{HAL\_TIM\_MODULE\_ENABLED}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga23382b8f04b3e6db2c59dfa1ef5ea4a2} -\#define HAL\+\_\+\+TIM\+\_\+\+MODULE\+\_\+\+ENABLED} +{\footnotesize\ttfamily \#define HAL\+\_\+\+TIM\+\_\+\+MODULE\+\_\+\+ENABLED} Definition at line \mbox{\hyperlink{general__tim_8h_source_l00031}{31}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga54a98c21365e0bc45b81555d2b101f2b}\index{Init defines@{Init defines}!USE\_TIM1@{USE\_TIM1}} +\Hypertarget{group___t_i_m___i_n_i_t_ga54a98c21365e0bc45b81555d2b101f2b}\label{group___t_i_m___i_n_i_t_ga54a98c21365e0bc45b81555d2b101f2b} +\index{Init defines@{Init defines}!USE\_TIM1@{USE\_TIM1}} \index{USE\_TIM1@{USE\_TIM1}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM1}{USE\_TIM1}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga54a98c21365e0bc45b81555d2b101f2b} -\#define USE\+\_\+\+TIM1} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM1} @@ -79,11 +77,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00031}{31}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00033}{33}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga72535a44955b43cbcd56e25039ab32eb}\index{Init defines@{Init defines}!USE\_TIM2@{USE\_TIM2}} +\Hypertarget{group___t_i_m___i_n_i_t_ga72535a44955b43cbcd56e25039ab32eb}\label{group___t_i_m___i_n_i_t_ga72535a44955b43cbcd56e25039ab32eb} +\index{Init defines@{Init defines}!USE\_TIM2@{USE\_TIM2}} \index{USE\_TIM2@{USE\_TIM2}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM2}{USE\_TIM2}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga72535a44955b43cbcd56e25039ab32eb} -\#define USE\+\_\+\+TIM2} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM2} @@ -93,11 +91,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00033}{33}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00034}{34}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga5b5685a43273b6e37242a4aba3ee0617}\index{Init defines@{Init defines}!USE\_TIM3@{USE\_TIM3}} +\Hypertarget{group___t_i_m___i_n_i_t_ga5b5685a43273b6e37242a4aba3ee0617}\label{group___t_i_m___i_n_i_t_ga5b5685a43273b6e37242a4aba3ee0617} +\index{Init defines@{Init defines}!USE\_TIM3@{USE\_TIM3}} \index{USE\_TIM3@{USE\_TIM3}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM3}{USE\_TIM3}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga5b5685a43273b6e37242a4aba3ee0617} -\#define USE\+\_\+\+TIM3} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM3} @@ -107,11 +105,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00034}{34}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00035}{35}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga1493b39c9214501180b81b4c892f9be0}\index{Init defines@{Init defines}!USE\_TIM4@{USE\_TIM4}} +\Hypertarget{group___t_i_m___i_n_i_t_ga1493b39c9214501180b81b4c892f9be0}\label{group___t_i_m___i_n_i_t_ga1493b39c9214501180b81b4c892f9be0} +\index{Init defines@{Init defines}!USE\_TIM4@{USE\_TIM4}} \index{USE\_TIM4@{USE\_TIM4}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM4}{USE\_TIM4}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga1493b39c9214501180b81b4c892f9be0} -\#define USE\+\_\+\+TIM4} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM4} @@ -121,11 +119,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00035}{35}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00036}{36}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga252f4fba93fc265110e83760e0590af3}\index{Init defines@{Init defines}!USE\_TIM5@{USE\_TIM5}} +\Hypertarget{group___t_i_m___i_n_i_t_ga252f4fba93fc265110e83760e0590af3}\label{group___t_i_m___i_n_i_t_ga252f4fba93fc265110e83760e0590af3} +\index{Init defines@{Init defines}!USE\_TIM5@{USE\_TIM5}} \index{USE\_TIM5@{USE\_TIM5}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM5}{USE\_TIM5}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga252f4fba93fc265110e83760e0590af3} -\#define USE\+\_\+\+TIM5} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM5} @@ -135,11 +133,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00036}{36}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00037}{37}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga8fe31b98160627d19038222910be3f46}\index{Init defines@{Init defines}!USE\_TIM6@{USE\_TIM6}} +\Hypertarget{group___t_i_m___i_n_i_t_ga8fe31b98160627d19038222910be3f46}\label{group___t_i_m___i_n_i_t_ga8fe31b98160627d19038222910be3f46} +\index{Init defines@{Init defines}!USE\_TIM6@{USE\_TIM6}} \index{USE\_TIM6@{USE\_TIM6}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM6}{USE\_TIM6}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga8fe31b98160627d19038222910be3f46} -\#define USE\+\_\+\+TIM6} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM6} @@ -149,11 +147,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00037}{37}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00038}{38}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga7cdc54cc8cbbb6e9f60001f1e3e6ec67}\index{Init defines@{Init defines}!USE\_TIM7@{USE\_TIM7}} +\Hypertarget{group___t_i_m___i_n_i_t_ga7cdc54cc8cbbb6e9f60001f1e3e6ec67}\label{group___t_i_m___i_n_i_t_ga7cdc54cc8cbbb6e9f60001f1e3e6ec67} +\index{Init defines@{Init defines}!USE\_TIM7@{USE\_TIM7}} \index{USE\_TIM7@{USE\_TIM7}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM7}{USE\_TIM7}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga7cdc54cc8cbbb6e9f60001f1e3e6ec67} -\#define USE\+\_\+\+TIM7} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM7} @@ -163,11 +161,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00038}{38}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00039}{39}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga28ba33d7c6bf22821dafa5bcee4854be}\index{Init defines@{Init defines}!USE\_TIM8@{USE\_TIM8}} +\Hypertarget{group___t_i_m___i_n_i_t_ga28ba33d7c6bf22821dafa5bcee4854be}\label{group___t_i_m___i_n_i_t_ga28ba33d7c6bf22821dafa5bcee4854be} +\index{Init defines@{Init defines}!USE\_TIM8@{USE\_TIM8}} \index{USE\_TIM8@{USE\_TIM8}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM8}{USE\_TIM8}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga28ba33d7c6bf22821dafa5bcee4854be} -\#define USE\+\_\+\+TIM8} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM8} @@ -177,11 +175,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00039}{39}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00040}{40}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_gaac627c0e98c9594cc41b1b46eb39e44a}\index{Init defines@{Init defines}!USE\_TIM9@{USE\_TIM9}} +\Hypertarget{group___t_i_m___i_n_i_t_gaac627c0e98c9594cc41b1b46eb39e44a}\label{group___t_i_m___i_n_i_t_gaac627c0e98c9594cc41b1b46eb39e44a} +\index{Init defines@{Init defines}!USE\_TIM9@{USE\_TIM9}} \index{USE\_TIM9@{USE\_TIM9}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM9}{USE\_TIM9}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_gaac627c0e98c9594cc41b1b46eb39e44a} -\#define USE\+\_\+\+TIM9} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM9} @@ -191,11 +189,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00040}{40}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00041}{41}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga98c0691052d1da2c4053dd3586ff7ce9}\index{Init defines@{Init defines}!USE\_TIM10@{USE\_TIM10}} +\Hypertarget{group___t_i_m___i_n_i_t_ga98c0691052d1da2c4053dd3586ff7ce9}\label{group___t_i_m___i_n_i_t_ga98c0691052d1da2c4053dd3586ff7ce9} +\index{Init defines@{Init defines}!USE\_TIM10@{USE\_TIM10}} \index{USE\_TIM10@{USE\_TIM10}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM10}{USE\_TIM10}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga98c0691052d1da2c4053dd3586ff7ce9} -\#define USE\+\_\+\+TIM10} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM10} @@ -205,11 +203,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00041}{41}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00042}{42}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga176c97f06ebcf14e06e5c5bdbfac44c2}\index{Init defines@{Init defines}!USE\_TIM11@{USE\_TIM11}} +\Hypertarget{group___t_i_m___i_n_i_t_ga176c97f06ebcf14e06e5c5bdbfac44c2}\label{group___t_i_m___i_n_i_t_ga176c97f06ebcf14e06e5c5bdbfac44c2} +\index{Init defines@{Init defines}!USE\_TIM11@{USE\_TIM11}} \index{USE\_TIM11@{USE\_TIM11}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM11}{USE\_TIM11}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga176c97f06ebcf14e06e5c5bdbfac44c2} -\#define USE\+\_\+\+TIM11} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM11} @@ -219,11 +217,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00042}{42}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00043}{43}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga4e2b0e6cdf9eed74581b575c3fd9516b}\index{Init defines@{Init defines}!USE\_TIM12@{USE\_TIM12}} +\Hypertarget{group___t_i_m___i_n_i_t_ga4e2b0e6cdf9eed74581b575c3fd9516b}\label{group___t_i_m___i_n_i_t_ga4e2b0e6cdf9eed74581b575c3fd9516b} +\index{Init defines@{Init defines}!USE\_TIM12@{USE\_TIM12}} \index{USE\_TIM12@{USE\_TIM12}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM12}{USE\_TIM12}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga4e2b0e6cdf9eed74581b575c3fd9516b} -\#define USE\+\_\+\+TIM12} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM12} @@ -233,11 +231,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00043}{43}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00044}{44}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_gaf48ef87650517652ddec039a189507ac}\index{Init defines@{Init defines}!USE\_TIM13@{USE\_TIM13}} +\Hypertarget{group___t_i_m___i_n_i_t_gaf48ef87650517652ddec039a189507ac}\label{group___t_i_m___i_n_i_t_gaf48ef87650517652ddec039a189507ac} +\index{Init defines@{Init defines}!USE\_TIM13@{USE\_TIM13}} \index{USE\_TIM13@{USE\_TIM13}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM13}{USE\_TIM13}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_gaf48ef87650517652ddec039a189507ac} -\#define USE\+\_\+\+TIM13} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM13} @@ -247,11 +245,11 @@ Definition at line \mbox{\hyperlink{general__tim_8h_source_l00044}{44}} of file Definition at line \mbox{\hyperlink{general__tim_8h_source_l00045}{45}} of file \mbox{\hyperlink{general__tim_8h_source}{general\+\_\+tim.\+h}}. -\Hypertarget{group___t_i_m___i_n_i_t_ga9ae40be31d5271abe3e49f896d916d5c}\index{Init defines@{Init defines}!USE\_TIM14@{USE\_TIM14}} +\Hypertarget{group___t_i_m___i_n_i_t_ga9ae40be31d5271abe3e49f896d916d5c}\label{group___t_i_m___i_n_i_t_ga9ae40be31d5271abe3e49f896d916d5c} +\index{Init defines@{Init defines}!USE\_TIM14@{USE\_TIM14}} \index{USE\_TIM14@{USE\_TIM14}!Init defines@{Init defines}} \doxysubsubsubsubsubsubsection{\texorpdfstring{USE\_TIM14}{USE\_TIM14}} -{\footnotesize\ttfamily \label{group___t_i_m___i_n_i_t_ga9ae40be31d5271abe3e49f896d916d5c} -\#define USE\+\_\+\+TIM14} +{\footnotesize\ttfamily \#define USE\+\_\+\+TIM14} diff --git a/Doc/latex/group___t_r_a_c_e.tex b/Doc/latex/group___t_r_a_c_e.tex index 3dbdd57..96c475c 100644 --- a/Doc/latex/group___t_r_a_c_e.tex +++ b/Doc/latex/group___t_r_a_c_e.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Trace defines } +\doxysubsubsection{Trace defines} \hypertarget{group___t_r_a_c_e}{}\label{group___t_r_a_c_e}\index{Trace defines@{Trace defines}} diff --git a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex index cf8e2ac..500562a 100644 --- a/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex +++ b/Doc/latex/group___t_r_a_c_e___c_o_n_f_i_g.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Trace configs } +\doxysubsubsection{Trace configs} \hypertarget{group___t_r_a_c_e___c_o_n_f_i_g}{}\label{group___t_r_a_c_e___c_o_n_f_i_g}\index{Trace configs@{Trace configs}} @@ -54,14 +54,12 @@ Collaboration diagram for Trace configs\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gac9eaedc31ab023ce7d6403999216e496}\index{Trace configs@{Trace configs}!TRACKERS\_ENABLE@{TRACKERS\_ENABLE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gac9eaedc31ab023ce7d6403999216e496}\label{group___t_r_a_c_e___c_o_n_f_i_g_gac9eaedc31ab023ce7d6403999216e496} +\index{Trace configs@{Trace configs}!TRACKERS\_ENABLE@{TRACKERS\_ENABLE}} \index{TRACKERS\_ENABLE@{TRACKERS\_ENABLE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{TRACKERS\_ENABLE}{TRACKERS\_ENABLE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gac9eaedc31ab023ce7d6403999216e496} -\#define TRACKERS\+\_\+\+ENABLE} +{\footnotesize\ttfamily \#define TRACKERS\+\_\+\+ENABLE} @@ -71,11 +69,11 @@ Collaboration diagram for Trace configs\+:\nopagebreak Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00025}{25}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga76936505ca200d2e61226b7ba68f27c6}\index{Trace configs@{Trace configs}!SERIAL\_TRACE\_ENABLE@{SERIAL\_TRACE\_ENABLE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga76936505ca200d2e61226b7ba68f27c6}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga76936505ca200d2e61226b7ba68f27c6} +\index{Trace configs@{Trace configs}!SERIAL\_TRACE\_ENABLE@{SERIAL\_TRACE\_ENABLE}} \index{SERIAL\_TRACE\_ENABLE@{SERIAL\_TRACE\_ENABLE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{SERIAL\_TRACE\_ENABLE}{SERIAL\_TRACE\_ENABLE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga76936505ca200d2e61226b7ba68f27c6} -\#define SERIAL\+\_\+\+TRACE\+\_\+\+ENABLE} +{\footnotesize\ttfamily \#define SERIAL\+\_\+\+TRACE\+\_\+\+ENABLE} @@ -85,11 +83,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00025}{25}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00026}{26}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga00ff2175bdc1fb11c8ec970ea3010dd8}\index{Trace configs@{Trace configs}!RTT\_TRACE\_ENABLE@{RTT\_TRACE\_ENABLE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga00ff2175bdc1fb11c8ec970ea3010dd8}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga00ff2175bdc1fb11c8ec970ea3010dd8} +\index{Trace configs@{Trace configs}!RTT\_TRACE\_ENABLE@{RTT\_TRACE\_ENABLE}} \index{RTT\_TRACE\_ENABLE@{RTT\_TRACE\_ENABLE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{RTT\_TRACE\_ENABLE}{RTT\_TRACE\_ENABLE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga00ff2175bdc1fb11c8ec970ea3010dd8} -\#define RTT\+\_\+\+TRACE\+\_\+\+ENABLE} +{\footnotesize\ttfamily \#define RTT\+\_\+\+TRACE\+\_\+\+ENABLE} @@ -99,11 +97,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00026}{26}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00027}{27}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gab8db9704b5d11858aa879689b9d36336}\index{Trace configs@{Trace configs}!SWO\_TRACE\_ENABLE@{SWO\_TRACE\_ENABLE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gab8db9704b5d11858aa879689b9d36336}\label{group___t_r_a_c_e___c_o_n_f_i_g_gab8db9704b5d11858aa879689b9d36336} +\index{Trace configs@{Trace configs}!SWO\_TRACE\_ENABLE@{SWO\_TRACE\_ENABLE}} \index{SWO\_TRACE\_ENABLE@{SWO\_TRACE\_ENABLE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{SWO\_TRACE\_ENABLE}{SWO\_TRACE\_ENABLE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gab8db9704b5d11858aa879689b9d36336} -\#define SWO\+\_\+\+TRACE\+\_\+\+ENABLE} +{\footnotesize\ttfamily \#define SWO\+\_\+\+TRACE\+\_\+\+ENABLE} @@ -113,11 +111,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00027}{27}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00028}{28}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}\index{Trace configs@{Trace configs}!LOG\_LEVEL@{LOG\_LEVEL}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga0b87e0d3bf5853bcbb0b66a7c48fdc05}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga0b87e0d3bf5853bcbb0b66a7c48fdc05} +\index{Trace configs@{Trace configs}!LOG\_LEVEL@{LOG\_LEVEL}} \index{LOG\_LEVEL@{LOG\_LEVEL}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{LOG\_LEVEL}{LOG\_LEVEL}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga0b87e0d3bf5853bcbb0b66a7c48fdc05} -\#define LOG\+\_\+\+LEVEL~1} +{\footnotesize\ttfamily \#define LOG\+\_\+\+LEVEL~1} @@ -132,11 +130,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00028}{28}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00035}{35}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}\index{Trace configs@{Trace configs}!RTT\_FLASH\_BUFFER\_SIZE@{RTT\_FLASH\_BUFFER\_SIZE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3} +\index{Trace configs@{Trace configs}!RTT\_FLASH\_BUFFER\_SIZE@{RTT\_FLASH\_BUFFER\_SIZE}} \index{RTT\_FLASH\_BUFFER\_SIZE@{RTT\_FLASH\_BUFFER\_SIZE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{RTT\_FLASH\_BUFFER\_SIZE}{RTT\_FLASH\_BUFFER\_SIZE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3} -\#define RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE~1024} +{\footnotesize\ttfamily \#define RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE~1024} @@ -146,11 +144,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00035}{35}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00037}{37}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724}\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR@{RTT\_FLASH\_SECTOR}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724} +\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR@{RTT\_FLASH\_SECTOR}} \index{RTT\_FLASH\_SECTOR@{RTT\_FLASH\_SECTOR}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{RTT\_FLASH\_SECTOR}{RTT\_FLASH\_SECTOR}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga3bc1b76864e1d32cbdd174d4caae7724} -\#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR~FLASH\+\_\+\+SECTOR\+\_\+11} +{\footnotesize\ttfamily \#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR~FLASH\+\_\+\+SECTOR\+\_\+11} @@ -160,11 +158,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00037}{37}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00038}{38}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR\_START@{RTT\_FLASH\_SECTOR\_START}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297} +\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR\_START@{RTT\_FLASH\_SECTOR\_START}} \index{RTT\_FLASH\_SECTOR\_START@{RTT\_FLASH\_SECTOR\_START}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{RTT\_FLASH\_SECTOR\_START}{RTT\_FLASH\_SECTOR\_START}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga8e56f75d3ab8a89ddde1404ae23c3297} -\#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR\+\_\+\+START~0x080\+E0000} +{\footnotesize\ttfamily \#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR\+\_\+\+START~0x080\+E0000} @@ -174,11 +172,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00038}{38}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00039}{39}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR\_END@{RTT\_FLASH\_SECTOR\_END}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}\label{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d} +\index{Trace configs@{Trace configs}!RTT\_FLASH\_SECTOR\_END@{RTT\_FLASH\_SECTOR\_END}} \index{RTT\_FLASH\_SECTOR\_END@{RTT\_FLASH\_SECTOR\_END}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{RTT\_FLASH\_SECTOR\_END}{RTT\_FLASH\_SECTOR\_END}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d} -\#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR\+\_\+\+END~0x080\+FFFFF} +{\footnotesize\ttfamily \#define RTT\+\_\+\+FLASH\+\_\+\+SECTOR\+\_\+\+END~0x080\+FFFFF} @@ -188,11 +186,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00039}{39}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00040}{40}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga47f454f804b4dbc26cae079e8d8641e6}\index{Trace configs@{Trace configs}!HARDFAULT\_SERIAL\_TRACE@{HARDFAULT\_SERIAL\_TRACE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga47f454f804b4dbc26cae079e8d8641e6}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga47f454f804b4dbc26cae079e8d8641e6} +\index{Trace configs@{Trace configs}!HARDFAULT\_SERIAL\_TRACE@{HARDFAULT\_SERIAL\_TRACE}} \index{HARDFAULT\_SERIAL\_TRACE@{HARDFAULT\_SERIAL\_TRACE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HARDFAULT\_SERIAL\_TRACE}{HARDFAULT\_SERIAL\_TRACE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga47f454f804b4dbc26cae079e8d8641e6} -\#define HARDFAULT\+\_\+\+SERIAL\+\_\+\+TRACE} +{\footnotesize\ttfamily \#define HARDFAULT\+\_\+\+SERIAL\+\_\+\+TRACE} @@ -202,11 +200,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00040}{40}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00043}{43}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}\index{Trace configs@{Trace configs}!HF\_RTT\_TAG\_BASE@{HF\_RTT\_TAG\_BASE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313}\label{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313} +\index{Trace configs@{Trace configs}!HF\_RTT\_TAG\_BASE@{HF\_RTT\_TAG\_BASE}} \index{HF\_RTT\_TAG\_BASE@{HF\_RTT\_TAG\_BASE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HF\_RTT\_TAG\_BASE}{HF\_RTT\_TAG\_BASE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gadc960255719c7eff4bdfaa850be9b313} -\#define HF\+\_\+\+RTT\+\_\+\+TAG\+\_\+\+BASE~0x\+DEAD0000} +{\footnotesize\ttfamily \#define HF\+\_\+\+RTT\+\_\+\+TAG\+\_\+\+BASE~0x\+DEAD0000} @@ -216,11 +214,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00043}{43}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00044}{44}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}\index{Trace configs@{Trace configs}!HF\_RTT\_TAIL\_SIZE@{HF\_RTT\_TAIL\_SIZE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca}\label{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca} +\index{Trace configs@{Trace configs}!HF\_RTT\_TAIL\_SIZE@{HF\_RTT\_TAIL\_SIZE}} \index{HF\_RTT\_TAIL\_SIZE@{HF\_RTT\_TAIL\_SIZE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HF\_RTT\_TAIL\_SIZE}{HF\_RTT\_TAIL\_SIZE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gafcc7ea03d4df8f1909e580b519a7f3ca} -\#define HF\+\_\+\+RTT\+\_\+\+TAIL\+\_\+\+SIZE~\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE}}} +{\footnotesize\ttfamily \#define HF\+\_\+\+RTT\+\_\+\+TAIL\+\_\+\+SIZE~\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\+\_\+\+FLASH\+\_\+\+BUFFER\+\_\+\+SIZE}}} @@ -230,11 +228,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00044}{44}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00045}{45}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}\index{Trace configs@{Trace configs}!HF\_STACK\_DUMP\_WORDS@{HF\_STACK\_DUMP\_WORDS}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b}\label{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b} +\index{Trace configs@{Trace configs}!HF\_STACK\_DUMP\_WORDS@{HF\_STACK\_DUMP\_WORDS}} \index{HF\_STACK\_DUMP\_WORDS@{HF\_STACK\_DUMP\_WORDS}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HF\_STACK\_DUMP\_WORDS}{HF\_STACK\_DUMP\_WORDS}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_gaa31234688b333a505aaa57b8ecdedf5b} -\#define HF\+\_\+\+STACK\+\_\+\+DUMP\+\_\+\+WORDS~32} +{\footnotesize\ttfamily \#define HF\+\_\+\+STACK\+\_\+\+DUMP\+\_\+\+WORDS~32} @@ -244,11 +242,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00045}{45}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00046}{46}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga0c602733a4a359bf8c095d71cd4d0f63}\index{Trace configs@{Trace configs}!HF\_FLASH\_ADDR@{HF\_FLASH\_ADDR}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga0c602733a4a359bf8c095d71cd4d0f63}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga0c602733a4a359bf8c095d71cd4d0f63} +\index{Trace configs@{Trace configs}!HF\_FLASH\_ADDR@{HF\_FLASH\_ADDR}} \index{HF\_FLASH\_ADDR@{HF\_FLASH\_ADDR}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HF\_FLASH\_ADDR}{HF\_FLASH\_ADDR}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga0c602733a4a359bf8c095d71cd4d0f63} -\#define HF\+\_\+\+FLASH\+\_\+\+ADDR~((uint32\+\_\+t)0x080\+FF000)} +{\footnotesize\ttfamily \#define HF\+\_\+\+FLASH\+\_\+\+ADDR~((uint32\+\_\+t)0x080\+FF000)} @@ -258,11 +256,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00046}{46}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00047}{47}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga92d0d14732edb7dfa21d483304bdb051}\index{Trace configs@{Trace configs}!HF\_RAM\_END@{HF\_RAM\_END}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga92d0d14732edb7dfa21d483304bdb051}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga92d0d14732edb7dfa21d483304bdb051} +\index{Trace configs@{Trace configs}!HF\_RAM\_END@{HF\_RAM\_END}} \index{HF\_RAM\_END@{HF\_RAM\_END}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{HF\_RAM\_END}{HF\_RAM\_END}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga92d0d14732edb7dfa21d483304bdb051} -\#define HF\+\_\+\+RAM\+\_\+\+END~0x20030000} +{\footnotesize\ttfamily \#define HF\+\_\+\+RAM\+\_\+\+END~0x20030000} @@ -272,11 +270,11 @@ Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00047}{47}} of fil Definition at line \mbox{\hyperlink{mylibs__config_8h_source_l00048}{48}} of file \mbox{\hyperlink{mylibs__config_8h_source}{mylibs\+\_\+config.\+h}}. -\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}\index{Trace configs@{Trace configs}!GPIO\_TRACE\_ENABLE@{GPIO\_TRACE\_ENABLE}} +\Hypertarget{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}\label{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b} +\index{Trace configs@{Trace configs}!GPIO\_TRACE\_ENABLE@{GPIO\_TRACE\_ENABLE}} \index{GPIO\_TRACE\_ENABLE@{GPIO\_TRACE\_ENABLE}!Trace configs@{Trace configs}} \doxysubsubsubsubsection{\texorpdfstring{GPIO\_TRACE\_ENABLE}{GPIO\_TRACE\_ENABLE}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b} -\#define GPIO\+\_\+\+TRACE\+\_\+\+ENABLE} +{\footnotesize\ttfamily \#define GPIO\+\_\+\+TRACE\+\_\+\+ENABLE} diff --git a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex index 7672e01..1b2279c 100644 --- a/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex +++ b/Doc/latex/group___t_r_a_c_e___g_p_i_o.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{GPIO trace defines } +\doxysubsubsubsection{GPIO trace defines} \hypertarget{group___t_r_a_c_e___g_p_i_o}{}\label{group___t_r_a_c_e___g_p_i_o}\index{GPIO trace defines@{GPIO trace defines}} @@ -15,9 +15,9 @@ Collaboration diagram for GPIO trace defines\+:\nopagebreak \doxysubsubsubsubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{TRACE\+\_\+\+GPIO\+\_\+\+RESET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{TRACE\+\_\+\+GPIO\+\_\+\+RESET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+)~(\+\_\+gpio\+\_\+)-\/$>$BSRR = ((\+\_\+pin\+\_\+)$<$$<$16) \begin{DoxyCompactList}\small\item\em Сбросить указанную ножку GPIO. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}{TRACE\+\_\+\+GPIO\+\_\+\+SET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}{TRACE\+\_\+\+GPIO\+\_\+\+SET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+)~(\+\_\+gpio\+\_\+)-\/$>$BSRR = (((\+\_\+pin\+\_\+))) \begin{DoxyCompactList}\small\item\em Установить указанную ножку GPIO. \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -28,23 +28,17 @@ Collaboration diagram for GPIO trace defines\+:\nopagebreak \begin{DoxyItemize} \item \doxylink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{TRACE\+\_\+\+GPIO\+\_\+\+RESET()} -\/ для сброса ножки GPIO (через BSRR) \item \doxylink{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}{TRACE\+\_\+\+GPIO\+\_\+\+SET()} -\/ для выставления ножки GPIO (через BSRR) -\item Если трассировка \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}{GPIO\+\_\+\+TRACE\+\_\+\+ENABLE} отключена, то все дефайны определяются как \textquotesingle{}ничего\textquotesingle{} и на производительность кода не влияют +\item Если трассировка \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_ga4222e0e400ad81737cefcabeb03fd23b}{GPIO\+\_\+\+TRACE\+\_\+\+ENABLE} отключена, то все дефайны определяются как \textquotesingle{}ничего\textquotesingle{} и на производительность кода не влияют ~\newline + \end{DoxyItemize} -\label{doc-define-members} -\Hypertarget{group___t_r_a_c_e___g_p_i_o_doc-define-members} \doxysubsubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}\index{GPIO trace defines@{GPIO trace defines}!TRACE\_GPIO\_RESET@{TRACE\_GPIO\_RESET}} +\Hypertarget{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}\label{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a} +\index{GPIO trace defines@{GPIO trace defines}!TRACE\_GPIO\_RESET@{TRACE\_GPIO\_RESET}} \index{TRACE\_GPIO\_RESET@{TRACE\_GPIO\_RESET}!GPIO trace defines@{GPIO trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{TRACE\_GPIO\_RESET}{TRACE\_GPIO\_RESET}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a} -\#define TRACE\+\_\+\+GPIO\+\_\+\+RESET(\begin{DoxyParamCaption}\item[{}]{\+\_\+gpio\+\_\+}{, }\item[{}]{\+\_\+pin\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define TRACE\+\_\+\+GPIO\+\_\+\+RESET(\begin{DoxyParamCaption}\item[{}]{\+\_\+gpio\+\_\+, }\item[{}]{\+\_\+pin\+\_\+ }\end{DoxyParamCaption})~(\+\_\+gpio\+\_\+)-\/$>$BSRR = ((\+\_\+pin\+\_\+)$<$$<$16)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_gpio\_)-\/>BSRR\ =\ ((\_pin\_)<<16)} - -\end{DoxyCode} Сбросить указанную ножку GPIO. @@ -64,17 +58,12 @@ Collaboration diagram for GPIO trace defines\+:\nopagebreak Definition at line \mbox{\hyperlink{trace_8h_source_l00142}{142}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}\index{GPIO trace defines@{GPIO trace defines}!TRACE\_GPIO\_SET@{TRACE\_GPIO\_SET}} +\Hypertarget{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb}\label{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb} +\index{GPIO trace defines@{GPIO trace defines}!TRACE\_GPIO\_SET@{TRACE\_GPIO\_SET}} \index{TRACE\_GPIO\_SET@{TRACE\_GPIO\_SET}!GPIO trace defines@{GPIO trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{TRACE\_GPIO\_SET}{TRACE\_GPIO\_SET}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___g_p_i_o_ga02a6a7b273766121db8ad4a1371373eb} -\#define TRACE\+\_\+\+GPIO\+\_\+\+SET(\begin{DoxyParamCaption}\item[{}]{\+\_\+gpio\+\_\+}{, }\item[{}]{\+\_\+pin\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define TRACE\+\_\+\+GPIO\+\_\+\+SET(\begin{DoxyParamCaption}\item[{}]{\+\_\+gpio\+\_\+, }\item[{}]{\+\_\+pin\+\_\+ }\end{DoxyParamCaption})~(\+\_\+gpio\+\_\+)-\/$>$BSRR = (((\+\_\+pin\+\_\+)))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_gpio\_)-\/>BSRR\ =\ (((\_pin\_)))} - -\end{DoxyCode} Установить указанную ножку GPIO. diff --git a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex index 768442a..612592f 100644 --- a/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex +++ b/Doc/latex/group___t_r_a_c_e___h_a_r_d_f_a_u_l_t.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Hardfault trace defines } +\doxysubsubsubsection{Hardfault trace defines} \hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}{}\label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}\index{Hardfault trace defines@{Hardfault trace defines}} @@ -78,14 +78,12 @@ struct \mbox{\hyperlink{struct_h_f___stack_frame__t}{HF\+\_\+\+Stack\+Frame\+\_\ \end{DoxyCode} -\label{doc-func-members} -\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}\index{Hardfault trace defines@{Hardfault trace defines}!HF\_CheckRecovered@{HF\_CheckRecovered}} +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f}\label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f} +\index{Hardfault trace defines@{Hardfault trace defines}!HF\_CheckRecovered@{HF\_CheckRecovered}} \index{HF\_CheckRecovered@{HF\_CheckRecovered}!Hardfault trace defines@{Hardfault trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{HF\_CheckRecovered()}{HF\_CheckRecovered()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_ga03f8b6f3b537ee1c8e91065c60db504f} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int HF\+\_\+\+Check\+Recovered (\begin{DoxyParamCaption}\item[{int}]{erase}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int HF\+\_\+\+Check\+Recovered (\begin{DoxyParamCaption}\item[{int}]{erase }\end{DoxyParamCaption})} @@ -107,11 +105,11 @@ int Definition at line \mbox{\hyperlink{trace_8h_source_l00486}{486}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}\index{Hardfault trace defines@{Hardfault trace defines}!HF\_HandleFault@{HF\_HandleFault}} +\Hypertarget{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7}\label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7} +\index{Hardfault trace defines@{Hardfault trace defines}!HF\_HandleFault@{HF\_HandleFault}} \index{HF\_HandleFault@{HF\_HandleFault}!Hardfault trace defines@{Hardfault trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{HF\_HandleFault()}{HF\_HandleFault()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t_gadd8e10e7ec3b0204f7f92062ecd452f7} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void HF\+\_\+\+Handle\+Fault (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void HF\+\_\+\+Handle\+Fault (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex index 68a1594..67d4bf1 100644 --- a/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex +++ b/Doc/latex/group___t_r_a_c_e___r_t_t___f_l_a_s_h.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Flash RTT Buffer } +\doxysubsubsubsection{Flash RTT Buffer} \hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h}{}\label{group___t_r_a_c_e___r_t_t___f_l_a_s_h}\index{Flash RTT Buffer@{Flash RTT Buffer}} @@ -56,14 +56,12 @@ struct \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\+\_\+\+Flash\+Header \item \doxylink{group___t_r_a_c_e___c_o_n_f_i_g_gafeca0be3688dea07ff443f894668003d}{RTT\+\_\+\+FLASH\+\_\+\+SECTOR\+\_\+\+END} -\/ Конец сектора RTT\+\_\+\+FLASH\+\_\+\+SECTOR \end{DoxyItemize} -\label{doc-func-members} -\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_doc-func-members} \doxysubsubsubsubsection{Function Documentation} -\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_FlashPrepare@{RTT\_FlashPrepare}} +\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6}\label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6} +\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_FlashPrepare@{RTT\_FlashPrepare}} \index{RTT\_FlashPrepare@{RTT\_FlashPrepare}!Flash RTT Buffer@{Flash RTT Buffer}} \doxysubsubsubsubsubsection{\texorpdfstring{RTT\_FlashPrepare()}{RTT\_FlashPrepare()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga21353cb4f5af666237739e62ce019cd6} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void RTT\+\_\+\+Flash\+Prepare (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE void RTT\+\_\+\+Flash\+Prepare (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} @@ -73,11 +71,11 @@ struct \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\+\_\+\+Flash\+Header Definition at line \mbox{\hyperlink{trace_8h_source_l00190}{190}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_SaveToFlash@{RTT\_SaveToFlash}} +\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63}\label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63} +\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_SaveToFlash@{RTT\_SaveToFlash}} \index{RTT\_SaveToFlash@{RTT\_SaveToFlash}!Flash RTT Buffer@{Flash RTT Buffer}} \doxysubsubsubsubsubsection{\texorpdfstring{RTT\_SaveToFlash()}{RTT\_SaveToFlash()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga79f222c8ab644de4d47f07528d1edd63} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Save\+To\+Flash (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tag}{, }\item[{uint32\+\_\+t}]{tail\+\_\+size}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Save\+To\+Flash (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tag, }\item[{uint32\+\_\+t}]{tail\+\_\+size }\end{DoxyParamCaption})} @@ -103,11 +101,11 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00190}{190}} of file \mbox{ Definition at line \mbox{\hyperlink{trace_8h_source_l00214}{214}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_ReadFromFlash@{RTT\_ReadFromFlash}} +\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146}\label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146} +\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_ReadFromFlash@{RTT\_ReadFromFlash}} \index{RTT\_ReadFromFlash@{RTT\_ReadFromFlash}!Flash RTT Buffer@{Flash RTT Buffer}} \doxysubsubsubsubsubsection{\texorpdfstring{RTT\_ReadFromFlash()}{RTT\_ReadFromFlash()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga734b2ebbf0c77699b739013878cfd146} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Read\+From\+Flash (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tag}{, }\item[{char \texorpdfstring{$\ast$}{*}}]{Buffer}{, }\item[{uint32\+\_\+t}]{tail\+\_\+size}{, }\item[{uint32\+\_\+t \texorpdfstring{$\ast$}{*}}]{read\+\_\+size}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Read\+From\+Flash (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{tag, }\item[{char \texorpdfstring{$\ast$}{*}}]{Buffer, }\item[{uint32\+\_\+t}]{tail\+\_\+size, }\item[{uint32\+\_\+t \texorpdfstring{$\ast$}{*}}]{read\+\_\+size }\end{DoxyParamCaption})} @@ -135,11 +133,11 @@ Definition at line \mbox{\hyperlink{trace_8h_source_l00214}{214}} of file \mbox{ Definition at line \mbox{\hyperlink{trace_8h_source_l00311}{311}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_EraseFlash@{RTT\_EraseFlash}} +\Hypertarget{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1}\label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1} +\index{Flash RTT Buffer@{Flash RTT Buffer}!RTT\_EraseFlash@{RTT\_EraseFlash}} \index{RTT\_EraseFlash@{RTT\_EraseFlash}!Flash RTT Buffer@{Flash RTT Buffer}} \doxysubsubsubsubsubsection{\texorpdfstring{RTT\_EraseFlash()}{RTT\_EraseFlash()}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___r_t_t___f_l_a_s_h_ga8d8c6850e32b42871faefce3352012d1} -\+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Erase\+Flash (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \+\_\+\+\_\+\+STATIC\+\_\+\+FORCEINLINE int RTT\+\_\+\+Erase\+Flash (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} diff --git a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex index 82ada06..be600cd 100644 --- a/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex +++ b/Doc/latex/group___t_r_a_c_e___s_e_r_i_a_l.tex @@ -1,4 +1,4 @@ -\doxysubsubsubsection{Serial trace defines } +\doxysubsubsubsection{Serial trace defines} \hypertarget{group___t_r_a_c_e___s_e_r_i_a_l}{}\label{group___t_r_a_c_e___s_e_r_i_a_l}\index{Serial trace defines@{Serial trace defines}} @@ -15,7 +15,7 @@ Collaboration diagram for Serial trace defines\+:\nopagebreak \doxysubsubsubsubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\+\_\+printf}}(...) +\#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\+\_\+printf}}(...)~SEGGER\+\_\+\+RTT\+\_\+printf(0, \+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+) \begin{DoxyCompactList}\small\item\em Универсальный макрос для вывода трассировки \end{DoxyCompactList}\item \#define \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}{log\+\_\+printf}}(TAG, fmt, ...) \begin{DoxyCompactList}\small\item\em Макрос логирования с поддержкой уровней LOG\+\_\+\+LEVEL. \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -32,15 +32,13 @@ Collaboration diagram for Serial trace defines\+:\nopagebreak Но библиотеку STDOUT надо подключить самостоятельно\+: -\begin{DoxyVerb} Manage Run-Time Environment -> Compiler -> I/O -> STDOUT -\end{DoxyVerb} +\begin{DoxyVerb} Manage Run-Time Environment -> Compiler -> I/O -> STDOUT \end{DoxyVerb} Для SWO также надо включить трассировку\+: ~\newline -\begin{DoxyVerb} Options For Target -> Debug -> Debugger Settings -\end{DoxyVerb} +\begin{DoxyVerb} Options For Target -> Debug -> Debugger Settings\end{DoxyVerb} В вкладке Debug\+: @@ -48,24 +46,18 @@ Collaboration diagram for Serial trace defines\+:\nopagebreak \item Port = SW В вкладке Trace\+: \item Указать Core Clock \item Выставить Trace Port = SWO -\item ITM -\/ выбрать нужный порт (для Keil нулевой порт) +\item ITM -\/ выбрать нужный порт (для Keil нулевой порт) ~\newline + \end{DoxyItemize} \end{DoxyItemize} -\label{doc-define-members} -\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_doc-define-members} \doxysubsubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}\index{Serial trace defines@{Serial trace defines}!my\_printf@{my\_printf}} +\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}\label{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa} +\index{Serial trace defines@{Serial trace defines}!my\_printf@{my\_printf}} \index{my\_printf@{my\_printf}!Serial trace defines@{Serial trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{my\_printf}{my\_printf}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa} -\#define my\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{}...{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define my\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})~SEGGER\+\_\+\+RTT\+\_\+printf(0, \+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{SEGGER\_RTT\_printf(0,\ \_\_VA\_ARGS\_\_)} - -\end{DoxyCode} Универсальный макрос для вывода трассировки @@ -79,11 +71,11 @@ Collaboration diagram for Serial trace defines\+:\nopagebreak Definition at line \mbox{\hyperlink{trace_8h_source_l00071}{71}} of file \mbox{\hyperlink{trace_8h_source}{trace.\+h}}. -\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}\index{Serial trace defines@{Serial trace defines}!log\_printf@{log\_printf}} +\Hypertarget{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26}\label{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26} +\index{Serial trace defines@{Serial trace defines}!log\_printf@{log\_printf}} \index{log\_printf@{log\_printf}!Serial trace defines@{Serial trace defines}} \doxysubsubsubsubsubsection{\texorpdfstring{log\_printf}{log\_printf}} -{\footnotesize\ttfamily \label{group___t_r_a_c_e___s_e_r_i_a_l_ga730fb7b8d0bbb348dca73c15bd0e0b26} -\#define log\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{TAG}{, }\item[{}]{fmt}{, }\item[{}]{}...{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define log\+\_\+printf(\begin{DoxyParamCaption}\item[{}]{TAG, }\item[{}]{fmt, }\item[{}]{... }\end{DoxyParamCaption})} {\bfseries Value\+:} \begin{DoxyCode}{0} diff --git a/Doc/latex/group___t_r_a_c_k_e_r_s.tex b/Doc/latex/group___t_r_a_c_k_e_r_s.tex index 9f4c6e3..8d342a4 100644 --- a/Doc/latex/group___t_r_a_c_k_e_r_s.tex +++ b/Doc/latex/group___t_r_a_c_k_e_r_s.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Trackers defines } +\doxysubsubsection{Trackers defines} \hypertarget{group___t_r_a_c_k_e_r_s}{}\label{group___t_r_a_c_k_e_r_s}\index{Trackers defines@{Trackers defines}} @@ -17,43 +17,43 @@ Collaboration diagram for Trackers defines\+:\nopagebreak \item \#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}{Tracker\+Type\+Def}}(num\+\_\+user\+\_\+vars) \begin{DoxyCompactList}\small\item\em Структура для счетчиков отладки \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}(\+\_\+user\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}(\+\_\+user\+\_\+)~(sizeof(\+\_\+user\+\_\+) / sizeof(uint32\+\_\+t)) \begin{DoxyCompactList}\small\item\em Получить количетство пользовательских переменных \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~((\+\_\+uservarnumb\+\_\+) $<$ \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}((\+\_\+cntstruct\+\_\+).user)) \begin{DoxyCompactList}\small\item\em Проверка существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~if(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)) \begin{DoxyCompactList}\small\item\em Условие для проверки существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)) ? \+\_\+uservarnumb\+\_\+ \+: 0 \begin{DoxyCompactList}\small\item\em Тернарный оператор для проверки существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{Tracker\+Get\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{Tracker\+Get\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok \begin{DoxyCompactList}\small\item\em Считать счетчик успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{Tracker\+Get\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{Tracker\+Get\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err \begin{DoxyCompactList}\small\item\em Считать счетчик ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{Tracker\+Get\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{Tracker\+Get\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn \begin{DoxyCompactList}\small\item\em Считать счетчик предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{Tracker\+Get\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{Tracker\+Get\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~(\+\_\+cntstruct\+\_\+).user\mbox{[}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)\mbox{]} \begin{DoxyCompactList}\small\item\em Считать пользовательскую переменную \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{Tracker\+Cnt\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{Tracker\+Cnt\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{Tracker\+Cnt\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{Tracker\+Cnt\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{Tracker\+Cnt\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{Tracker\+Cnt\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{Tracker\+Cnt\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{Tracker\+Cnt\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]}++; \begin{DoxyCompactList}\small\item\em Инкрементирование пользовательской переменной \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{Tracker\+Write\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+, \+\_\+val\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{Tracker\+Write\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+, \+\_\+val\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = (\+\_\+val\+\_\+) \begin{DoxyCompactList}\small\item\em Запись числа в пользовательскую переменную \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{Tracker\+Clear\+\_\+\+All}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{Tracker\+Clear\+\_\+\+All}}(\+\_\+cntstruct\+\_\+)~memset(\&(\+\_\+cntstruct\+\_\+), 0, sizeof(\+\_\+cntstruct\+\_\+)) \begin{DoxyCompactList}\small\item\em Очистка всей структуры \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{Tracker\+Clear\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{Tracker\+Clear\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{Tracker\+Clear\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{Tracker\+Clear\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{Tracker\+Clear\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{Tracker\+Clear\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{Tracker\+Clear\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{Tracker\+Clear\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = 0; \begin{DoxyCompactList}\small\item\em Очистка пользовательской переменной \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All}}(\+\_\+cntstruct\+\_\+)~memset(\&(\+\_\+cntstruct\+\_\+).user, 0, sizeof((\+\_\+cntstruct\+\_\+).user)) \begin{DoxyCompactList}\small\item\em Очистка всех пользовательских переменных \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -111,18 +111,17 @@ Collaboration diagram for Trackers defines\+:\nopagebreak \item \doxylink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{Tracker\+Clear\+\_\+\+Err()} \item \doxylink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{Tracker\+Clear\+\_\+\+Warn()} \item \doxylink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{Tracker\+Clear\+\_\+\+User(n)} -\item \doxylink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All()} +\item \doxylink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All()} ~\newline + \end{DoxyItemize} \end{DoxyItemize} -\label{doc-define-members} -\Hypertarget{group___t_r_a_c_k_e_r_s_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}\index{Trackers defines@{Trackers defines}!TrackerTypeDef@{TrackerTypeDef}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}\label{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4} +\index{Trackers defines@{Trackers defines}!TrackerTypeDef@{TrackerTypeDef}} \index{TrackerTypeDef@{TrackerTypeDef}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerTypeDef}{TrackerTypeDef}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4} -\#define Tracker\+Type\+Def(\begin{DoxyParamCaption}\item[{}]{num\+\_\+user\+\_\+vars}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Type\+Def(\begin{DoxyParamCaption}\item[{}]{num\+\_\+user\+\_\+vars }\end{DoxyParamCaption})} {\bfseries Value\+:} \begin{DoxyCode}{0} @@ -150,17 +149,12 @@ Collaboration diagram for Trackers defines\+:\nopagebreak Definition at line \mbox{\hyperlink{trackers_8h_source_l00070}{70}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}\index{Trackers defines@{Trackers defines}!num\_of\_usercnts@{num\_of\_usercnts}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}\label{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc} +\index{Trackers defines@{Trackers defines}!num\_of\_usercnts@{num\_of\_usercnts}} \index{num\_of\_usercnts@{num\_of\_usercnts}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{num\_of\_usercnts}{num\_of\_usercnts}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc} -\#define num\+\_\+of\+\_\+usercnts(\begin{DoxyParamCaption}\item[{}]{\+\_\+user\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define num\+\_\+of\+\_\+usercnts(\begin{DoxyParamCaption}\item[{}]{\+\_\+user\+\_\+ }\end{DoxyParamCaption})~(sizeof(\+\_\+user\+\_\+) / sizeof(uint32\+\_\+t))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\textcolor{keyword}{sizeof}(\_user\_)\ /\ \textcolor{keyword}{sizeof}(uint32\_t))} - -\end{DoxyCode} Получить количетство пользовательских переменных @@ -169,17 +163,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00070}{70}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00080}{80}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}\index{Trackers defines@{Trackers defines}!assert\_usertracker@{assert\_usertracker}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}\label{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e} +\index{Trackers defines@{Trackers defines}!assert\_usertracker@{assert\_usertracker}} \index{assert\_usertracker@{assert\_usertracker}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{assert\_usertracker}{assert\_usertracker}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e} -\#define assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~((\+\_\+uservarnumb\+\_\+) $<$ \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}((\+\_\+cntstruct\+\_\+).user))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((\_uservarnumb\_)\ <\ \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\_of\_usercnts}}((\_cntstruct\_).user))} - -\end{DoxyCode} Проверка существует ли указанная пользовательская переменная @@ -188,17 +177,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00080}{80}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00082}{82}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}\index{Trackers defines@{Trackers defines}!if\_assert\_usertracker@{if\_assert\_usertracker}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}\label{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07} +\index{Trackers defines@{Trackers defines}!if\_assert\_usertracker@{if\_assert\_usertracker}} \index{if\_assert\_usertracker@{if\_assert\_usertracker}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{if\_assert\_usertracker}{if\_assert\_usertracker}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07} -\#define if\+\_\+assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define if\+\_\+assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~if(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{\textcolor{keywordflow}{if}(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_))} - -\end{DoxyCode} Условие для проверки существует ли указанная пользовательская переменная @@ -207,17 +191,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00082}{82}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00084}{84}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}\index{Trackers defines@{Trackers defines}!tern\_assert\_usertracker@{tern\_assert\_usertracker}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}\label{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30} +\index{Trackers defines@{Trackers defines}!tern\_assert\_usertracker@{tern\_assert\_usertracker}} \index{tern\_assert\_usertracker@{tern\_assert\_usertracker}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{tern\_assert\_usertracker}{tern\_assert\_usertracker}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30} -\#define tern\+\_\+assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define tern\+\_\+assert\+\_\+usertracker(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)) ? \+\_\+uservarnumb\+\_\+ \+: 0} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_))\ ?\ \_uservarnumb\_\ :\ 0} - -\end{DoxyCode} Тернарный оператор для проверки существует ли указанная пользовательская переменная @@ -226,17 +205,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00084}{84}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00086}{86}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}\index{Trackers defines@{Trackers defines}!TrackerGet\_Ok@{TrackerGet\_Ok}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}\label{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169} +\index{Trackers defines@{Trackers defines}!TrackerGet\_Ok@{TrackerGet\_Ok}} \index{TrackerGet\_Ok@{TrackerGet\_Ok}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerGet\_Ok}{TrackerGet\_Ok}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169} -\#define Tracker\+Get\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Get\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_ok} - -\end{DoxyCode} Считать счетчик успешных событий @@ -245,17 +219,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00086}{86}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00090}{90}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}\index{Trackers defines@{Trackers defines}!TrackerGet\_Err@{TrackerGet\_Err}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}\label{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e} +\index{Trackers defines@{Trackers defines}!TrackerGet\_Err@{TrackerGet\_Err}} \index{TrackerGet\_Err@{TrackerGet\_Err}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerGet\_Err}{TrackerGet\_Err}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e} -\#define Tracker\+Get\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Get\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_err} - -\end{DoxyCode} Считать счетчик ошибок @@ -264,17 +233,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00090}{90}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00092}{92}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}\index{Trackers defines@{Trackers defines}!TrackerGet\_Warn@{TrackerGet\_Warn}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}\label{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758} +\index{Trackers defines@{Trackers defines}!TrackerGet\_Warn@{TrackerGet\_Warn}} \index{TrackerGet\_Warn@{TrackerGet\_Warn}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerGet\_Warn}{TrackerGet\_Warn}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758} -\#define Tracker\+Get\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Get\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_warn} - -\end{DoxyCode} Считать счетчик предупреждений @@ -283,17 +247,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00092}{92}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00094}{94}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}\index{Trackers defines@{Trackers defines}!TrackerGet\_User@{TrackerGet\_User}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}\label{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb} +\index{Trackers defines@{Trackers defines}!TrackerGet\_User@{TrackerGet\_User}} \index{TrackerGet\_User@{TrackerGet\_User}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerGet\_User}{TrackerGet\_User}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb} -\#define Tracker\+Get\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Get\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).user\mbox{[}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)\mbox{]}} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).user[\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\_assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_)]} - -\end{DoxyCode} Считать пользовательскую переменную @@ -309,17 +268,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00094}{94}} of file \mbo Definition at line \mbox{\hyperlink{trackers_8h_source_l00106}{106}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Ok@{TrackerCnt\_Ok}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}\label{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1} +\index{Trackers defines@{Trackers defines}!TrackerCnt\_Ok@{TrackerCnt\_Ok}} \index{TrackerCnt\_Ok@{TrackerCnt\_Ok}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerCnt\_Ok}{TrackerCnt\_Ok}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1} -\#define Tracker\+Cnt\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Cnt\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok++} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_ok++} - -\end{DoxyCode} Инкрементирование счетчика успешных событий @@ -328,17 +282,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00106}{106}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00111}{111}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Err@{TrackerCnt\_Err}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}\label{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9} +\index{Trackers defines@{Trackers defines}!TrackerCnt\_Err@{TrackerCnt\_Err}} \index{TrackerCnt\_Err@{TrackerCnt\_Err}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerCnt\_Err}{TrackerCnt\_Err}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9} -\#define Tracker\+Cnt\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Cnt\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err++} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_err++} - -\end{DoxyCode} Инкрементирование счетчика ошибок @@ -347,17 +296,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00111}{111}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00113}{113}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}\index{Trackers defines@{Trackers defines}!TrackerCnt\_Warn@{TrackerCnt\_Warn}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}\label{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57} +\index{Trackers defines@{Trackers defines}!TrackerCnt\_Warn@{TrackerCnt\_Warn}} \index{TrackerCnt\_Warn@{TrackerCnt\_Warn}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerCnt\_Warn}{TrackerCnt\_Warn}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57} -\#define Tracker\+Cnt\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Cnt\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn++} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_warn++} - -\end{DoxyCode} Инкрементирование счетчика предупреждений @@ -366,17 +310,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00113}{113}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00115}{115}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}\index{Trackers defines@{Trackers defines}!TrackerCnt\_User@{TrackerCnt\_User}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}\label{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e} +\index{Trackers defines@{Trackers defines}!TrackerCnt\_User@{TrackerCnt\_User}} \index{TrackerCnt\_User@{TrackerCnt\_User}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerCnt\_User}{TrackerCnt\_User}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e} -\#define Tracker\+Cnt\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Cnt\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]}++;} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\_assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]++;} - -\end{DoxyCode} Инкрементирование пользовательской переменной @@ -385,17 +324,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00115}{115}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00117}{117}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}\index{Trackers defines@{Trackers defines}!TrackerWrite\_User@{TrackerWrite\_User}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}\label{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51} +\index{Trackers defines@{Trackers defines}!TrackerWrite\_User@{TrackerWrite\_User}} \index{TrackerWrite\_User@{TrackerWrite\_User}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerWrite\_User}{TrackerWrite\_User}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51} -\#define Tracker\+Write\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{, }\item[{}]{\+\_\+val\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Write\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+, }\item[{}]{\+\_\+val\+\_\+ }\end{DoxyParamCaption})~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = (\+\_\+val\+\_\+)} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\_assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ (\_val\_)} - -\end{DoxyCode} Запись числа в пользовательскую переменную @@ -404,17 +338,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00117}{117}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00119}{119}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}\index{Trackers defines@{Trackers defines}!TrackerClear\_All@{TrackerClear\_All}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}\label{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b} +\index{Trackers defines@{Trackers defines}!TrackerClear\_All@{TrackerClear\_All}} \index{TrackerClear\_All@{TrackerClear\_All}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_All}{TrackerClear\_All}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b} -\#define Tracker\+Clear\+\_\+\+All(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+All(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~memset(\&(\+\_\+cntstruct\+\_\+), 0, sizeof(\+\_\+cntstruct\+\_\+))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{memset(\&(\_cntstruct\_),\ 0,\ \textcolor{keyword}{sizeof}(\_cntstruct\_))} - -\end{DoxyCode} Очистка всей структуры @@ -423,17 +352,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00119}{119}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00122}{122}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}\index{Trackers defines@{Trackers defines}!TrackerClear\_Ok@{TrackerClear\_Ok}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}\label{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9} +\index{Trackers defines@{Trackers defines}!TrackerClear\_Ok@{TrackerClear\_Ok}} \index{TrackerClear\_Ok@{TrackerClear\_Ok}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_Ok}{TrackerClear\_Ok}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9} -\#define Tracker\+Clear\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+Ok(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok = 0} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_ok\ =\ 0} - -\end{DoxyCode} Очистка счетчика успешных событий @@ -442,17 +366,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00122}{122}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00124}{124}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}\index{Trackers defines@{Trackers defines}!TrackerClear\_Err@{TrackerClear\_Err}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}\label{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74} +\index{Trackers defines@{Trackers defines}!TrackerClear\_Err@{TrackerClear\_Err}} \index{TrackerClear\_Err@{TrackerClear\_Err}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_Err}{TrackerClear\_Err}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74} -\#define Tracker\+Clear\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+Err(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err = 0} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_err\ =\ 0} - -\end{DoxyCode} Очистка счетчика ошибок @@ -461,17 +380,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00124}{124}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00126}{126}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}\index{Trackers defines@{Trackers defines}!TrackerClear\_Warn@{TrackerClear\_Warn}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}\label{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead} +\index{Trackers defines@{Trackers defines}!TrackerClear\_Warn@{TrackerClear\_Warn}} \index{TrackerClear\_Warn@{TrackerClear\_Warn}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_Warn}{TrackerClear\_Warn}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead} -\#define Tracker\+Clear\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+Warn(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn = 0} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\_cntstruct\_).cnt\_warn\ =\ 0} - -\end{DoxyCode} Очистка счетчика предупреждений @@ -480,17 +394,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00126}{126}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00128}{128}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}\index{Trackers defines@{Trackers defines}!TrackerClear\_User@{TrackerClear\_User}} +\Hypertarget{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}\label{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d} +\index{Trackers defines@{Trackers defines}!TrackerClear\_User@{TrackerClear\_User}} \index{TrackerClear\_User@{TrackerClear\_User}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_User}{TrackerClear\_User}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d} -\#define Tracker\+Clear\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{, }\item[{}]{\+\_\+uservarnumb\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+User(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+, }\item[{}]{\+\_\+uservarnumb\+\_\+ }\end{DoxyParamCaption})~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = 0;} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\_assert\_usertracker}}(\_cntstruct\_,\ \_uservarnumb\_)\ (\_cntstruct\_).user[\_uservarnumb\_]\ =\ 0;} - -\end{DoxyCode} Очистка пользовательской переменной @@ -499,17 +408,12 @@ Definition at line \mbox{\hyperlink{trackers_8h_source_l00128}{128}} of file \mb Definition at line \mbox{\hyperlink{trackers_8h_source_l00130}{130}} of file \mbox{\hyperlink{trackers_8h_source}{trackers.\+h}}. -\Hypertarget{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}\index{Trackers defines@{Trackers defines}!TrackerClear\_UserAll@{TrackerClear\_UserAll}} +\Hypertarget{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}\label{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5} +\index{Trackers defines@{Trackers defines}!TrackerClear\_UserAll@{TrackerClear\_UserAll}} \index{TrackerClear\_UserAll@{TrackerClear\_UserAll}!Trackers defines@{Trackers defines}} \doxysubsubsubsubsection{\texorpdfstring{TrackerClear\_UserAll}{TrackerClear\_UserAll}} -{\footnotesize\ttfamily \label{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5} -\#define Tracker\+Clear\+\_\+\+User\+All(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Tracker\+Clear\+\_\+\+User\+All(\begin{DoxyParamCaption}\item[{}]{\+\_\+cntstruct\+\_\+ }\end{DoxyParamCaption})~memset(\&(\+\_\+cntstruct\+\_\+).user, 0, sizeof((\+\_\+cntstruct\+\_\+).user))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{memset(\&(\_cntstruct\_).user,\ 0,\ \textcolor{keyword}{sizeof}((\_cntstruct\_).user))} - -\end{DoxyCode} Очистка всех пользовательских переменных diff --git a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex index 8d43b86..58c3c5a 100644 --- a/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex +++ b/Doc/latex/group___u_t_i_l_s___d_e_f_i_n_e_s.tex @@ -1,4 +1,4 @@ -\doxysubsubsection{Utils defines } +\doxysubsubsection{Utils defines} \hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s}{}\label{group___u_t_i_l_s___d_e_f_i_n_e_s}\index{Utils defines@{Utils defines}} @@ -15,13 +15,13 @@ Collaboration diagram for Utils defines\+:\nopagebreak \doxysubsubsubsubsection*{Macros} \begin{DoxyCompactItemize} \item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{Clear\+Struct}}(\+\_\+struct\+\_\+) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{Clear\+Struct}}(\+\_\+struct\+\_\+)~memset(\&(\+\_\+struct\+\_\+), 0, sizeof(\+\_\+struct\+\_\+)) \begin{DoxyCompactList}\small\item\em Обнуление структуры. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{Divide\+\_\+\+Up}}(\+\_\+val\+\_\+, \+\_\+div\+\_\+) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{Divide\+\_\+\+Up}}(\+\_\+val\+\_\+, \+\_\+div\+\_\+)~((\+\_\+val\+\_\+ -\/ 1) / \+\_\+div\+\_\+) + 1 /\texorpdfstring{$\ast$}{*} через мат выражение \texorpdfstring{$\ast$}{*}/ \begin{DoxyCompactList}\small\item\em Деление с округлением вверх \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{Byte\+Swap16}}(v) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{Byte\+Swap16}}(v)~(((v\&0x\+FF00) $>$$>$ (8)) \texorpdfstring{$\vert$}{|} ((v\&0x00\+FF) $<$$<$ (8))) \begin{DoxyCompactList}\small\item\em Swap between Little Endian and Big Endian. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{ABS}}(x) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{ABS}}(x)~( ((x) $>$ 0)? (x) \+: -\/(x)) \begin{DoxyCompactList}\small\item\em Абсолютное значение числа \end{DoxyCompactList}\end{DoxyCompactItemize} @@ -30,20 +30,13 @@ Collaboration diagram for Utils defines\+:\nopagebreak -\label{doc-define-members} -\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_doc-define-members} \doxysubsubsubsection{Macro Definition Documentation} -\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}\index{Utils defines@{Utils defines}!ClearStruct@{ClearStruct}} +\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}\label{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be} +\index{Utils defines@{Utils defines}!ClearStruct@{ClearStruct}} \index{ClearStruct@{ClearStruct}!Utils defines@{Utils defines}} \doxysubsubsubsubsection{\texorpdfstring{ClearStruct}{ClearStruct}} -{\footnotesize\ttfamily \label{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be} -\#define Clear\+Struct(\begin{DoxyParamCaption}\item[{}]{\+\_\+struct\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Clear\+Struct(\begin{DoxyParamCaption}\item[{}]{\+\_\+struct\+\_\+ }\end{DoxyParamCaption})~memset(\&(\+\_\+struct\+\_\+), 0, sizeof(\+\_\+struct\+\_\+))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{memset(\&(\_struct\_),\ 0,\ \textcolor{keyword}{sizeof}(\_struct\_))} - -\end{DoxyCode} Обнуление структуры. @@ -57,17 +50,12 @@ Collaboration diagram for Utils defines\+:\nopagebreak Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00151}{151}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}} +\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}\label{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e} +\index{Utils defines@{Utils defines}!Divide\_Up@{Divide\_Up}} \index{Divide\_Up@{Divide\_Up}!Utils defines@{Utils defines}} \doxysubsubsubsubsection{\texorpdfstring{Divide\_Up}{Divide\_Up}} -{\footnotesize\ttfamily \label{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e} -\#define Divide\+\_\+\+Up(\begin{DoxyParamCaption}\item[{}]{\+\_\+val\+\_\+}{, }\item[{}]{\+\_\+div\+\_\+}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Divide\+\_\+\+Up(\begin{DoxyParamCaption}\item[{}]{\+\_\+val\+\_\+, }\item[{}]{\+\_\+div\+\_\+ }\end{DoxyParamCaption})~((\+\_\+val\+\_\+ -\/ 1) / \+\_\+div\+\_\+) + 1 /\texorpdfstring{$\ast$}{*} через мат выражение \texorpdfstring{$\ast$}{*}/} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{((\_val\_\ -\/\ 1)\ /\ \_div\_)\ +\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ через\ мат\ выражение\ */}} - -\end{DoxyCode} Деление с округлением вверх @@ -86,17 +74,12 @@ Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00151}{151}} of file Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00162}{162}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}} +\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}\label{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291} +\index{Utils defines@{Utils defines}!ByteSwap16@{ByteSwap16}} \index{ByteSwap16@{ByteSwap16}!Utils defines@{Utils defines}} \doxysubsubsubsubsection{\texorpdfstring{ByteSwap16}{ByteSwap16}} -{\footnotesize\ttfamily \label{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291} -\#define Byte\+Swap16(\begin{DoxyParamCaption}\item[{}]{v}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define Byte\+Swap16(\begin{DoxyParamCaption}\item[{}]{v }\end{DoxyParamCaption})~(((v\&0x\+FF00) $>$$>$ (8)) \texorpdfstring{$\vert$}{|} ((v\&0x00\+FF) $<$$<$ (8)))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(((v\&0xFF00)\ >>\ (8))\ |\ ((v\&0x00FF)\ <<\ (8)))} - -\end{DoxyCode} Swap between Little Endian and Big Endian. @@ -113,17 +96,12 @@ Swap between Little Endian and Big Endian. Definition at line \mbox{\hyperlink{mylibs__defs_8h_source_l00170}{170}} of file \mbox{\hyperlink{mylibs__defs_8h_source}{mylibs\+\_\+defs.\+h}}. -\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\index{Utils defines@{Utils defines}!ABS@{ABS}} +\Hypertarget{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}\label{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759} +\index{Utils defines@{Utils defines}!ABS@{ABS}} \index{ABS@{ABS}!Utils defines@{Utils defines}} \doxysubsubsubsubsection{\texorpdfstring{ABS}{ABS}} -{\footnotesize\ttfamily \label{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759} -\#define ABS(\begin{DoxyParamCaption}\item[{}]{x}{}\end{DoxyParamCaption})} +{\footnotesize\ttfamily \#define ABS(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~( ((x) $>$ 0)? (x) \+: -\/(x))} -{\bfseries Value\+:} -\begin{DoxyCode}{0} -\DoxyCodeLine{(\ ((x)\ >\ 0)?\ (x)\ :\ -\/(x))} - -\end{DoxyCode} Абсолютное значение числа diff --git a/Doc/latex/index.tex b/Doc/latex/index.tex index cf39486..87fb315 100644 --- a/Doc/latex/index.tex +++ b/Doc/latex/index.tex @@ -1,28 +1,28 @@ -\chapter{My\+Libs } +\chapter{My\+Libs} \hypertarget{index}{}\label{index}\index{MyLibs@{MyLibs}} \hypertarget{index_overview}{}\doxysection{\texorpdfstring{Обзор}{Обзор}}\label{index_overview} My\+Libs -\/ это набор библиотек для удобной работы с периферией микроконтроллеров STM32.\hypertarget{index_features}{}\doxysubsection{\texorpdfstring{Основные возможности}{Основные возможности}}\label{index_features} -\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты (\protect\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}{Общие утилиты ({General Tools})}}\label{index_utils_module} +\hypertarget{index_utils_module}{}\doxysubsubsection{\texorpdfstring{Общие утилиты (\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}{Общие утилиты (\doxylink{group___m_y_l_i_b_s___d_e_f_i_n_e_s}{General Tools})}}\label{index_utils_module} \begin{DoxyItemize} \item Макросы для задержек и утилит (\doxylink{group___d_e_l_a_y_s___d_e_f_i_n_e_s}{Delays defines} и \doxylink{group___u_t_i_l_s___d_e_f_i_n_e_s}{Utils defines}) \item Трекеры для статистики и отладки (\doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines} и \doxylink{group___t_r_a_c_e}{Trace defines}) \item Эволюционный алгоритм для оптимизации параметров (\doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{Evolve optimizer}) \item Битовый доступ к регистрам через union (\doxylink{group___b_i_t___a_c_c_e_s_s___d_e_f_i_n_e_s}{Bit access defines}) -\end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \protect\doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка {Trace defines}}}\label{index_trace_module} +\end{DoxyItemize}\hypertarget{index_trace_module}{}\doxysubsubsection{\texorpdfstring{Трассировка \doxylink{group___t_r_a_c_e}{Trace defines}}{Трассировка \doxylink{group___t_r_a_c_e}{Trace defines}}}\label{index_trace_module} \begin{DoxyItemize} \item Serial трассировка через SWO и RTT (\doxylink{group___t_r_a_c_e___s_e_r_i_a_l}{Serial trace defines}) \item GPIO трассировка для отладки (\doxylink{group___t_r_a_c_e___g_p_i_o}{GPIO trace defines}) \item Сохранение логов в Flash память (\doxylink{group___t_r_a_c_e___r_t_t___f_l_a_s_h}{Flash RTT Buffer}) \item Обработка Hard\+Fault с сохранением контекста (\doxylink{group___t_r_a_c_e___h_a_r_d_f_a_u_l_t}{Hardfault trace defines}) -\end{DoxyItemize}\hypertarget{index_gpio_module}{}\doxysubsubsection{\texorpdfstring{Модуль GPIO \protect\doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}{Модуль GPIO {GPIO Tools}}}\label{index_gpio_module} +\end{DoxyItemize}\hypertarget{index_gpio_module}{}\doxysubsubsection{\texorpdfstring{Модуль GPIO \doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}{Модуль GPIO \doxylink{group___m_y___l_i_b_s___g_p_i_o}{GPIO Tools}}}\label{index_gpio_module} \begin{DoxyItemize} \item Инициализация портов и тактирования (\doxylink{group___m_y_l_i_b_s___g_p_i_o___g_e_n_e_r_a_l}{General tools}) \item Управление светодиодами (включение/выключение, моргание, плавное затухание) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___l_e_d_s}{LED tools}) \item Работа с кнопками (чтение состояния, фильтрация дребезга) (\doxylink{group___m_y_l_i_b_s___g_p_i_o___s_w_i_t_c_h}{Switch tools}) -\end{DoxyItemize}\hypertarget{index_tim_module}{}\doxysubsubsection{\texorpdfstring{Модуль таймеров \protect\doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}{Модуль таймеров {TIM Tools}}}\label{index_tim_module} +\end{DoxyItemize}\hypertarget{index_tim_module}{}\doxysubsubsection{\texorpdfstring{Модуль таймеров \doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}{Модуль таймеров \doxylink{group___m_y___l_i_b_s___t_i_m}{TIM Tools}}}\label{index_tim_module} \begin{DoxyItemize} \item Базовая инициализация таймеров (\doxylink{group___m_y_l_i_b_s___t_i_m___g_e_n_e_r_a_l}{General tools}) diff --git a/Doc/latex/longtable_doxygen.sty b/Doc/latex/longtable_doxygen.sty index 39a44b8..e94b78b 100644 --- a/Doc/latex/longtable_doxygen.sty +++ b/Doc/latex/longtable_doxygen.sty @@ -164,7 +164,7 @@ \ifdim \dimen@>\z@\vfil\break\fi \global\@colroom\@colht \ifvoid\LT@foot\else - \global\advance\vsize-\ht\LT@foot + \advance\vsize-\ht\LT@foot \global\advance\@colroom-\ht\LT@foot \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ \maxdepth\z@ @@ -193,13 +193,9 @@ \LT@final@warn \fi \endgraf\penalty -\LT@end@pen - \ifvoid\LT@foot\else - \global\advance\vsize\ht\LT@foot - \global\advance\@colroom\ht\LT@foot - \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@ - \fi \endgroup \global\@mparbottom\z@ + \pagegoal\vsize \endgraf\penalty\z@\addvspace\LTpost \ifvoid\footins\else\insert\footins{}\fi} \def\LT@nofcols#1&{% @@ -396,17 +392,18 @@ \setbox\z@\vbox{\unvbox\@cclv}% \ifdim \ht\LT@lastfoot>\ht\LT@foot \dimen@\pagegoal - \advance\dimen@\ht\LT@foot \advance\dimen@-\ht\LT@lastfoot \ifdim\dimen@<\ht\z@ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% \@makecol \@outputpage - \global\vsize\@colroom \setbox\z@\vbox{\box\LT@head}% \fi \fi - \unvbox\z@\ifvoid\LT@lastfoot\copy\LT@foot\else\box\LT@lastfoot\fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% \fi \else \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% diff --git a/Doc/latex/mainpage_8h_source.tex b/Doc/latex/mainpage_8h_source.tex index 3b60fb4..7067a67 100644 --- a/Doc/latex/mainpage_8h_source.tex +++ b/Doc/latex/mainpage_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{mainpage.\+h} -\hypertarget{mainpage_8h_source}{}\label{mainpage_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h}} +\hypertarget{mainpage_8h_source}{}\label{mainpage_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/mainpage.h}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{mainpage_8h_source_l00001}00001\ \textcolor{comment}{}} diff --git a/Doc/latex/make.bat b/Doc/latex/make.bat index ccd0c1b..96da1c8 100644 --- a/Doc/latex/make.bat +++ b/Doc/latex/make.bat @@ -1,5 +1,5 @@ pushd %~dp0 -if not %errorlevel% == 0 goto :end1 +if not %errorlevel% == 0 goto :end set ORG_LATEX_CMD=%LATEX_CMD% set ORG_MKIDX_CMD=%MKIDX_CMD% @@ -16,12 +16,10 @@ del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl %LATEX_CMD% %MANUAL_FILE% -@if ERRORLEVEL 1 goto :error echo ---- %MKIDX_CMD% %MANUAL_FILE%.idx echo ---- %LATEX_CMD% %MANUAL_FILE% -@if ERRORLEVEL 1 goto :error setlocal enabledelayedexpansion set count=%LATEX_COUNT% @@ -36,21 +34,12 @@ if !count! EQU 0 goto :skip echo ---- %LATEX_CMD% %MANUAL_FILE% -@if ERRORLEVEL 1 goto :error goto :repeat :skip endlocal %MKIDX_CMD% %MANUAL_FILE%.idx %LATEX_CMD% %MANUAL_FILE% -@if ERRORLEVEL 1 goto :error -goto :end -:error -@echo =============== -@echo Please consult %MANUAL_FILE%.log to see the error messages -@echo =============== - -:end @REM reset environment popd set LATEX_CMD=%ORG_LATEX_CMD% @@ -64,4 +53,4 @@ set ORG_MANUAL_FILE= set LATEX_COUNT=%ORG_LATEX_COUNT% set ORG_LATEX_COUNT= -:end1 +:end diff --git a/Doc/latex/mylibs__config_8h.tex b/Doc/latex/mylibs__config_8h.tex index 0764916..a5b9c86 100644 --- a/Doc/latex/mylibs__config_8h.tex +++ b/Doc/latex/mylibs__config_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/mylibs\+\_\+config.h File Reference} -\hypertarget{mylibs__config_8h}{}\label{mylibs__config_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/mylibs\_config.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/mylibs\_config.h}} +\doxysection{F\+:/\+Work/\+Projects/\+STM/.Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/mylibs\+\_\+config.h File Reference} +\hypertarget{mylibs__config_8h}{}\label{mylibs__config_8h}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/mylibs\_config.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/mylibs\_config.h}} Конфигурации для библиотек My\+Libs. @@ -10,7 +10,7 @@ Include dependency graph for mylibs\+\_\+config.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{mylibs__config_8h__incl} +\includegraphics[width=233pt]{mylibs__config_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+:\nopagebreak diff --git a/Doc/latex/mylibs__config_8h__dep__incl.md5 b/Doc/latex/mylibs__config_8h__dep__incl.md5 index 92c2562..1bc1f47 100644 --- a/Doc/latex/mylibs__config_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__config_8h__dep__incl.md5 @@ -1 +1 @@ -4caffed778a6832d18365a032a821f0e \ No newline at end of file +dfdd61dc82258e402e33665df3248b95 \ No newline at end of file diff --git a/Doc/latex/mylibs__config_8h__dep__incl.pdf b/Doc/latex/mylibs__config_8h__dep__incl.pdf index a1d76bbce778fb3e2c7372eddd2b1daa80c7cd5e..220546e6feababd686c5f1b7a5653a1bea6df595 100644 GIT binary patch delta 24637 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�dQ&VJTBU>|_(ROR?M-LXQn`F8s@ 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 C0&Ly@ diff --git a/Doc/latex/mylibs__config_8h__incl.md5 b/Doc/latex/mylibs__config_8h__incl.md5 index 05972e8..7d171f1 100644 --- a/Doc/latex/mylibs__config_8h__incl.md5 +++ b/Doc/latex/mylibs__config_8h__incl.md5 @@ -1 +1 @@ -7f343940c93fbed727067d075d8fdd8d \ No newline at end of file +427d243444c5f0fad6dcdd2d1fe989d2 \ No newline at end of file diff --git a/Doc/latex/mylibs__config_8h__incl.pdf b/Doc/latex/mylibs__config_8h__incl.pdf index 99357c2060b9b7be54215ac271da71ac3ecb2ce7..7e62295a0a153bdeb636fe44272aa50775f79be6 100644 GIT binary patch delta 20175 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 OF*Gtb3MC~)Peux@4LhU& delta 20212 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 \+\_\+ms\+\_\+) \begin{DoxyCompactList}\small\item\em Проверяет, завершилась ли задержка. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{Clear\+Struct}}(\+\_\+struct\+\_\+) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gaf5e598848326d48e86167e5099a029be}{Clear\+Struct}}(\+\_\+struct\+\_\+)~memset(\&(\+\_\+struct\+\_\+), 0, sizeof(\+\_\+struct\+\_\+)) \begin{DoxyCompactList}\small\item\em Обнуление структуры. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{Divide\+\_\+\+Up}}(\+\_\+val\+\_\+, \+\_\+div\+\_\+) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_gabf45f2b60eedf80cf9d1dbe4302a741e}{Divide\+\_\+\+Up}}(\+\_\+val\+\_\+, \+\_\+div\+\_\+)~((\+\_\+val\+\_\+ -\/ 1) / \+\_\+div\+\_\+) + 1 /\texorpdfstring{$\ast$}{*} через мат выражение \texorpdfstring{$\ast$}{*}/ \begin{DoxyCompactList}\small\item\em Деление с округлением вверх \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{Byte\+Swap16}}(v) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga0f22e895ac7781c3d1b68fee182c4291}{Byte\+Swap16}}(v)~(((v\&0x\+FF00) $>$$>$ (8)) \texorpdfstring{$\vert$}{|} ((v\&0x00\+FF) $<$$<$ (8))) \begin{DoxyCompactList}\small\item\em Swap between Little Endian and Big Endian. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{ABS}}(x) +\#define \mbox{\hyperlink{group___u_t_i_l_s___d_e_f_i_n_e_s_ga996f7be338ccb40d1a2a5abc1ad61759}{ABS}}(x)~( ((x) $>$ 0)? (x) \+: -\/(x)) \begin{DoxyCompactList}\small\item\em Абсолютное значение числа \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.md5 b/Doc/latex/mylibs__defs_8h__dep__incl.md5 index 4546d80..5c2d1b7 100644 --- a/Doc/latex/mylibs__defs_8h__dep__incl.md5 +++ b/Doc/latex/mylibs__defs_8h__dep__incl.md5 @@ -1 +1 @@ -609390e8ed268a2e3acd045e0d24f78d \ No newline at end of file +a0add19dd86a580c165837823a871204 \ No newline at end of file diff --git a/Doc/latex/mylibs__defs_8h__dep__incl.pdf b/Doc/latex/mylibs__defs_8h__dep__incl.pdf index cd6d71fef809ea2168a8119b667888a9aab6dbd0..65f15a3364729b0e8a533a0eca274c246647608f 100644 GIT binary patch delta 24467 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 delta 24885 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%0Dof!yvt}$cTF=_^j7R3#%rLa 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 DCCS`o delta 20460 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 delta 24166 zcmV(?K-a&d&H>}j0gz6Aty#%#B*ziG*H_fB`@ouvh+KUnAPl?+h9v?z2*O}At88*) z&&aauulIYARb5Rs$zE&>SkqOVQJE1hmKV`72K>7cTw;jho4es3Lzwco{C)l~zIYwR z4`1*!j?3RSFGm^wHH7gG`1|Yd{SSB=#yuyO+aGSI&Xr6$-n_-OulU&a{tZHD z^NWkVVAFzv4 z_a=3W*4LKIwGb2=rN$}aAw+7%QoOdNv|HM^bjWE^8&%U(W5o$zNr5RX&#yxcD1HA+&;#8^N!N=iH43I*sMnldx_~84m z*#rC5u(KPCdBiJV6fCAwh&`GK=oB6kzswjPy697IYlJan1PsxreM?hrGUC4g(`K1+ zhQ&*_G_-AiM1)#jVr{FF;q4-@G4R5ETBg#9KWRCCxwX>-i^4eodhFId5W9Xd>I@e&O6@pY(pJ144~34>S|vI@e_K$R3&>d+5k8`D zQGld~RiKnYj}f2&H&dnuf@B0yEp*I8Jfod&b%kO=n@EH+Fa@g`{2%xWkW2z2t0E#S zdp4HpRzDPb+U!*6^z@_oSpIq3=#N#(r*y7=-LqF4&kq``$g(-#x&uOJy|2tu7Z|x_ zuRH#NyuTxj%qK8%Y4_H+l@H{ewz3&m32G#*+{y{n-{48wtN#;*c9Z_<*8RD2AS9+= z*A(R0$-nvgS`IvWu|)WX|B!m^$HHj{8QdzP`Yx%;;DIrE5L7|^j&XKKEYmhxLdp_< z?P)y43lOqYnLU_H)D3M&F`yO>P^l~xhD6ugxv?2#5#-# z{X%BWXA1%Pok#*hI zs&h0#AM%5vU^V6X|3mCNNOPxS)o@e5Z9P#$RN0LD0*&dZ30zDO7tHjqcmnq#&yn8K zTmS%U5|(%?1b_vn;adgbUc^&T?`%Y2nFWA{V$YB%#1$i1tEXu_q1*J(Cjwxdmv)

    `f!{TLsu;u0Wj6V)( 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 = (((\+\_\+pin\+\_\+))) \begin{DoxyCompactList}\small\item\em Установить указанную ножку GPIO. \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{TRACE\+\_\+\+GPIO\+\_\+\+RESET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_e___g_p_i_o_ga69741d88c991112e99fe7a62e025108a}{TRACE\+\_\+\+GPIO\+\_\+\+RESET}}(\+\_\+gpio\+\_\+, \+\_\+pin\+\_\+)~(\+\_\+gpio\+\_\+)-\/$>$BSRR = ((\+\_\+pin\+\_\+)$<$$<$16) \begin{DoxyCompactList}\small\item\em Сбросить указанную ножку GPIO. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} diff --git a/Doc/latex/trace_8h__dep__incl.md5 b/Doc/latex/trace_8h__dep__incl.md5 index fc64bec..1128197 100644 --- a/Doc/latex/trace_8h__dep__incl.md5 +++ b/Doc/latex/trace_8h__dep__incl.md5 @@ -1 +1 @@ -d1d9b9839489bb966fdfc05554f4505c \ No newline at end of file +ed66c693e6b28b2992bca99d933335c9 \ No newline at end of file diff --git a/Doc/latex/trace_8h__dep__incl.pdf b/Doc/latex/trace_8h__dep__incl.pdf index ae17096374da46313edce87536e52ab4d05f86d0..005a6b44da92184917b266ea025b2291e645d51f 100644 GIT binary patch delta 19533 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 BbD#hK diff --git a/Doc/latex/trace_8h__incl.md5 b/Doc/latex/trace_8h__incl.md5 index 3bf9e8b..a1c8f34 100644 --- a/Doc/latex/trace_8h__incl.md5 +++ b/Doc/latex/trace_8h__incl.md5 @@ -1 +1 @@ -25ced8a2b2c0bbd5a0a97e1ea1708d17 \ No newline at end of file +c825fc7596c334c4e6a628692e58fd83 \ No newline at end of file diff --git a/Doc/latex/trace_8h__incl.pdf b/Doc/latex/trace_8h__incl.pdf index 53119aacf19652a39b838bd73d932e23dcb9f060..69ff32ce3868ccf7f11354ec85ef9db2d31574d4 100644 GIT binary patch delta 21320 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 FMhfClG=Bg9 diff --git a/Doc/latex/trace_8h_source.tex b/Doc/latex/trace_8h_source.tex index a1a84b0..930babd 100644 --- a/Doc/latex/trace_8h_source.tex +++ b/Doc/latex/trace_8h_source.tex @@ -1,5 +1,5 @@ \doxysection{trace.\+h} -\hypertarget{trace_8h_source}{}\label{trace_8h_source}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trace.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trace.h}} +\hypertarget{trace_8h_source}{}\label{trace_8h_source}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trace.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trace.h}} \mbox{\hyperlink{trace_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00001}00001\ \textcolor{comment}{/**\ }} @@ -184,7 +184,7 @@ \DoxyCodeLine{\Hypertarget{trace_8h_source_l00180}\mbox{\hyperlink{struct_r_t_t___flash_header__t}{00180}}\ \textcolor{keyword}{typedef}\ \textcolor{keyword}{struct\ }\{} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00181}\mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{00181}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_a844ee5470a323a749856cbb7a682dc57}{tag}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Уникальный\ идентификатор\ буфера}} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00182}\mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{00182}}\ \ \ uint32\_t\ \mbox{\hyperlink{struct_r_t_t___flash_header__t_afd1a5c51af6f97d170c2ccbbe3e34699}{size}};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{///<\ Размер\ данных}} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00183}\mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{00183}}\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ \mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{data}}[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];\ \ \textcolor{comment}{///<\ Буфер\ RTT}} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00183}\mbox{\hyperlink{struct_r_t_t___flash_header__t_ae7276198385c8d6f6508f433d042d52a}{00183}}\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ data[\mbox{\hyperlink{group___t_r_a_c_e___c_o_n_f_i_g_ga501312b24e322de4dd6755ad442f0ba3}{RTT\_FLASH\_BUFFER\_SIZE}}];\ \ \textcolor{comment}{///<\ Буфер\ RTT}} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00184}00184\ \}\ \mbox{\hyperlink{struct_r_t_t___flash_header__t}{RTT\_FlashHeader\_t}};} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00185}00185\ \textcolor{comment}{}} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00186}00186\ \textcolor{comment}{/**}} @@ -540,14 +540,14 @@ \DoxyCodeLine{\Hypertarget{trace_8h_source_l00536}00536\ \ \ \ \ );} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00537}00537\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00538}00538\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}\(\backslash\)n=====\ HardFault\ occurred!\ =====\(\backslash\)n"{}});} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00539}00539\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R0\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r0);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00540}00540\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R1\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r1);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00541}00541\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R2\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r2);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00542}00542\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R3\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r3);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00543}00543\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R12\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>r12);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00544}00544\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}LR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>lr);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00545}00545\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PC\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>pc);} -\DoxyCodeLine{\Hypertarget{trace_8h_source_l00546}00546\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PSR\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>psr);} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00539}00539\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R0\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a4146ed28926b5f234132b7112119a413}{r0}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00540}00540\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R1\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a286104d19185714940645a9df814ddea}{r1}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00541}00541\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R2\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a5a52e5006dabcf68c0fa4cfb0e03335b}{r2}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00542}00542\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R3\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a453c7af42b6928a693af422e17c981d3}{r3}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00543}00543\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}R12\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a819ee3bc518c460ece1b7c4079f8f80b}{r12}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00544}00544\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}LR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a6e51904297f7725e96d5b5fb291ef577}{lr}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00545}00545\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PC\ \ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_a16563896004751c90e41c81ae4570732}{pc}});} +\DoxyCodeLine{\Hypertarget{trace_8h_source_l00546}00546\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}PSR\ =\ 0x\%08X\(\backslash\)n"{}},\ stack\_frame-\/>\mbox{\hyperlink{struct_h_f___stack_frame__t_ae47cb051ee3c94471bfd4fe7e49c55f9}{psr}});} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00547}00547\ } \DoxyCodeLine{\Hypertarget{trace_8h_source_l00548}00548\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}CFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>CFSR);} \DoxyCodeLine{\Hypertarget{trace_8h_source_l00549}00549\ \ \ \ \ \mbox{\hyperlink{group___t_r_a_c_e___s_e_r_i_a_l_gae9b9b8a611e291a2f2aa5abf99f3ebaa}{my\_printf}}(\textcolor{stringliteral}{"{}HFSR\ \ =\ 0x\%08X\(\backslash\)n"{}},\ SCB-\/>HFSR);} diff --git a/Doc/latex/trackers_8h.tex b/Doc/latex/trackers_8h.tex index b00b13c..1f402ed 100644 --- a/Doc/latex/trackers_8h.tex +++ b/Doc/latex/trackers_8h.tex @@ -1,5 +1,5 @@ -\doxysection{E\+:/.WORK/\+STM32/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/trackers.h File Reference} -\hypertarget{trackers_8h}{}\label{trackers_8h}\index{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trackers.h@{E:/.WORK/STM32/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trackers.h}} +\doxysection{F\+:/\+Work/\+Projects/\+STM/.Elementary/\+STM32\+\_\+\+Extended\+Libs/\+My\+Libs\+General/\+Inc/trackers.h File Reference} +\hypertarget{trackers_8h}{}\label{trackers_8h}\index{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trackers.h@{F:/Work/Projects/STM/.Elementary/STM32\_ExtendedLibs/MyLibsGeneral/Inc/trackers.h}} Заголочный файл для работы с трекерами \doxylink{group___t_r_a_c_k_e_r_s}{Trackers defines}. @@ -10,14 +10,14 @@ Include dependency graph for trackers.\+h\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{trackers_8h__incl} +\includegraphics[width=245pt]{trackers_8h__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode -\includegraphics[width=229pt]{trackers_8h__dep__incl} +\includegraphics[width=245pt]{trackers_8h__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Macros} @@ -25,43 +25,43 @@ This graph shows which files directly or indirectly include this file\+:\nopageb \item \#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga50ccb119acf302969b7fdcb58f2130e4}{Tracker\+Type\+Def}}(num\+\_\+user\+\_\+vars) \begin{DoxyCompactList}\small\item\em Структура для счетчиков отладки \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}(\+\_\+user\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}(\+\_\+user\+\_\+)~(sizeof(\+\_\+user\+\_\+) / sizeof(uint32\+\_\+t)) \begin{DoxyCompactList}\small\item\em Получить количетство пользовательских переменных \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~((\+\_\+uservarnumb\+\_\+) $<$ \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga72be24629fedb8bf70e830373d151fbc}{num\+\_\+of\+\_\+usercnts}}((\+\_\+cntstruct\+\_\+).user)) \begin{DoxyCompactList}\small\item\em Проверка существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~if(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)) \begin{DoxyCompactList}\small\item\em Условие для проверки существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~(\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gadd7fd2c6e3a4800f1d5ddab35fd4b43e}{assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)) ? \+\_\+uservarnumb\+\_\+ \+: 0 \begin{DoxyCompactList}\small\item\em Тернарный оператор для проверки существует ли указанная пользовательская переменная \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{Tracker\+Get\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gab880911066605602a966641682090169}{Tracker\+Get\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok \begin{DoxyCompactList}\small\item\em Считать счетчик успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{Tracker\+Get\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga9dc91e6b798a081f95f2ccef2c288e5e}{Tracker\+Get\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err \begin{DoxyCompactList}\small\item\em Считать счетчик ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{Tracker\+Get\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga47ac59a406ee74d4cd9fe0fbaf63a758}{Tracker\+Get\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn \begin{DoxyCompactList}\small\item\em Считать счетчик предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{Tracker\+Get\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga4b08632669043dfdbd219dda03502bdb}{Tracker\+Get\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~(\+\_\+cntstruct\+\_\+).user\mbox{[}\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga39b6ffbc561f8caac276415e1ad32c30}{tern\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)\mbox{]} \begin{DoxyCompactList}\small\item\em Считать пользовательскую переменную \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{Tracker\+Cnt\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga23de0006aa08984cfeddb6aa5e512fa1}{Tracker\+Cnt\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{Tracker\+Cnt\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga49af29ab3927cad105c1d2b018a767e9}{Tracker\+Cnt\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{Tracker\+Cnt\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga8017fb05a56a1b667244f1f786fa9c57}{Tracker\+Cnt\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn++ \begin{DoxyCompactList}\small\item\em Инкрементирование счетчика предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{Tracker\+Cnt\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga1b7549afc4a1760b54a9b93b0f6d105e}{Tracker\+Cnt\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]}++; \begin{DoxyCompactList}\small\item\em Инкрементирование пользовательской переменной \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{Tracker\+Write\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+, \+\_\+val\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad2f4062a9ac8c2ab062a364f640ebc51}{Tracker\+Write\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+, \+\_\+val\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = (\+\_\+val\+\_\+) \begin{DoxyCompactList}\small\item\em Запись числа в пользовательскую переменную \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{Tracker\+Clear\+\_\+\+All}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga704f7b9f8c65c9bcec48ce7cb77a2d3b}{Tracker\+Clear\+\_\+\+All}}(\+\_\+cntstruct\+\_\+)~memset(\&(\+\_\+cntstruct\+\_\+), 0, sizeof(\+\_\+cntstruct\+\_\+)) \begin{DoxyCompactList}\small\item\em Очистка всей структуры \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{Tracker\+Clear\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga5dd8bac8c7ab5832019d55d7a68371b9}{Tracker\+Clear\+\_\+\+Ok}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+ok = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика успешных событий \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{Tracker\+Clear\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gae860b6947c6e317e14d40bd7b4b8eb74}{Tracker\+Clear\+\_\+\+Err}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+err = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика ошибок \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{Tracker\+Clear\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga365a8c60bd13b75154feda649dd21ead}{Tracker\+Clear\+\_\+\+Warn}}(\+\_\+cntstruct\+\_\+)~(\+\_\+cntstruct\+\_\+).cnt\+\_\+warn = 0 \begin{DoxyCompactList}\small\item\em Очистка счетчика предупреждений \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{Tracker\+Clear\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_ga063dab1067005e1600ea32531fdf3f8d}{Tracker\+Clear\+\_\+\+User}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+)~\mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gad91d8ca89074270fc040c0449e57cf07}{if\+\_\+assert\+\_\+usertracker}}(\+\_\+cntstruct\+\_\+, \+\_\+uservarnumb\+\_\+) (\+\_\+cntstruct\+\_\+).user\mbox{[}\+\_\+uservarnumb\+\_\+\mbox{]} = 0; \begin{DoxyCompactList}\small\item\em Очистка пользовательской переменной \end{DoxyCompactList}\item -\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All}}(\+\_\+cntstruct\+\_\+) +\#define \mbox{\hyperlink{group___t_r_a_c_k_e_r_s_gaaec7ec19977bb26fa1919dfe920b82d5}{Tracker\+Clear\+\_\+\+User\+All}}(\+\_\+cntstruct\+\_\+)~memset(\&(\+\_\+cntstruct\+\_\+).user, 0, sizeof((\+\_\+cntstruct\+\_\+).user)) \begin{DoxyCompactList}\small\item\em Очистка всех пользовательских переменных \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/Doc/latex/trackers_8h__dep__incl.md5 b/Doc/latex/trackers_8h__dep__incl.md5 index 1f31ff9..db42c88 100644 --- a/Doc/latex/trackers_8h__dep__incl.md5 +++ b/Doc/latex/trackers_8h__dep__incl.md5 @@ -1 +1 @@ -72159b9328b2b9eb57fcadd1b302af03 \ No newline at end of file +b846d5f6f730de44071fc47243d7d99d \ No newline at end of file diff --git a/Doc/latex/trackers_8h__dep__incl.pdf b/Doc/latex/trackers_8h__dep__incl.pdf index 26999c4a58d6f23ae86c48cec0387ed683f22237..bfb8f20762b7a2469c199dbbda7646d0a25ae569 100644 GIT binary patch delta 19517 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 JB_%~qMhg7LB=`UT delta 21194 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 SX#`UQ2)$3vVya+eG2+Qyy zdItgz3-ltO(TmW?i_m}yaU+DK5c(l}0wD`QgxbZ>@dsF}LR<-<5yDakw?p^@g2=k_ z2?T=H=eoF;b&PhpGS~4r5P0$;e5tiMMq+xQ7S>YQMce~_VXPM6IYrqbQir@=pyn>8 z#o33I{r^<{^-l#^Ct1n;$$&Ot5K=)@ry79x^$-|LJ9{dn0;sNt;JxbyPq~p*g zc0C4#Ei|n~Ve&&rtGmN#xJ~U&RzwbA2fb^5%*(`3Tda*EX|R|O4U+@6q6!Sp%jwb7MDeTv(TTJmMs>GXyGlyf-G+8<(s0y zhFfGZhse{IXRtQXZ^(%j3MyD+}L1#&awE>JZWHuvEy&Dt8GCb5GEW9QcULNqPg zdS6R_3-Wt6H~Jf06P@+brhY}#mW%Vwk^L9Ig_AQoXD(>&9`o$8g_Bz{)eO#N0iK!p zCN-TM#Gm3bO;Zoz|E5Vx^FeMR{EkVRc^dcF;PRiL6RE3{{H4tO^dIFsl;AK~^O_T%|Hsce5vPc(_j3 zsH2=T>nJCo&VO=s{I}1_$*C0Xnb5L)2{k*m#hX?_Xv^HQd6l1PP|>dCEjfE+vh9k0 z<*R54Iz&r+<T{dBENF7elqE*m zLu@jjZ5!xalfBx8i42D)#Qe8~4uR-@@-(ugS~B+dbRF_Ht)6Q9ZGsPEU3(p!a3fA_`cEGyYs%=$rf#~H zO2g#~W@Z}aEpG0TB*<-}L&}Ud^K7=JzHGmdISMkz(@c&Vsz~!1Xr9%YtN8za4Kw~r zp)`1bNCW85Y6m&S5{BYP<_&V*Axyv$Ap|;zw+q;?0@W48kw6a?Gioyy!_0s>8+M6- zHUr4dFkDg!WkJKD1WH460<{#wf&>mgfu#)(u@bPc;NaAbiE!j&He=Rja0IrU4S=*R zkk$p#MnKw#S>HiOO`e&_T%MB^!(5)5%SE1@%|#w&YNR#;0DA0`$&=4a9|SouI5Ly+ zOi6#sPQx$|y!$JBgab;N#~P%l5`s$)JVfCG5_?l3Q73ZKL;s##4+4opyOZ_o?5w@T z!|rhxr_~m(Y4&?w?Ks7d_%xrBXFKp=ie^*UF!}Z8EC2grznDUb_m|Vk$6Xv}({;9Z zlf%=RF81m^%mZH=Yi;q80;ee+?A6D^9;tu*d0D>r$Z@r$*=}v%QRJTb<+(qyEpqYA zF39<`UT&o9kMVw4*jD*_1517md|G`?KwpATS_rVrmK?ARse2IFsZ~I0jQuR8&Yxvm#Fn0R~f1R8&YxlQdBK0Wgy}Q5!rq zHa0FfIWjRgI3P7OHZCzWGBY$ZAUHEKE-)}RI59FHFd#QKH!e6cGB7hSATS^>AU85H zE-^MYIW{?yeo>tPFq0)x=zogaFc7`#E9TJBgn})}E8AJZ!X_!pvTaG7lpe|ww2n40 zO{^fxOY`^D$aZSe9!lGT@%YWidhcmQ3@Et*K}igJ!U$&|B0(Y$X+i|VQA{|6I2D9* zNJK(7q#`9e0>)@crc(&l=aYhPDR-(O01!SD+X}t{2MQTHdT6fe(tiRYH#fZ%w`HlV zPp|4H>!J5W`K>{$sdKxOM)`FJeX8Ylsf*I$&yyIK;P?cI7=#J;N%v~D&QxyO1qoI~ zzPicX!gPuO#x1AZ7P{=P6@;I&`|ityFnV=7ABv}Hv)QWWYLo7Ry*(brSmLx{)ocYQ z@rzUMkiQemeWye7;U@UHP7!4(Jk1>&8`M)d9b@^QE{#f(J`sj#bo&uxT z3>Y(rx{!lt!^fddjTi3@>PT8n7n_#An_vBp1#6>JrrRTFtVamk473!(2j`Lvjsdk+?AYptgma>Fm`TnqX~YS)FjN{M^C!;9OJP*W6Vt)Ju`8>~7ZUg-lhtHo2-Gx$N0*?#kUaz7ug6 zu(PkcvGLH}h8ERaT6xgBR=B%gdb)>4*gNGPlx;2SlOI)00WyL0DQZg_+q458zdQ> 16)) // Вспомогательный указатель для сортировки static EvolveOptimizer_t *g_sort_opt; // глобальный указатель на текущий оптимизатор +// функция условия сортировки static int cmp_idx(const void *a, const void *b) { if (g_sort_opt->loss[*(const uint16_t*)a] < g_sort_opt->loss[*(const uint16_t*)b]) return -1; @@ -124,8 +147,8 @@ static int cmp_idx(const void *a, const void *b) { * @param n_params Количество параметров в одном кандидате * @param n_cand Количество кандидатов * @param n_best Количество лучших, усредняемых - * @param iq_mutation Амплитуда мутации в Q16.16 - * @param start_params Начальные параметры (Q16.16) + * @param mutation_amp Амплитуда мутации (в диапазоне 0.0–1.0) + * @param start_params Начальные параметры (в диапазоне 0.0–1.0) * @return 0 — если окей, * -1 — если ошибка */ @@ -133,10 +156,10 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, uint16_t n_params, uint16_t n_cand, uint16_t n_best, - uint16_t iq_mutation, - int32_t* start_params) + float mutation_amp, + float* start_params) { - if((opt = NULL) || (start_params == NULL)) + if((opt == NULL) || (start_params == NULL)) return -1; if(n_params > EVOLVE_MAX_PARAMS) @@ -151,19 +174,34 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, return -1; opt->n_best = n_best; - if(iq_mutation > 32768) - return -1; - opt->iq_mutation = iq_mutation; + + if((mutation_amp > 1) || (mutation_amp < 0)) + return -1; + if(mutation_amp <= 0.001f) + mutation_amp = 0.001f; + opt->mutation_amp = mutation_amp; - for (uint16_t i = 0; i < n_cand; i++) { - for (uint16_t j = 0; j < n_params; j++) { - opt->candidates[i][j] = start_params[j]; - } - opt->loss[i] = 0; - } - uint32_t seed = local_time() + (ADC1->DR & 0xFF); + uint32_t seed = local_time(); +#ifdef ADC1 + seed += (ADC1->DR & 0xFF); +#endif srand(seed); + for (uint16_t i = 0; i < n_cand; i++) { + for (uint16_t j = 0; j < n_params; j++) { + // Добавляем случайную мутацию вокруг стартового параметра + float base = start_params[j]; + float inv_randmax = 1.0f / (float)RAND_MAX; + float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * mutation_amp; + opt->candidates[i][j] = base + noise; + if (opt->candidates[i][j] < 0.0f) opt->candidates[i][j] = 0.0f; + if (opt->candidates[i][j] > 1.0f) opt->candidates[i][j] = 1.0f; + } + opt->loss[i] = 0.0f; + } + + opt->cand_index = 0; + opt->gen_index = 0; return 0; } @@ -172,7 +210,7 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, * @brief Один шаг эволюционного оптимизатора. * @param opt Указатель на структуру оптимизатора * @param params Массив параметров, которые будут обновлены (на выходе — новые параметры) - * @param loss Loss текущего кандидата (Q16.16) + * @param loss Loss текущего кандидата * @return 0 — если окей, * -1 — если ошибка * @details @@ -185,10 +223,10 @@ __STATIC_INLINE int EvolveOptimizer_Init(EvolveOptimizer_t* opt, * Надо убедится что только один экземпляр функции запущен в момент времени */ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, - int32_t* params, - int32_t loss) + float* params, + float loss) { - if((opt = NULL) || (params == NULL)) + if((opt == NULL) || (params == NULL)) return -1; uint16_t n_params = opt->n_params; @@ -201,11 +239,11 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, uint16_t n_best = opt->n_best; if(n_best > EVOLVE_MAX_CANDIDATES/2) - return -1; + return -1; - uint16_t mut = opt->iq_mutation; - if(mut > 32768) - return -1; + float mut = opt->mutation_amp; + if((mut > 1) ||(mut < 0)) + return -1; // 1. Сохраняем loss текущего кандидата opt->loss[opt->cand_index] = loss; @@ -219,42 +257,56 @@ __STATIC_INLINE int EvolveOptimizer_Step(EvolveOptimizer_t* opt, g_sort_opt = opt; qsort(opt->sorted_idx, opt->n_cand, sizeof(uint16_t), cmp_idx); g_sort_opt = NULL; -// for (uint16_t i = 0; i < n_cand - 1; i++) { -// for (uint16_t j = i + 1; j < n_cand; j++) { -// if (opt->loss[j] < opt->loss[i]) { -// int32_t tmp_loss = opt->loss[i]; -// opt->loss[i] = opt->loss[j]; -// opt->loss[j] = tmp_loss; -// for (uint16_t k = 0; k < n_params; k++) { -// int32_t tmp = opt->candidates[i][k]; -// opt->candidates[i][k] = opt->candidates[j][k]; -// opt->candidates[j][k] = tmp; -// } -// } -// } -// } + // --- Адаптивная мутация в зависимости от Loss --- + float best_loss = opt->loss[opt->sorted_idx[0]]; + float worst_loss = opt->loss[opt->sorted_idx[opt->n_cand - 1]]; + float diff = worst_loss - best_loss; - // 3. Генерируем новое поколение: каждый кандидат берется случайно из лучших с мутацией - uint16_t n_elite = 2; // количество элитных кандидатов, которые сохраняем без изменений + float sum_loss = 0.0f; + for (uint16_t i = 0; i < n_cand; i++) + sum_loss += opt->loss[i]; + float avg_loss = sum_loss / (float)n_cand; + + + float loss_ratio = (diff > 0.0f) ? ((avg_loss - best_loss) / diff) : 0.5f; + if (loss_ratio < 0.0f) loss_ratio = 0.0f; + if (loss_ratio > 1.0f) loss_ratio = 1.0f; + + // Записываем стабильность популяции в структуру + if(diff < 0.0f) diff = 0.0f; + if(diff > 1.0f) diff = 1.0f; + opt->stability = (1.0f - worst_loss) * (1.0f - (worst_loss - best_loss)); + if(opt->stability < 0.0f) opt->stability = 0.0f; + if(opt->stability > 1.0f) opt->stability = 1.0f; + + float mut_pct = EVOLVE_MUTATION_MIN_PCT + + (EVOLVE_MUTATION_MAX_PCT - EVOLVE_MUTATION_MIN_PCT) * loss_ratio; + float adaptive_mut = mut * (mut_pct / 100.0f); + if (adaptive_mut < 0.0001f) adaptive_mut = 0.0001f; + opt->gen_mut = adaptive_mut; + + // 3. Генерируем новое поколение + uint16_t n_elite = ELOVLE_N_ELITE_CANDIDATE; for (uint16_t c = 0; c < n_cand; c++) { if (c < n_elite) { - // Копируем лучших кандидатов напрямую без мутации - for (uint16_t i = 0; i < n_params; i++) { - opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i]; // просто сохраняем параметры - } - opt->loss[c] = 0; + for (uint16_t i = 0; i < n_params; i++) + opt->candidates[c][i] = opt->candidates[opt->sorted_idx[c]][i]; + opt->loss[c] = 0.0f; } else { - // Остальные кандидаты формируются с кроссовером и мутацией for (uint16_t i = 0; i < n_params; i++) { - int32_t noise = (rand() % (2 * mut)) - mut; - uint16_t parent = opt->sorted_idx[rand() % opt->n_best]; // каждый параметр из случайного лучшего + float inv_randmax = 1.0f / (float)RAND_MAX; + float noise = ((float)rand() * inv_randmax * 2.0f - 1.0f) * adaptive_mut; + uint16_t parent = opt->sorted_idx[rand() % opt->n_best]; opt->candidates[c][i] = opt->candidates[parent][i] + noise; + if (opt->candidates[c][i] < 0.0f) opt->candidates[c][i] = 0.0f; + if (opt->candidates[c][i] > 1.0f) opt->candidates[c][i] = 1.0f; } - opt->loss[c] = 0; + opt->loss[c] = 0.0f; } } opt->cand_index = 0; + opt->gen_index++; } // 4. Возвращаем параметры следующего кандидата @@ -269,14 +321,14 @@ typedef struct { uint16_t n_params; uint16_t n_cand; uint16_t n_best; - uint16_t iq_mutation; - int32_t loss[0]; - int32_t candidates[0][0]; + float mutation_amp; + float loss[0]; + float candidates[0][0]; } EvolveOptimizer_t; -#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, iq_mutation, start_params) +#define EvolveOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params) #define EvolveOptimizer_Step(opt, params, LossFunc) -#define PARAM_SCALE_Q16(x, min_val, max_val) (x) -#define PARAM_UNSCALE_Q16(q16_val, min_val, max_val) (q16_val) +#define PARAM_SCALE(x, min_val, max_val) (x) +#define PARAM_UNSCALE(val, min_val, max_val) (val) #endif // ENABLE_EVOLVE_OPTIMIZATION #endif // __EVOLVE_OPTIMIZER_H_