From ddb4638e95fac0cfb9981d56a4bb440031412cf6 Mon Sep 17 00:00:00 2001 From: Maximilian Stiefel Date: Sun, 11 Feb 2018 18:42:58 +0100 Subject: [PATCH] Some updates. --- docs/presentation02/fig/uv_light.png | Bin 67103 -> 0 bytes docs/presentation02/fig/uv_light.xml | 1 - .../fig/uv_light_block_diagram.png | Bin 0 -> 81809 bytes .../fig/uv_light_block_diagram.xml | 1 + docs/presentation02/fig/uv_light_simple.png | Bin 0 -> 31339 bytes docs/presentation02/fig/uv_light_simple.xml | 1 + pcbs/adapter_board/output/3d_pic_2.jpg | Bin 0 -> 154671 bytes software/Doxyfile | 2494 +++++++++++++++++ software/doc/html/annotated.html | 104 + software/doc/html/annotated_dup.js | 6 + software/doc/html/bc_s.png | Bin 0 -> 676 bytes software/doc/html/bdwn.png | Bin 0 -> 147 bytes software/doc/html/classes.html | 106 + software/doc/html/closed.png | Bin 0 -> 132 bytes software/doc/html/dir_000000_000001.html | 73 + software/doc/html/dir_000001_000000.html | 94 + .../dir_8b7cb6c889a10e2a101a7e90c854ca4d.html | 129 + .../dir_8b7cb6c889a10e2a101a7e90c854ca4d.js | 12 + ...r_8b7cb6c889a10e2a101a7e90c854ca4d_dep.map | 6 + ...r_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 | 1 + ...r_8b7cb6c889a10e2a101a7e90c854ca4d_dep.png | Bin 0 -> 3050 bytes .../dir_c5a52a81292cf9a5167198f4f346d6d9.html | 108 + .../dir_c5a52a81292cf9a5167198f4f346d6d9.js | 5 + ...r_c5a52a81292cf9a5167198f4f346d6d9_dep.map | 5 + ...r_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 | 1 + ...r_c5a52a81292cf9a5167198f4f346d6d9_dep.png | Bin 0 -> 2267 bytes software/doc/html/doc.png | Bin 0 -> 746 bytes software/doc/html/doxygen.css | 1596 +++++++++++ software/doc/html/doxygen.png | Bin 0 -> 3779 bytes software/doc/html/dynsections.js | 97 + software/doc/html/error_8c.html | 321 +++ software/doc/html/error_8c__incl.map | 7 + software/doc/html/error_8c__incl.md5 | 1 + software/doc/html/error_8c__incl.png | Bin 0 -> 31436 bytes software/doc/html/error_8h.html | 421 +++ software/doc/html/error_8h.js | 10 + software/doc/html/error_8h__dep__incl.map | 8 + software/doc/html/error_8h__dep__incl.md5 | 1 + software/doc/html/error_8h__dep__incl.png | Bin 0 -> 11148 bytes software/doc/html/error_8h__incl.map | 4 + software/doc/html/error_8h__incl.md5 | 1 + software/doc/html/error_8h__incl.png | Bin 0 -> 8571 bytes software/doc/html/error_8h_source.html | 106 + software/doc/html/files.html | 114 + software/doc/html/files.js | 5 + software/doc/html/folderclosed.png | Bin 0 -> 616 bytes software/doc/html/folderopen.png | Bin 0 -> 597 bytes software/doc/html/functions.html | 110 + software/doc/html/functions_vars.html | 110 + software/doc/html/globals.html | 207 ++ software/doc/html/globals_defs.html | 104 + software/doc/html/globals_enum.html | 107 + software/doc/html/globals_eval.html | 134 + software/doc/html/globals_func.html | 173 ++ software/doc/html/globals_type.html | 98 + software/doc/html/graph_legend.html | 126 + software/doc/html/graph_legend.md5 | 1 + software/doc/html/graph_legend.png | Bin 0 -> 18526 bytes software/doc/html/heap_8c.html | 381 +++ software/doc/html/heap_8c__incl.map | 7 + software/doc/html/heap_8c__incl.md5 | 1 + software/doc/html/heap_8c__incl.png | Bin 0 -> 27265 bytes software/doc/html/heap_8h.html | 402 +++ software/doc/html/heap_8h.js | 11 + software/doc/html/heap_8h__dep__incl.map | 4 + software/doc/html/heap_8h__dep__incl.md5 | 1 + software/doc/html/heap_8h__dep__incl.png | Bin 0 -> 5446 bytes software/doc/html/heap_8h__incl.map | 4 + software/doc/html/heap_8h__incl.md5 | 1 + software/doc/html/heap_8h__incl.png | Bin 0 -> 6564 bytes software/doc/html/heap_8h_source.html | 108 + software/doc/html/helpers_8c.html | 157 ++ software/doc/html/helpers_8c__incl.map | 6 + software/doc/html/helpers_8c__incl.md5 | 1 + software/doc/html/helpers_8c__incl.png | Bin 0 -> 17926 bytes software/doc/html/helpers_8h.html | 231 ++ software/doc/html/helpers_8h.js | 5 + software/doc/html/helpers_8h__dep__incl.map | 5 + software/doc/html/helpers_8h__dep__incl.md5 | 1 + software/doc/html/helpers_8h__dep__incl.png | Bin 0 -> 5840 bytes software/doc/html/helpers_8h__incl.map | 2 + software/doc/html/helpers_8h__incl.md5 | 1 + software/doc/html/helpers_8h__incl.png | Bin 0 -> 4687 bytes software/doc/html/helpers_8h_source.html | 100 + software/doc/html/index.html | 97 + software/doc/html/jquery.js | 87 + software/doc/html/menu.js | 26 + software/doc/html/menudata.js | 16 + software/doc/html/nav_f.png | Bin 0 -> 153 bytes software/doc/html/nav_g.png | Bin 0 -> 95 bytes software/doc/html/nav_h.png | Bin 0 -> 98 bytes software/doc/html/navtree.css | 146 + software/doc/html/navtree.js | 517 ++++ software/doc/html/navtreedata.js | 27 + software/doc/html/navtreeindex0.js | 120 + software/doc/html/open.png | Bin 0 -> 123 bytes software/doc/html/ossettings_8h.html | 161 ++ software/doc/html/ossettings_8h.js | 15 + .../doc/html/ossettings_8h__dep__incl.map | 7 + .../doc/html/ossettings_8h__dep__incl.md5 | 1 + .../doc/html/ossettings_8h__dep__incl.png | Bin 0 -> 16124 bytes software/doc/html/ossettings_8h_source.html | 98 + software/doc/html/ostypes_8h.html | 264 ++ software/doc/html/ostypes_8h.js | 40 + software/doc/html/ostypes_8h__dep__incl.map | 6 + software/doc/html/ostypes_8h__dep__incl.md5 | 1 + software/doc/html/ostypes_8h__dep__incl.png | Bin 0 -> 7418 bytes software/doc/html/ostypes_8h__incl.map | 3 + software/doc/html/ostypes_8h__incl.md5 | 1 + software/doc/html/ostypes_8h__incl.png | Bin 0 -> 4447 bytes software/doc/html/ostypes_8h_source.html | 107 + software/doc/html/printf_8c.html | 149 + software/doc/html/printf_8c__incl.map | 8 + software/doc/html/printf_8c__incl.md5 | 1 + software/doc/html/printf_8c__incl.png | Bin 0 -> 40188 bytes software/doc/html/printf_8h.html | 165 ++ software/doc/html/printf_8h.js | 4 + software/doc/html/printf_8h__dep__incl.map | 6 + software/doc/html/printf_8h__dep__incl.md5 | 1 + software/doc/html/printf_8h__dep__incl.png | Bin 0 -> 8293 bytes software/doc/html/printf_8h__incl.map | 2 + software/doc/html/printf_8h__incl.md5 | 1 + software/doc/html/printf_8h__incl.png | Bin 0 -> 6767 bytes software/doc/html/printf_8h_source.html | 99 + software/doc/html/queues_8c.html | 238 ++ software/doc/html/queues_8c__incl.map | 5 + software/doc/html/queues_8c__incl.md5 | 1 + software/doc/html/queues_8c__incl.png | Bin 0 -> 16794 bytes software/doc/html/queues_8h.html | 266 ++ software/doc/html/queues_8h.js | 6 + software/doc/html/queues_8h__dep__incl.map | 4 + software/doc/html/queues_8h__dep__incl.md5 | 1 + software/doc/html/queues_8h__dep__incl.png | Bin 0 -> 4515 bytes software/doc/html/queues_8h__incl.map | 4 + software/doc/html/queues_8h__incl.md5 | 1 + software/doc/html/queues_8h__incl.png | Bin 0 -> 10161 bytes software/doc/html/queues_8h_source.html | 103 + software/doc/html/resize.js | 114 + software/doc/html/scheduler_8c.html | 361 +++ software/doc/html/scheduler_8c__incl.map | 9 + software/doc/html/scheduler_8c__incl.md5 | 1 + software/doc/html/scheduler_8c__incl.png | Bin 0 -> 45392 bytes software/doc/html/scheduler_8h.html | 380 +++ software/doc/html/scheduler_8h.js | 11 + software/doc/html/scheduler_8h__dep__incl.map | 4 + software/doc/html/scheduler_8h__dep__incl.md5 | 1 + software/doc/html/scheduler_8h__dep__incl.png | Bin 0 -> 5637 bytes software/doc/html/scheduler_8h__incl.map | 4 + software/doc/html/scheduler_8h__incl.md5 | 1 + software/doc/html/scheduler_8h__incl.png | Bin 0 -> 12272 bytes software/doc/html/scheduler_8h_source.html | 109 + software/doc/html/search/all_0.html | 26 + software/doc/html/search/all_0.js | 4 + software/doc/html/search/all_1.html | 26 + software/doc/html/search/all_1.js | 4 + software/doc/html/search/all_10.html | 26 + software/doc/html/search/all_10.js | 10 + software/doc/html/search/all_11.html | 26 + software/doc/html/search/all_11.js | 4 + software/doc/html/search/all_12.html | 26 + software/doc/html/search/all_12.js | 6 + software/doc/html/search/all_2.html | 26 + software/doc/html/search/all_2.js | 5 + software/doc/html/search/all_3.html | 26 + software/doc/html/search/all_3.js | 39 + software/doc/html/search/all_4.html | 26 + software/doc/html/search/all_4.js | 4 + software/doc/html/search/all_5.html | 26 + software/doc/html/search/all_5.js | 4 + software/doc/html/search/all_6.html | 26 + software/doc/html/search/all_6.js | 5 + software/doc/html/search/all_7.html | 26 + software/doc/html/search/all_7.js | 5 + software/doc/html/search/all_8.html | 26 + software/doc/html/search/all_8.js | 8 + software/doc/html/search/all_9.html | 26 + software/doc/html/search/all_9.js | 4 + software/doc/html/search/all_a.html | 26 + software/doc/html/search/all_a.js | 44 + software/doc/html/search/all_b.html | 26 + software/doc/html/search/all_b.js | 6 + software/doc/html/search/all_c.html | 26 + software/doc/html/search/all_c.js | 6 + software/doc/html/search/all_d.html | 26 + software/doc/html/search/all_d.js | 6 + software/doc/html/search/all_e.html | 26 + software/doc/html/search/all_e.js | 20 + software/doc/html/search/all_f.html | 26 + software/doc/html/search/all_f.js | 8 + software/doc/html/search/classes_0.html | 26 + software/doc/html/search/classes_0.js | 6 + software/doc/html/search/close.png | Bin 0 -> 273 bytes software/doc/html/search/defines_0.html | 26 + software/doc/html/search/defines_0.js | 4 + software/doc/html/search/defines_1.html | 26 + software/doc/html/search/defines_1.js | 5 + software/doc/html/search/defines_2.html | 26 + software/doc/html/search/defines_2.js | 5 + software/doc/html/search/defines_3.html | 26 + software/doc/html/search/defines_3.js | 4 + software/doc/html/search/defines_4.html | 26 + software/doc/html/search/defines_4.js | 8 + software/doc/html/search/defines_5.html | 26 + software/doc/html/search/defines_5.js | 6 + software/doc/html/search/defines_6.html | 26 + software/doc/html/search/defines_6.js | 5 + software/doc/html/search/defines_7.html | 26 + software/doc/html/search/defines_7.js | 4 + software/doc/html/search/enums_0.html | 26 + software/doc/html/search/enums_0.js | 7 + software/doc/html/search/enumvalues_0.html | 26 + software/doc/html/search/enumvalues_0.js | 4 + software/doc/html/search/enumvalues_1.html | 26 + software/doc/html/search/enumvalues_1.js | 5 + software/doc/html/search/enumvalues_2.html | 26 + software/doc/html/search/enumvalues_2.js | 12 + software/doc/html/search/enumvalues_3.html | 26 + software/doc/html/search/enumvalues_3.js | 5 + software/doc/html/search/enumvalues_4.html | 26 + software/doc/html/search/enumvalues_4.js | 8 + software/doc/html/search/enumvalues_5.html | 26 + software/doc/html/search/enumvalues_5.js | 4 + software/doc/html/search/enumvalues_6.html | 26 + software/doc/html/search/enumvalues_6.js | 4 + software/doc/html/search/files_0.html | 26 + software/doc/html/search/files_0.js | 4 + software/doc/html/search/files_1.html | 26 + software/doc/html/search/files_1.js | 5 + software/doc/html/search/files_2.html | 26 + software/doc/html/search/files_2.js | 5 + software/doc/html/search/files_3.html | 26 + software/doc/html/search/files_3.js | 4 + software/doc/html/search/files_4.html | 26 + software/doc/html/search/files_4.js | 4 + software/doc/html/search/files_5.html | 26 + software/doc/html/search/files_5.js | 5 + software/doc/html/search/files_6.html | 26 + software/doc/html/search/files_6.js | 5 + software/doc/html/search/functions_0.html | 26 + software/doc/html/search/functions_0.js | 29 + software/doc/html/search/functions_1.html | 26 + software/doc/html/search/functions_1.js | 32 + software/doc/html/search/functions_2.html | 26 + software/doc/html/search/functions_2.js | 4 + software/doc/html/search/functions_3.html | 26 + software/doc/html/search/functions_3.js | 4 + software/doc/html/search/functions_4.html | 26 + software/doc/html/search/functions_4.js | 7 + software/doc/html/search/mag_sel.png | Bin 0 -> 563 bytes software/doc/html/search/nomatches.html | 12 + software/doc/html/search/search.css | 271 ++ software/doc/html/search/search.js | 791 ++++++ software/doc/html/search/search_l.png | Bin 0 -> 604 bytes software/doc/html/search/search_m.png | Bin 0 -> 158 bytes software/doc/html/search/search_r.png | Bin 0 -> 612 bytes software/doc/html/search/searchdata.js | 33 + software/doc/html/search/typedefs_0.html | 26 + software/doc/html/search/typedefs_0.js | 4 + software/doc/html/search/variables_0.html | 26 + software/doc/html/search/variables_0.js | 4 + software/doc/html/search/variables_1.html | 26 + software/doc/html/search/variables_1.js | 4 + software/doc/html/search/variables_2.html | 26 + software/doc/html/search/variables_2.js | 4 + software/doc/html/search/variables_3.html | 26 + software/doc/html/search/variables_3.js | 4 + software/doc/html/search/variables_4.html | 26 + software/doc/html/search/variables_4.js | 4 + software/doc/html/search/variables_5.html | 26 + software/doc/html/search/variables_5.js | 4 + software/doc/html/search/variables_6.html | 26 + software/doc/html/search/variables_6.js | 4 + software/doc/html/search/variables_7.html | 26 + software/doc/html/search/variables_7.js | 5 + software/doc/html/search/variables_8.html | 26 + software/doc/html/search/variables_8.js | 4 + software/doc/html/search/variables_9.html | 26 + software/doc/html/search/variables_9.js | 4 + software/doc/html/search/variables_a.html | 26 + software/doc/html/search/variables_a.js | 5 + software/doc/html/semaphore_8c.html | 153 + software/doc/html/semaphore_8c__incl.map | 4 + software/doc/html/semaphore_8c__incl.md5 | 1 + software/doc/html/semaphore_8c__incl.png | Bin 0 -> 6912 bytes software/doc/html/semaphore_8h.html | 107 + software/doc/html/semaphore_8h_source.html | 98 + software/doc/html/splitbar.png | Bin 0 -> 314 bytes .../html/structos_q_u_e_u_e__t-members.html | 81 + software/doc/html/structos_q_u_e_u_e__t.html | 126 + software/doc/html/structos_q_u_e_u_e__t.js | 8 + .../structos_semaphore_handle__t-members.html | 78 + .../html/structos_semaphore_handle__t.html | 113 + .../doc/html/structos_semaphore_handle__t.js | 5 + .../doc/html/structos_t_c_b__t-members.html | 82 + software/doc/html/structos_t_c_b__t.html | 129 + software/doc/html/structos_t_c_b__t.js | 9 + software/doc/html/sync_off.png | Bin 0 -> 853 bytes software/doc/html/sync_on.png | Bin 0 -> 845 bytes software/doc/html/system__timer_8c.html | 179 ++ software/doc/html/system__timer_8c__incl.map | 5 + software/doc/html/system__timer_8c__incl.md5 | 1 + software/doc/html/system__timer_8c__incl.png | Bin 0 -> 25951 bytes software/doc/html/system__timer_8h.html | 154 + .../doc/html/system__timer_8h__dep__incl.map | 3 + .../doc/html/system__timer_8h__dep__incl.md5 | 1 + .../doc/html/system__timer_8h__dep__incl.png | Bin 0 -> 3498 bytes .../doc/html/system__timer_8h_source.html | 98 + software/doc/html/tab_a.png | Bin 0 -> 142 bytes software/doc/html/tab_b.png | Bin 0 -> 169 bytes software/doc/html/tab_h.png | Bin 0 -> 177 bytes software/doc/html/tab_s.png | Bin 0 -> 184 bytes software/doc/html/tabs.css | 1 + software/doc/html/usart_8c.html | 207 ++ software/doc/html/usart_8c__incl.map | 7 + software/doc/html/usart_8c__incl.md5 | 1 + software/doc/html/usart_8c__incl.png | Bin 0 -> 25451 bytes software/doc/html/usart_8h.html | 209 ++ software/doc/html/usart_8h__dep__incl.map | 4 + software/doc/html/usart_8h__dep__incl.md5 | 1 + software/doc/html/usart_8h__dep__incl.png | Bin 0 -> 5350 bytes software/doc/html/usart_8h__incl.map | 2 + software/doc/html/usart_8h__incl.md5 | 1 + software/doc/html/usart_8h__incl.png | Bin 0 -> 4939 bytes software/doc/html/usart_8h_source.html | 98 + software/doc/latex/Makefile | 21 + software/doc/latex/annotated.tex | 6 + .../dir_8b7cb6c889a10e2a101a7e90c854ca4d.tex | 23 + ...r_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 | 1 + ...r_8b7cb6c889a10e2a101a7e90c854ca4d_dep.pdf | Bin 0 -> 11659 bytes .../dir_c5a52a81292cf9a5167198f4f346d6d9.tex | 10 + ...r_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 | 1 + ...r_c5a52a81292cf9a5167198f4f346d6d9_dep.pdf | Bin 0 -> 11422 bytes software/doc/latex/doxygen.sty | 503 ++++ software/doc/latex/error_8c.tex | 122 + software/doc/latex/error_8c__incl.md5 | 1 + software/doc/latex/error_8c__incl.pdf | Bin 0 -> 15242 bytes software/doc/latex/error_8h.tex | 164 ++ software/doc/latex/error_8h__dep__incl.md5 | 1 + software/doc/latex/error_8h__dep__incl.pdf | Bin 0 -> 13266 bytes software/doc/latex/error_8h__incl.md5 | 1 + software/doc/latex/error_8h__incl.pdf | Bin 0 -> 12385 bytes software/doc/latex/files.tex | 14 + software/doc/latex/heap_8c.tex | 165 ++ software/doc/latex/heap_8c__incl.md5 | 1 + software/doc/latex/heap_8c__incl.pdf | Bin 0 -> 15192 bytes software/doc/latex/heap_8h.tex | 176 ++ software/doc/latex/heap_8h__dep__incl.md5 | 1 + software/doc/latex/heap_8h__dep__incl.pdf | Bin 0 -> 12062 bytes software/doc/latex/heap_8h__incl.md5 | 1 + software/doc/latex/heap_8h__incl.pdf | Bin 0 -> 12462 bytes software/doc/latex/helpers_8c.tex | 45 + software/doc/latex/helpers_8c__incl.md5 | 1 + software/doc/latex/helpers_8c__incl.pdf | Bin 0 -> 14456 bytes software/doc/latex/helpers_8h.tex | 81 + software/doc/latex/helpers_8h__dep__incl.md5 | 1 + software/doc/latex/helpers_8h__dep__incl.pdf | Bin 0 -> 11898 bytes software/doc/latex/helpers_8h__incl.md5 | 1 + software/doc/latex/helpers_8h__incl.pdf | Bin 0 -> 12911 bytes software/doc/latex/ossettings_8h.tex | 65 + .../doc/latex/ossettings_8h__dep__incl.md5 | 1 + .../doc/latex/ossettings_8h__dep__incl.pdf | Bin 0 -> 13635 bytes software/doc/latex/ostypes_8h.tex | 127 + software/doc/latex/ostypes_8h__dep__incl.md5 | 1 + software/doc/latex/ostypes_8h__dep__incl.pdf | Bin 0 -> 12736 bytes software/doc/latex/ostypes_8h__incl.md5 | 1 + software/doc/latex/ostypes_8h__incl.pdf | Bin 0 -> 12015 bytes software/doc/latex/printf_8c.tex | 44 + software/doc/latex/printf_8c__incl.md5 | 1 + software/doc/latex/printf_8c__incl.pdf | Bin 0 -> 15802 bytes software/doc/latex/printf_8h.tex | 54 + software/doc/latex/printf_8h__dep__incl.md5 | 1 + software/doc/latex/printf_8h__dep__incl.pdf | Bin 0 -> 12875 bytes software/doc/latex/printf_8h__incl.md5 | 1 + software/doc/latex/printf_8h__incl.pdf | Bin 0 -> 13390 bytes software/doc/latex/queues_8c.tex | 84 + software/doc/latex/queues_8c__incl.md5 | 1 + software/doc/latex/queues_8c__incl.pdf | Bin 0 -> 14726 bytes software/doc/latex/queues_8h.tex | 99 + software/doc/latex/queues_8h__dep__incl.md5 | 1 + software/doc/latex/queues_8h__dep__incl.pdf | Bin 0 -> 12501 bytes software/doc/latex/queues_8h__incl.md5 | 1 + software/doc/latex/queues_8h__incl.pdf | Bin 0 -> 14050 bytes software/doc/latex/refman.tex | 169 ++ software/doc/latex/scheduler_8c.tex | 146 + software/doc/latex/scheduler_8c__incl.md5 | 1 + software/doc/latex/scheduler_8c__incl.pdf | Bin 0 -> 16178 bytes software/doc/latex/scheduler_8h.tex | 156 ++ .../doc/latex/scheduler_8h__dep__incl.md5 | 1 + .../doc/latex/scheduler_8h__dep__incl.pdf | Bin 0 -> 12924 bytes software/doc/latex/scheduler_8h__incl.md5 | 1 + software/doc/latex/scheduler_8h__incl.pdf | Bin 0 -> 13240 bytes software/doc/latex/semaphore_8c.tex | 40 + software/doc/latex/semaphore_8c__incl.md5 | 1 + software/doc/latex/semaphore_8c__incl.pdf | Bin 0 -> 13019 bytes software/doc/latex/semaphore_8h.tex | 18 + software/doc/latex/structos_q_u_e_u_e__t.tex | 32 + .../latex/structos_semaphore_handle__t.tex | 16 + software/doc/latex/structos_t_c_b__t.tex | 35 + software/doc/latex/system__timer_8c.tex | 52 + software/doc/latex/system__timer_8c__incl.md5 | 1 + software/doc/latex/system__timer_8c__incl.pdf | Bin 0 -> 15234 bytes software/doc/latex/system__timer_8h.tex | 39 + .../doc/latex/system__timer_8h__dep__incl.md5 | 1 + .../doc/latex/system__timer_8h__dep__incl.pdf | Bin 0 -> 12834 bytes software/doc/latex/usart_8c.tex | 52 + software/doc/latex/usart_8c__incl.md5 | 1 + software/doc/latex/usart_8c__incl.pdf | Bin 0 -> 15573 bytes software/doc/latex/usart_8h.tex | 62 + software/doc/latex/usart_8h__dep__incl.md5 | 1 + software/doc/latex/usart_8h__dep__incl.pdf | Bin 0 -> 12433 bytes software/doc/latex/usart_8h__incl.md5 | 1 + software/doc/latex/usart_8h__incl.pdf | Bin 0 -> 13300 bytes software/os/error.c | 13 +- software/os/error.h | 21 + software/os/heap.h | 8 + software/os/helpers.c | 13 +- software/os/helpers.h | 12 +- software/os/logo_ascii.txt | 76 + software/os/ossettings.h | 19 +- software/os/ostypes.h | 40 +- software/os/printf.c | 92 +- software/os/printf.h | 21 +- software/os/queues.c | 47 +- software/os/queues.h | 37 +- software/os/scheduler.c | 205 +- software/os/scheduler.h | 13 + software/os/semaphore.c | 30 + software/os/semaphore.h | 14 + software/platform/usart.c | 42 +- software/platform/usart.h | 2 + 430 files changed, 20504 insertions(+), 167 deletions(-) delete mode 100644 docs/presentation02/fig/uv_light.png delete mode 100644 docs/presentation02/fig/uv_light.xml create mode 100644 docs/presentation02/fig/uv_light_block_diagram.png create mode 100644 docs/presentation02/fig/uv_light_block_diagram.xml create mode 100644 docs/presentation02/fig/uv_light_simple.png create mode 100644 docs/presentation02/fig/uv_light_simple.xml create mode 100644 pcbs/adapter_board/output/3d_pic_2.jpg create mode 100644 software/Doxyfile create mode 100644 software/doc/html/annotated.html create mode 100644 software/doc/html/annotated_dup.js create mode 100644 software/doc/html/bc_s.png create mode 100644 software/doc/html/bdwn.png create mode 100644 software/doc/html/classes.html create mode 100644 software/doc/html/closed.png create mode 100644 software/doc/html/dir_000000_000001.html create mode 100644 software/doc/html/dir_000001_000000.html create mode 100644 software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.html create mode 100644 software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.js create mode 100644 software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.map create mode 100644 software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 create mode 100644 software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.png create mode 100644 software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9.html create mode 100644 software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9.js create mode 100644 software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.map create mode 100644 software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 create mode 100644 software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.png create mode 100644 software/doc/html/doc.png create mode 100644 software/doc/html/doxygen.css create mode 100644 software/doc/html/doxygen.png create mode 100644 software/doc/html/dynsections.js create mode 100644 software/doc/html/error_8c.html create mode 100644 software/doc/html/error_8c__incl.map create mode 100644 software/doc/html/error_8c__incl.md5 create mode 100644 software/doc/html/error_8c__incl.png create mode 100644 software/doc/html/error_8h.html create mode 100644 software/doc/html/error_8h.js create mode 100644 software/doc/html/error_8h__dep__incl.map create mode 100644 software/doc/html/error_8h__dep__incl.md5 create mode 100644 software/doc/html/error_8h__dep__incl.png create mode 100644 software/doc/html/error_8h__incl.map create mode 100644 software/doc/html/error_8h__incl.md5 create mode 100644 software/doc/html/error_8h__incl.png create mode 100644 software/doc/html/error_8h_source.html create mode 100644 software/doc/html/files.html create mode 100644 software/doc/html/files.js create mode 100644 software/doc/html/folderclosed.png create mode 100644 software/doc/html/folderopen.png create mode 100644 software/doc/html/functions.html create mode 100644 software/doc/html/functions_vars.html create mode 100644 software/doc/html/globals.html create mode 100644 software/doc/html/globals_defs.html create mode 100644 software/doc/html/globals_enum.html create mode 100644 software/doc/html/globals_eval.html create mode 100644 software/doc/html/globals_func.html create mode 100644 software/doc/html/globals_type.html create mode 100644 software/doc/html/graph_legend.html create mode 100644 software/doc/html/graph_legend.md5 create mode 100644 software/doc/html/graph_legend.png create mode 100644 software/doc/html/heap_8c.html create mode 100644 software/doc/html/heap_8c__incl.map create mode 100644 software/doc/html/heap_8c__incl.md5 create mode 100644 software/doc/html/heap_8c__incl.png create mode 100644 software/doc/html/heap_8h.html create mode 100644 software/doc/html/heap_8h.js create mode 100644 software/doc/html/heap_8h__dep__incl.map create mode 100644 software/doc/html/heap_8h__dep__incl.md5 create mode 100644 software/doc/html/heap_8h__dep__incl.png create mode 100644 software/doc/html/heap_8h__incl.map create mode 100644 software/doc/html/heap_8h__incl.md5 create mode 100644 software/doc/html/heap_8h__incl.png create mode 100644 software/doc/html/heap_8h_source.html create mode 100644 software/doc/html/helpers_8c.html create mode 100644 software/doc/html/helpers_8c__incl.map create mode 100644 software/doc/html/helpers_8c__incl.md5 create mode 100644 software/doc/html/helpers_8c__incl.png create mode 100644 software/doc/html/helpers_8h.html create mode 100644 software/doc/html/helpers_8h.js create mode 100644 software/doc/html/helpers_8h__dep__incl.map create mode 100644 software/doc/html/helpers_8h__dep__incl.md5 create mode 100644 software/doc/html/helpers_8h__dep__incl.png create mode 100644 software/doc/html/helpers_8h__incl.map create mode 100644 software/doc/html/helpers_8h__incl.md5 create mode 100644 software/doc/html/helpers_8h__incl.png create mode 100644 software/doc/html/helpers_8h_source.html create mode 100644 software/doc/html/index.html create mode 100644 software/doc/html/jquery.js create mode 100644 software/doc/html/menu.js create mode 100644 software/doc/html/menudata.js create mode 100644 software/doc/html/nav_f.png create mode 100644 software/doc/html/nav_g.png create mode 100644 software/doc/html/nav_h.png create mode 100644 software/doc/html/navtree.css create mode 100644 software/doc/html/navtree.js create mode 100644 software/doc/html/navtreedata.js create mode 100644 software/doc/html/navtreeindex0.js create mode 100644 software/doc/html/open.png create mode 100644 software/doc/html/ossettings_8h.html create mode 100644 software/doc/html/ossettings_8h.js create mode 100644 software/doc/html/ossettings_8h__dep__incl.map create mode 100644 software/doc/html/ossettings_8h__dep__incl.md5 create mode 100644 software/doc/html/ossettings_8h__dep__incl.png create mode 100644 software/doc/html/ossettings_8h_source.html create mode 100644 software/doc/html/ostypes_8h.html create mode 100644 software/doc/html/ostypes_8h.js create mode 100644 software/doc/html/ostypes_8h__dep__incl.map create mode 100644 software/doc/html/ostypes_8h__dep__incl.md5 create mode 100644 software/doc/html/ostypes_8h__dep__incl.png create mode 100644 software/doc/html/ostypes_8h__incl.map create mode 100644 software/doc/html/ostypes_8h__incl.md5 create mode 100644 software/doc/html/ostypes_8h__incl.png create mode 100644 software/doc/html/ostypes_8h_source.html create mode 100644 software/doc/html/printf_8c.html create mode 100644 software/doc/html/printf_8c__incl.map create mode 100644 software/doc/html/printf_8c__incl.md5 create mode 100644 software/doc/html/printf_8c__incl.png create mode 100644 software/doc/html/printf_8h.html create mode 100644 software/doc/html/printf_8h.js create mode 100644 software/doc/html/printf_8h__dep__incl.map create mode 100644 software/doc/html/printf_8h__dep__incl.md5 create mode 100644 software/doc/html/printf_8h__dep__incl.png create mode 100644 software/doc/html/printf_8h__incl.map create mode 100644 software/doc/html/printf_8h__incl.md5 create mode 100644 software/doc/html/printf_8h__incl.png create mode 100644 software/doc/html/printf_8h_source.html create mode 100644 software/doc/html/queues_8c.html create mode 100644 software/doc/html/queues_8c__incl.map create mode 100644 software/doc/html/queues_8c__incl.md5 create mode 100644 software/doc/html/queues_8c__incl.png create mode 100644 software/doc/html/queues_8h.html create mode 100644 software/doc/html/queues_8h.js create mode 100644 software/doc/html/queues_8h__dep__incl.map create mode 100644 software/doc/html/queues_8h__dep__incl.md5 create mode 100644 software/doc/html/queues_8h__dep__incl.png create mode 100644 software/doc/html/queues_8h__incl.map create mode 100644 software/doc/html/queues_8h__incl.md5 create mode 100644 software/doc/html/queues_8h__incl.png create mode 100644 software/doc/html/queues_8h_source.html create mode 100644 software/doc/html/resize.js create mode 100644 software/doc/html/scheduler_8c.html create mode 100644 software/doc/html/scheduler_8c__incl.map create mode 100644 software/doc/html/scheduler_8c__incl.md5 create mode 100644 software/doc/html/scheduler_8c__incl.png create mode 100644 software/doc/html/scheduler_8h.html create mode 100644 software/doc/html/scheduler_8h.js create mode 100644 software/doc/html/scheduler_8h__dep__incl.map create mode 100644 software/doc/html/scheduler_8h__dep__incl.md5 create mode 100644 software/doc/html/scheduler_8h__dep__incl.png create mode 100644 software/doc/html/scheduler_8h__incl.map create mode 100644 software/doc/html/scheduler_8h__incl.md5 create mode 100644 software/doc/html/scheduler_8h__incl.png create mode 100644 software/doc/html/scheduler_8h_source.html create mode 100644 software/doc/html/search/all_0.html create mode 100644 software/doc/html/search/all_0.js create mode 100644 software/doc/html/search/all_1.html create mode 100644 software/doc/html/search/all_1.js create mode 100644 software/doc/html/search/all_10.html create mode 100644 software/doc/html/search/all_10.js create mode 100644 software/doc/html/search/all_11.html create mode 100644 software/doc/html/search/all_11.js create mode 100644 software/doc/html/search/all_12.html create mode 100644 software/doc/html/search/all_12.js create mode 100644 software/doc/html/search/all_2.html create mode 100644 software/doc/html/search/all_2.js create mode 100644 software/doc/html/search/all_3.html create mode 100644 software/doc/html/search/all_3.js create mode 100644 software/doc/html/search/all_4.html create mode 100644 software/doc/html/search/all_4.js create mode 100644 software/doc/html/search/all_5.html create mode 100644 software/doc/html/search/all_5.js create mode 100644 software/doc/html/search/all_6.html create mode 100644 software/doc/html/search/all_6.js create mode 100644 software/doc/html/search/all_7.html create mode 100644 software/doc/html/search/all_7.js create mode 100644 software/doc/html/search/all_8.html create mode 100644 software/doc/html/search/all_8.js create mode 100644 software/doc/html/search/all_9.html create mode 100644 software/doc/html/search/all_9.js create mode 100644 software/doc/html/search/all_a.html create mode 100644 software/doc/html/search/all_a.js create mode 100644 software/doc/html/search/all_b.html create mode 100644 software/doc/html/search/all_b.js create mode 100644 software/doc/html/search/all_c.html create mode 100644 software/doc/html/search/all_c.js create mode 100644 software/doc/html/search/all_d.html create mode 100644 software/doc/html/search/all_d.js create mode 100644 software/doc/html/search/all_e.html create mode 100644 software/doc/html/search/all_e.js create mode 100644 software/doc/html/search/all_f.html create mode 100644 software/doc/html/search/all_f.js create mode 100644 software/doc/html/search/classes_0.html create mode 100644 software/doc/html/search/classes_0.js create mode 100644 software/doc/html/search/close.png create mode 100644 software/doc/html/search/defines_0.html create mode 100644 software/doc/html/search/defines_0.js create mode 100644 software/doc/html/search/defines_1.html create mode 100644 software/doc/html/search/defines_1.js create mode 100644 software/doc/html/search/defines_2.html create mode 100644 software/doc/html/search/defines_2.js create mode 100644 software/doc/html/search/defines_3.html create mode 100644 software/doc/html/search/defines_3.js create mode 100644 software/doc/html/search/defines_4.html create mode 100644 software/doc/html/search/defines_4.js create mode 100644 software/doc/html/search/defines_5.html create mode 100644 software/doc/html/search/defines_5.js create mode 100644 software/doc/html/search/defines_6.html create mode 100644 software/doc/html/search/defines_6.js create mode 100644 software/doc/html/search/defines_7.html create mode 100644 software/doc/html/search/defines_7.js create mode 100644 software/doc/html/search/enums_0.html create mode 100644 software/doc/html/search/enums_0.js create mode 100644 software/doc/html/search/enumvalues_0.html create mode 100644 software/doc/html/search/enumvalues_0.js create mode 100644 software/doc/html/search/enumvalues_1.html create mode 100644 software/doc/html/search/enumvalues_1.js create mode 100644 software/doc/html/search/enumvalues_2.html create mode 100644 software/doc/html/search/enumvalues_2.js create mode 100644 software/doc/html/search/enumvalues_3.html create mode 100644 software/doc/html/search/enumvalues_3.js create mode 100644 software/doc/html/search/enumvalues_4.html create mode 100644 software/doc/html/search/enumvalues_4.js create mode 100644 software/doc/html/search/enumvalues_5.html create mode 100644 software/doc/html/search/enumvalues_5.js create mode 100644 software/doc/html/search/enumvalues_6.html create mode 100644 software/doc/html/search/enumvalues_6.js create mode 100644 software/doc/html/search/files_0.html create mode 100644 software/doc/html/search/files_0.js create mode 100644 software/doc/html/search/files_1.html create mode 100644 software/doc/html/search/files_1.js create mode 100644 software/doc/html/search/files_2.html create mode 100644 software/doc/html/search/files_2.js create mode 100644 software/doc/html/search/files_3.html create mode 100644 software/doc/html/search/files_3.js create mode 100644 software/doc/html/search/files_4.html create mode 100644 software/doc/html/search/files_4.js create mode 100644 software/doc/html/search/files_5.html create mode 100644 software/doc/html/search/files_5.js create mode 100644 software/doc/html/search/files_6.html create mode 100644 software/doc/html/search/files_6.js create mode 100644 software/doc/html/search/functions_0.html create mode 100644 software/doc/html/search/functions_0.js create mode 100644 software/doc/html/search/functions_1.html create mode 100644 software/doc/html/search/functions_1.js create mode 100644 software/doc/html/search/functions_2.html create mode 100644 software/doc/html/search/functions_2.js create mode 100644 software/doc/html/search/functions_3.html create mode 100644 software/doc/html/search/functions_3.js create mode 100644 software/doc/html/search/functions_4.html create mode 100644 software/doc/html/search/functions_4.js create mode 100644 software/doc/html/search/mag_sel.png create mode 100644 software/doc/html/search/nomatches.html create mode 100644 software/doc/html/search/search.css create mode 100644 software/doc/html/search/search.js create mode 100644 software/doc/html/search/search_l.png create mode 100644 software/doc/html/search/search_m.png create mode 100644 software/doc/html/search/search_r.png create mode 100644 software/doc/html/search/searchdata.js create mode 100644 software/doc/html/search/typedefs_0.html create mode 100644 software/doc/html/search/typedefs_0.js create mode 100644 software/doc/html/search/variables_0.html create mode 100644 software/doc/html/search/variables_0.js create mode 100644 software/doc/html/search/variables_1.html create mode 100644 software/doc/html/search/variables_1.js create mode 100644 software/doc/html/search/variables_2.html create mode 100644 software/doc/html/search/variables_2.js create mode 100644 software/doc/html/search/variables_3.html create mode 100644 software/doc/html/search/variables_3.js create mode 100644 software/doc/html/search/variables_4.html create mode 100644 software/doc/html/search/variables_4.js create mode 100644 software/doc/html/search/variables_5.html create mode 100644 software/doc/html/search/variables_5.js create mode 100644 software/doc/html/search/variables_6.html create mode 100644 software/doc/html/search/variables_6.js create mode 100644 software/doc/html/search/variables_7.html create mode 100644 software/doc/html/search/variables_7.js create mode 100644 software/doc/html/search/variables_8.html create mode 100644 software/doc/html/search/variables_8.js create mode 100644 software/doc/html/search/variables_9.html create mode 100644 software/doc/html/search/variables_9.js create mode 100644 software/doc/html/search/variables_a.html create mode 100644 software/doc/html/search/variables_a.js create mode 100644 software/doc/html/semaphore_8c.html create mode 100644 software/doc/html/semaphore_8c__incl.map create mode 100644 software/doc/html/semaphore_8c__incl.md5 create mode 100644 software/doc/html/semaphore_8c__incl.png create mode 100644 software/doc/html/semaphore_8h.html create mode 100644 software/doc/html/semaphore_8h_source.html create mode 100644 software/doc/html/splitbar.png create mode 100644 software/doc/html/structos_q_u_e_u_e__t-members.html create mode 100644 software/doc/html/structos_q_u_e_u_e__t.html create mode 100644 software/doc/html/structos_q_u_e_u_e__t.js create mode 100644 software/doc/html/structos_semaphore_handle__t-members.html create mode 100644 software/doc/html/structos_semaphore_handle__t.html create mode 100644 software/doc/html/structos_semaphore_handle__t.js create mode 100644 software/doc/html/structos_t_c_b__t-members.html create mode 100644 software/doc/html/structos_t_c_b__t.html create mode 100644 software/doc/html/structos_t_c_b__t.js create mode 100644 software/doc/html/sync_off.png create mode 100644 software/doc/html/sync_on.png create mode 100644 software/doc/html/system__timer_8c.html create mode 100644 software/doc/html/system__timer_8c__incl.map create mode 100644 software/doc/html/system__timer_8c__incl.md5 create mode 100644 software/doc/html/system__timer_8c__incl.png create mode 100644 software/doc/html/system__timer_8h.html create mode 100644 software/doc/html/system__timer_8h__dep__incl.map create mode 100644 software/doc/html/system__timer_8h__dep__incl.md5 create mode 100644 software/doc/html/system__timer_8h__dep__incl.png create mode 100644 software/doc/html/system__timer_8h_source.html create mode 100644 software/doc/html/tab_a.png create mode 100644 software/doc/html/tab_b.png create mode 100644 software/doc/html/tab_h.png create mode 100644 software/doc/html/tab_s.png create mode 100644 software/doc/html/tabs.css create mode 100644 software/doc/html/usart_8c.html create mode 100644 software/doc/html/usart_8c__incl.map create mode 100644 software/doc/html/usart_8c__incl.md5 create mode 100644 software/doc/html/usart_8c__incl.png create mode 100644 software/doc/html/usart_8h.html create mode 100644 software/doc/html/usart_8h__dep__incl.map create mode 100644 software/doc/html/usart_8h__dep__incl.md5 create mode 100644 software/doc/html/usart_8h__dep__incl.png create mode 100644 software/doc/html/usart_8h__incl.map create mode 100644 software/doc/html/usart_8h__incl.md5 create mode 100644 software/doc/html/usart_8h__incl.png create mode 100644 software/doc/html/usart_8h_source.html create mode 100644 software/doc/latex/Makefile create mode 100644 software/doc/latex/annotated.tex create mode 100644 software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d.tex create mode 100644 software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 create mode 100644 software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.pdf create mode 100644 software/doc/latex/dir_c5a52a81292cf9a5167198f4f346d6d9.tex create mode 100644 software/doc/latex/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 create mode 100644 software/doc/latex/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.pdf create mode 100644 software/doc/latex/doxygen.sty create mode 100644 software/doc/latex/error_8c.tex create mode 100644 software/doc/latex/error_8c__incl.md5 create mode 100644 software/doc/latex/error_8c__incl.pdf create mode 100644 software/doc/latex/error_8h.tex create mode 100644 software/doc/latex/error_8h__dep__incl.md5 create mode 100644 software/doc/latex/error_8h__dep__incl.pdf create mode 100644 software/doc/latex/error_8h__incl.md5 create mode 100644 software/doc/latex/error_8h__incl.pdf create mode 100644 software/doc/latex/files.tex create mode 100644 software/doc/latex/heap_8c.tex create mode 100644 software/doc/latex/heap_8c__incl.md5 create mode 100644 software/doc/latex/heap_8c__incl.pdf create mode 100644 software/doc/latex/heap_8h.tex create mode 100644 software/doc/latex/heap_8h__dep__incl.md5 create mode 100644 software/doc/latex/heap_8h__dep__incl.pdf create mode 100644 software/doc/latex/heap_8h__incl.md5 create mode 100644 software/doc/latex/heap_8h__incl.pdf create mode 100644 software/doc/latex/helpers_8c.tex create mode 100644 software/doc/latex/helpers_8c__incl.md5 create mode 100644 software/doc/latex/helpers_8c__incl.pdf create mode 100644 software/doc/latex/helpers_8h.tex create mode 100644 software/doc/latex/helpers_8h__dep__incl.md5 create mode 100644 software/doc/latex/helpers_8h__dep__incl.pdf create mode 100644 software/doc/latex/helpers_8h__incl.md5 create mode 100644 software/doc/latex/helpers_8h__incl.pdf create mode 100644 software/doc/latex/ossettings_8h.tex create mode 100644 software/doc/latex/ossettings_8h__dep__incl.md5 create mode 100644 software/doc/latex/ossettings_8h__dep__incl.pdf create mode 100644 software/doc/latex/ostypes_8h.tex create mode 100644 software/doc/latex/ostypes_8h__dep__incl.md5 create mode 100644 software/doc/latex/ostypes_8h__dep__incl.pdf create mode 100644 software/doc/latex/ostypes_8h__incl.md5 create mode 100644 software/doc/latex/ostypes_8h__incl.pdf create mode 100644 software/doc/latex/printf_8c.tex create mode 100644 software/doc/latex/printf_8c__incl.md5 create mode 100644 software/doc/latex/printf_8c__incl.pdf create mode 100644 software/doc/latex/printf_8h.tex create mode 100644 software/doc/latex/printf_8h__dep__incl.md5 create mode 100644 software/doc/latex/printf_8h__dep__incl.pdf create mode 100644 software/doc/latex/printf_8h__incl.md5 create mode 100644 software/doc/latex/printf_8h__incl.pdf create mode 100644 software/doc/latex/queues_8c.tex create mode 100644 software/doc/latex/queues_8c__incl.md5 create mode 100644 software/doc/latex/queues_8c__incl.pdf create mode 100644 software/doc/latex/queues_8h.tex create mode 100644 software/doc/latex/queues_8h__dep__incl.md5 create mode 100644 software/doc/latex/queues_8h__dep__incl.pdf create mode 100644 software/doc/latex/queues_8h__incl.md5 create mode 100644 software/doc/latex/queues_8h__incl.pdf create mode 100644 software/doc/latex/refman.tex create mode 100644 software/doc/latex/scheduler_8c.tex create mode 100644 software/doc/latex/scheduler_8c__incl.md5 create mode 100644 software/doc/latex/scheduler_8c__incl.pdf create mode 100644 software/doc/latex/scheduler_8h.tex create mode 100644 software/doc/latex/scheduler_8h__dep__incl.md5 create mode 100644 software/doc/latex/scheduler_8h__dep__incl.pdf create mode 100644 software/doc/latex/scheduler_8h__incl.md5 create mode 100644 software/doc/latex/scheduler_8h__incl.pdf create mode 100644 software/doc/latex/semaphore_8c.tex create mode 100644 software/doc/latex/semaphore_8c__incl.md5 create mode 100644 software/doc/latex/semaphore_8c__incl.pdf create mode 100644 software/doc/latex/semaphore_8h.tex create mode 100644 software/doc/latex/structos_q_u_e_u_e__t.tex create mode 100644 software/doc/latex/structos_semaphore_handle__t.tex create mode 100644 software/doc/latex/structos_t_c_b__t.tex create mode 100644 software/doc/latex/system__timer_8c.tex create mode 100644 software/doc/latex/system__timer_8c__incl.md5 create mode 100644 software/doc/latex/system__timer_8c__incl.pdf create mode 100644 software/doc/latex/system__timer_8h.tex create mode 100644 software/doc/latex/system__timer_8h__dep__incl.md5 create mode 100644 software/doc/latex/system__timer_8h__dep__incl.pdf create mode 100644 software/doc/latex/usart_8c.tex create mode 100644 software/doc/latex/usart_8c__incl.md5 create mode 100644 software/doc/latex/usart_8c__incl.pdf create mode 100644 software/doc/latex/usart_8h.tex create mode 100644 software/doc/latex/usart_8h__dep__incl.md5 create mode 100644 software/doc/latex/usart_8h__dep__incl.pdf create mode 100644 software/doc/latex/usart_8h__incl.md5 create mode 100644 software/doc/latex/usart_8h__incl.pdf create mode 100644 software/os/logo_ascii.txt create mode 100644 software/os/semaphore.c create mode 100644 software/os/semaphore.h diff --git a/docs/presentation02/fig/uv_light.png b/docs/presentation02/fig/uv_light.png deleted file mode 100644 index cf6ac20a6a5a76d769235ea04e532825df7a92d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67103 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

ksIA$`Sp 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 \ No newline at end of file diff --git a/docs/presentation02/fig/uv_light_block_diagram.png b/docs/presentation02/fig/uv_light_block_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..556aa33065ba85c128e39acfc3b8aa94eb3a754e GIT binary patch literal 81809 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%0DUdCH|e{+vm*;i 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 literal 0 HcmV?d00001 diff --git a/docs/presentation02/fig/uv_light_block_diagram.xml b/docs/presentation02/fig/uv_light_block_diagram.xml new file mode 100644 index 0000000..206cfb5 --- /dev/null +++ b/docs/presentation02/fig/uv_light_block_diagram.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/presentation02/fig/uv_light_simple.png b/docs/presentation02/fig/uv_light_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..284f1a90d98329a6ff97a6300621c6f8cbd43f4b GIT binary patch literal 31339 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 @S}-p)N{jX!QjcPVBK}f3a8t`hY`)!^0=Z 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 E0JOJ7Pyhe` literal 0 HcmV?d00001 diff --git a/docs/presentation02/fig/uv_light_simple.xml b/docs/presentation02/fig/uv_light_simple.xml new file mode 100644 index 0000000..3164e33 --- /dev/null +++ b/docs/presentation02/fig/uv_light_simple.xml @@ -0,0 +1 @@ +5Vpbd+I2EP41fgzHlnwRjwlJdh/S05zDbtt92iNsYdQYi8oiQH99JVsCKxY52Y3tppQX7NFtNN/M6BuBB2fr/SeON6tfWEYKD/jZ3oO3HgAAJon8UpJDIwkARI0k5zTTspNgTv8mWuhr6ZZmpLI6CsYKQTe2MGVlSVJhyTDnbGd3W7LCXnWDc9IRzFNcdKW/00ystDSIp6eGz4TmK7N0HIVNywKnTzln21Iv6AG4rD9N8xqbyfROqxXO2K4lgncenHHGRPO03s9Ioaxr7NaMuz/TelSck1K8ZQDUejzjYkuMyrVi4mCsUW+HqAG+B292KyrIfINT1bqTDiBlK7Eu5FsgH5e0KGasYLweC7OIoCyU8kpw9kRaLQgsYBzLlq7KehfPhAuyb4n0Fj4RtiaCH2QX43JB1AwxDhfqbe1O6CWR9spVC7gk0QOx9pj8OPfJaPJB281tQ+PuLZORTPqTfmVcrFjOSlzcnaQ3tlFbBiR7Kv5Q4kmk376ZllIq1mpSr9/0BH8SIQ46kPBWMCk6rfvA2EbP0Wiq1DvrMFpUsS1PTS+ogxDznOhuALkh4aTAgj7b87/HvGbxoVxUx6fDRf3604+LJgmwXDQ0Ltty0SD2uy4aIP/9NnyDCdVWqEyBD3hBikdWUUFZKZsWTAi2VuYxqUpZJMPV6mhvXNBcdU2leQh/xcItEMxy13qsUC6qITA5N2hW3SgN1/tcHTYTUsiEz9XICdsI9r15ZyVNq0lBsu9AKUe5FDbqSzdWc/UBIQoSG8KoC2HiQtDvAUEUDpJkWimmlVWaJANGzjIg7GYZOFaWMYtbIRIXQnkzk0q3LR//tWWm4aqqzXEtO8gN7k+N8ilX318rGRLAn7GyYnK8nnPBTbuRSAWbhYz4P5fiImSnOOBIcTByBEjSQ3yApIPfLa02BT6805ISE+3xwP8oloVjWjaB/y69CYZPPGiAxFMPveZcOeCxw4bRUlStmR+VoHXERDbQSB8x92f6Q4Re6y8fGg1OQB+38raoQpfIveJwTO4Fpv8P8qXMdoUl73rGQhKxKuWO9NmmZgRXoh+AkW8DnPjd+u/IwnrPj9Mh8mPgtZkZsKmZxcsmUV1G14JHwqncgPKDEQgbjLt5s6nWRiBsZvHeCdvDnRzh33KpLL9cchYGYTdEQtgNkTDoASwTZ0PGyKshMnwsuDhEPFIsmFusISma/+HM21D+MVLN4CyIxGnqygBZMl30lQFAZF+Sum6gQOy4JA2DHk7J2HUF9WPpGjrTtTcD3k00+/nCWppP2PBwIhfFi7qDMr5m7bJ3dONFt4p0SQdvFKsHGA5WkKU4T6+kO9Ay/1JHwlVok6OwL5ANG3kFZFehGPUBcfcK5etv8v2hXgb480MlyPrC7f8iyI5lRbtSDwYCAAUdAPqhRPeEZOqXrZ8PKTuzlawkL9KgFnWqmZdYrmmW1ceXK8XaSfgMdg6Ez7OmKbTgREk3nEIHmqAPNAepKz7Sz0qGkrYPdTQWZzKL9x4sX3D1VI1ROGSYoKWTNsQpIotlPyEA/dA+UaaOwsGERTsGDJV4F0jo4mPAUUOjsYgtGqqG/nV+uQEQuyrnwQKg+7NGPwh9xjzbSRt8qBuOXnFK4HA4ydfTf3Sae/XTX6Hg3T8= \ No newline at end of file diff --git a/pcbs/adapter_board/output/3d_pic_2.jpg b/pcbs/adapter_board/output/3d_pic_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab553f1bcbd12fa7386c4c0756821b1ca7ac5970 GIT binary patch literal 154671 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

|-h?9G!pU#I{>Mt^m;D5H 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 z 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 literal 0 HcmV?d00001 diff --git a/software/Doxyfile b/software/Doxyfile new file mode 100644 index 0000000..e56fb18 --- /dev/null +++ b/software/Doxyfile @@ -0,0 +1,2494 @@ +# Doxyfile 1.8.13 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "My Project" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+
+
+ +
+ + diff --git a/software/doc/html/annotated_dup.js b/software/doc/html/annotated_dup.js new file mode 100644 index 0000000..2211749 --- /dev/null +++ b/software/doc/html/annotated_dup.js @@ -0,0 +1,6 @@ +var annotated_dup = +[ + [ "osQUEUE_t", "structos_q_u_e_u_e__t.html", "structos_q_u_e_u_e__t" ], + [ "osSemaphoreHandle_t", "structos_semaphore_handle__t.html", "structos_semaphore_handle__t" ], + [ "osTCB_t", "structos_t_c_b__t.html", "structos_t_c_b__t" ] +]; \ No newline at end of file diff --git a/software/doc/html/bc_s.png b/software/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/software/doc/html/bdwn.png b/software/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +EmbeddedEtcher: Data Structure Index + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+ + + + + + +
  o  
+
osSemaphoreHandle_t   osTCB_t   
osQUEUE_t   
+ +
+
+ + + + diff --git a/software/doc/html/closed.png b/software/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/software/doc/html/dir_000000_000001.html b/software/doc/html/dir_000000_000001.html new file mode 100644 index 0000000..707e7bd --- /dev/null +++ b/software/doc/html/dir_000000_000001.html @@ -0,0 +1,73 @@ + + + + + + + +EmbeddedEtcher: os -> platform Relation + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+

os → platform Relation

File in osIncludes file in platform
printf.cusart.h
scheduler.csystem_timer.h
+ + + + diff --git a/software/doc/html/dir_000001_000000.html b/software/doc/html/dir_000001_000000.html new file mode 100644 index 0000000..81612d1 --- /dev/null +++ b/software/doc/html/dir_000001_000000.html @@ -0,0 +1,94 @@ + + + + + + + +EmbeddedEtcher: platform -> os Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

platform → os Relation

File in platformIncludes file in os
system_timer.cossettings.h
system_timer.cscheduler.h
usart.cerror.h
usart.cqueues.h
+
+ + + + diff --git a/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.html b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.html new file mode 100644 index 0000000..6c076ca --- /dev/null +++ b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.html @@ -0,0 +1,129 @@ + + + + + + + +EmbeddedEtcher: os Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
os Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  error.h [code]
 Error logging functionalities of the operating system.
 
file  heap.h [code]
 Heap implementation for the tasks of the operating system.
 
file  helpers.h [code]
 Functions, which one needs here and there for the operating system.
 
file  ossettings.h [code]
 File where all settings take place.
 
file  ostypes.h [code]
 Different types the operating system uses are defined here.
 
file  printf.h [code]
 Lightweight version of GNU printf.
 
file  queues.h [code]
 Implementation for queues.
 
file  scheduler.h [code]
 Scheduler of the operating system.
 
file  semaphore.h [code]
 Mechanisms to prevent race conditions for the operating system.
 
+
+
+ + + + diff --git a/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.js b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.js new file mode 100644 index 0000000..a89f24b --- /dev/null +++ b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d.js @@ -0,0 +1,12 @@ +var dir_8b7cb6c889a10e2a101a7e90c854ca4d = +[ + [ "error.h", "error_8h.html", "error_8h" ], + [ "heap.h", "heap_8h.html", "heap_8h" ], + [ "helpers.h", "helpers_8h.html", "helpers_8h" ], + [ "ossettings.h", "ossettings_8h.html", "ossettings_8h" ], + [ "ostypes.h", "ostypes_8h.html", "ostypes_8h" ], + [ "printf.h", "printf_8h.html", "printf_8h" ], + [ "queues.h", "queues_8h.html", "queues_8h" ], + [ "scheduler.h", "scheduler_8h.html", "scheduler_8h" ], + [ "semaphore.h", "semaphore_8h.html", null ] +]; \ No newline at end of file diff --git a/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.map b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.map new file mode 100644 index 0000000..fd544d0 --- /dev/null +++ b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 new file mode 100644 index 0000000..6842b14 --- /dev/null +++ b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 @@ -0,0 +1 @@ +b6395b64cedf3741a0ff9a0a684b593b \ No newline at end of file diff --git a/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.png b/software/doc/html/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..68d09011dfca0dd4c6d89ae32b3e85466f0c42ba GIT binary patch literal 3050 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 + + + + + + +EmbeddedEtcher: platform Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
platform Directory Reference
+
+
+
+Directory dependency graph for platform:
+
+
platform
+ + + + + +
+
+
+ + + + diff --git a/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9.js b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9.js new file mode 100644 index 0000000..ead32ca --- /dev/null +++ b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9.js @@ -0,0 +1,5 @@ +var dir_c5a52a81292cf9a5167198f4f346d6d9 = +[ + [ "system_timer.h", "system__timer_8h_source.html", null ], + [ "usart.h", "usart_8h_source.html", null ] +]; \ No newline at end of file diff --git a/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.map b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.map new file mode 100644 index 0000000..c0f5f5e --- /dev/null +++ b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 new file mode 100644 index 0000000..7d76d7f --- /dev/null +++ b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.md5 @@ -0,0 +1 @@ +4962b695a0637f111550db33aa58fd8f \ No newline at end of file diff --git a/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.png b/software/doc/html/dir_c5a52a81292cf9a5167198f4f346d6d9_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..3f105b4c96bfb8bf4bfec10d15a34ce5008625d2 GIT binary patch literal 2267 zcma)8c{JPm694tqzIJ(4ReM_d8bvIZi%4SEa#JO3)mHMXrBb1)mWonQYg22)R(ngR z5~@P2MF~Ztw$h+dwA7lH_wIRr-FM%)=X+-6oS8G<@0>HA&&)T$-WD#%C&mW=fS?5e zdWmfv*pkh|#nzI%r4ww!ohIa7nNAC?(Uy3raqfbf@PDKHd_%h?H|KGwP2>-ZksJm zWAG1fJil;fy-81=2{QEn%Yx4gt5ya!pKp1>vesshf!=KU+rkU+x$571!q8O*a`neWmo#3aa;6K zzFo|)=>7V7j?wY)BLG-y`v{PS?LAg6(9dTS_JTvsL11e&p`$7I=4@zl#2#z8f;Gb^ zZ6wvz9c35xjZw<#3LY$eR#tN?gc! z>ph)r1$^l|t;HCtl4A6!8z?IFKr=F!KPSb73W>z`N}MIKJr ze7cK?hrx0#7_AknxBh$z*kdqEGtcDYY56Lo)u#yeO`7%v)cVxh{ez$AKvkdl5~BYSrFDl%!2p2mQhGq{PX5wKNy%gqT=mXM)rhE=*y~&aozYQ8ka1he z<}pcLBw=SK4idU5y|G!h{@&^y^=v@P*KtV+3h&apgHtuFSn)xlW^RMfb0FPDAS~<( z0)c>Hca2s*`k+Ggm~AYKsK9fLY^}gmC%OJbl^i{X&M+Q)tk-k$+SDZ0M|Ga(j6Z!DRj>M6$*^~@o@k9ip@w#>W<;XU5Ax#Utefe{Wn~KAfBaAsgLn6ZG}9rG`w%&K`3#}+-#w8?q$~(z#?Sy_ zU-plUA?q6(NevB1hCQI78EExYKvSoveEbN5 z1F*KU>-ZX~eA=;A&vTUear8I-VKmu9t1vw)OZnLO<3V3&U7mKu-oDnu%j6L(=KJ>$ z^Zdy~qCR1Lef>i-M*Yp3==c&E`XUO|(sfZ)nAXD)RahwNeW6|c?iQBP-Ph+bkIRf# z@>B~o9z~NOfir*rm)THg@x|i)Cr?D540w5yC!-qJDV(y-lI7{VKwMnh5f&~!E>1>X z9!|tbCZjzU7Z!dFjFyiuQgU-2JvvJ>;B7^F!eFquZ?hdnL`gh%T--9DQ(Lq=gBL(n z(6(3Xp->JX3H_o#s1*rKn3$OOPP%c6WeeAYqVB!XYxHtsER2Uf1jgm+j`ALI2-@{TB!+Pu0`ZWFz|ol}eRXQxm#5 zm>1Wloeerzrd1$pY&v&;tUOLnkL~J$#gPP|zk~aFdo{q|=;~^1f`p*j;Es-t8_%5rcfb1x2nf9Psw2L7HL1Jtb*4SWh~Vz-&cn|i zbFJnwWSO&aCa-oGA}*w)q*OSNt(!LNU9_=r>sAvA3JqDGGq<$1K1aD`*NkD7WM+z( zyP=lzo|R{n7m`TBLqo^v2hijh*2G9pk`CY=3S0W8dIq1C3Y(f7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/software/doc/html/doxygen.css b/software/doc/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/software/doc/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + 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: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -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; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.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; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -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 cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* 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; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -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: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.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:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + 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.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@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; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/software/doc/html/doxygen.png b/software/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/dynsections.js b/software/doc/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/software/doc/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +EmbeddedEtcher: os/error.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
error.c File Reference
+
+
+
#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include "error.h"
+#include "helpers.h"
+#include "printf.h"
+#include "ossettings.h"
+
+Include dependency graph for error.c:
+
+
+ + + + + + + +
+
+ + + + + + + + + +

+Functions

uint8_t osExplainError (const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage)
 
uint8_t osPrintError (const char *ifile, const int iline, const osError_t ierror)
 
uint8_t osExplainWarning (const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage)
 
uint8_t osPrintWarning (const char *ifile, const int iline, const osWarning_t iwarning)
 
+

Function Documentation

+ +

◆ osExplainError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osExplainError (const char * ifile,
const uint8_t iline,
const osError_t ierror,
char * iomessage 
)
+
+

Creating a error message string from inter alia an error code.

+
Parameters
+ + + + + +
ifileFilename where error occurs.
ilineLine where error occurs.
ierrorError code.
messageMessage related to the error.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osExplainWarning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osExplainWarning (const char * ifile,
const uint8_t iline,
const osWarning_t ierror,
char * iomessage 
)
+
+

Creating a warning message string from inter alia a warning code.

+
Parameters
+ + + + + +
ifileFilename where warning occurs.
ilineLine where warning occurs.
ierrorWarning code.
messageMessage related to the warning.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osPrintError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osPrintError (const char * ifile,
const int iline,
const osError_t ierror 
)
+
+

Print error. This is where the error output can be redirected (later).

+
Parameters
+ + + + +
ifileFilename where error occurs.
ilineLine where error occurs.
ierrorError code.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osPrintWarning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osPrintWarning (const char * ifile,
const int iline,
const osWarning_t ierror 
)
+
+

Print warning. This is where the warning output can be redirected (later).

+
Parameters
+ + + + +
ifileFilename where warning occurs.
ilineLine where warning occurs.
ierrorWarning code.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/error_8c__incl.map b/software/doc/html/error_8c__incl.map new file mode 100644 index 0000000..4a41a21 --- /dev/null +++ b/software/doc/html/error_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/software/doc/html/error_8c__incl.md5 b/software/doc/html/error_8c__incl.md5 new file mode 100644 index 0000000..92b6f02 --- /dev/null +++ b/software/doc/html/error_8c__incl.md5 @@ -0,0 +1 @@ +e762a75aac812fd57117acf85f15be10 \ No newline at end of file diff --git a/software/doc/html/error_8c__incl.png b/software/doc/html/error_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b2cdb1cb8a342948b89e7dde07d314829a281470 GIT binary patch literal 31436 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/error_8h.html b/software/doc/html/error_8h.html new file mode 100644 index 0000000..3726373 --- /dev/null +++ b/software/doc/html/error_8h.html @@ -0,0 +1,421 @@ + + + + + + + +EmbeddedEtcher: os/error.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/software/doc/html/error_8h.js b/software/doc/html/error_8h.js new file mode 100644 index 0000000..0d06fb6 --- /dev/null +++ b/software/doc/html/error_8h.js @@ -0,0 +1,10 @@ +var error_8h = +[ + [ "DEBUG_MSG", "error_8h.html#ad43da790cc069011db9c6f0ef8fea11b", null ], + [ "THROW_ERROR", "error_8h.html#a443fea42d93b53e3569d33e80c5de6c4", null ], + [ "THROW_WARNING", "error_8h.html#a22fc1f25f5e596198d4a773df7762c77", null ], + [ "osExplainError", "error_8h.html#af770cfb23cba6e7aa7c69aad1bbf968c", null ], + [ "osExplainWarning", "error_8h.html#a29238a23e284dd0a6278434447be4682", null ], + [ "osPrintError", "error_8h.html#a540c46d0a32421cad29354147a02c4ea", null ], + [ "osPrintWarning", "error_8h.html#a8ea68ece7fa351c9c046006749706e26", null ] +]; \ No newline at end of file diff --git a/software/doc/html/error_8h__dep__incl.map b/software/doc/html/error_8h__dep__incl.map new file mode 100644 index 0000000..e473f57 --- /dev/null +++ b/software/doc/html/error_8h__dep__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/software/doc/html/error_8h__dep__incl.md5 b/software/doc/html/error_8h__dep__incl.md5 new file mode 100644 index 0000000..a510aec --- /dev/null +++ b/software/doc/html/error_8h__dep__incl.md5 @@ -0,0 +1 @@ +9545ab03da173227857d3d4c389716ed \ No newline at end of file diff --git a/software/doc/html/error_8h__dep__incl.png b/software/doc/html/error_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5751cc2809e1b9bcf056a77041690da4da3810cb GIT binary patch literal 11148 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 + + + diff --git a/software/doc/html/error_8h__incl.md5 b/software/doc/html/error_8h__incl.md5 new file mode 100644 index 0000000..c02e72c --- /dev/null +++ b/software/doc/html/error_8h__incl.md5 @@ -0,0 +1 @@ +5377ffca96772de2aa32fbee4fce83b9 \ No newline at end of file diff --git a/software/doc/html/error_8h__incl.png b/software/doc/html/error_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..80a3ee5ed7d4aa8ddff96e8ef44ca07c5b03851d GIT binary patch literal 8571 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 NML|QpQr05;e*n&T9EJb@ literal 0 HcmV?d00001 diff --git a/software/doc/html/error_8h_source.html b/software/doc/html/error_8h_source.html new file mode 100644 index 0000000..630c57f --- /dev/null +++ b/software/doc/html/error_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +EmbeddedEtcher: os/error.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
error.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_ERROR_H
10 #define OS_ERROR_H
11 
12 //--------------Includes-----------------
13 #include"ostypes.h"
14 #include"ossettings.h"
15 
16 //--------------Preprocessor Hacks-------
17 
21 #if(DEBUG_MODE == ON)
22 #define DEBUG_MSG(MSG, ...)\
23  osPrintf("%s:%d: debug: ", __FILE__, __LINE__);\
24  osPrintf(MSG, ##__VA_ARGS__)
25 #else
26 #define DEBUG_MSG(MSG, ...)
27 #endif
28 
32 #define THROW_ERROR(ERROR_TYPE)\
33  osPrintError(__FILE__, __LINE__, ERROR_TYPE)
34 
38 #define THROW_WARNING(WARNING_TYPE)\
39  osPrintWarning(__FILE__, __LINE__, WARNING_TYPE)
40 
41 //--------------Funtions-----------------
42 
51 uint8_t osExplainError(const char* ifile, const uint8_t iline, const osError_t ierror, char* iomessage);
52 
60 uint8_t osPrintError(const char* ifile, const int iline, const osError_t ierror);
61 
70 uint8_t osExplainWarning(const char* ifile, const uint8_t iline, const osWarning_t ierror, char* iomessage);
71 
79 uint8_t osPrintWarning(const char* ifile, const int iline, const osWarning_t ierror);
80 
81 #endif
uint8_t osExplainError(const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage)
Definition: error.c:9
+
osWarning_t
Definition: ostypes.h:72
+
Different types the operating system uses are defined here.
+
uint8_t osPrintWarning(const char *ifile, const int iline, const osWarning_t ierror)
Definition: error.c:77
+
osError_t
Definition: ostypes.h:56
+
uint8_t osExplainWarning(const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage)
Definition: error.c:57
+
File where all settings take place.
+
uint8_t osPrintError(const char *ifile, const int iline, const osError_t ierror)
Definition: error.c:46
+
+
+ + + + diff --git a/software/doc/html/files.html b/software/doc/html/files.html new file mode 100644 index 0000000..a09b832 --- /dev/null +++ b/software/doc/html/files.html @@ -0,0 +1,114 @@ + + + + + + + +EmbeddedEtcher: File List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + +
  os
 error.hError logging functionalities of the operating system
 heap.hHeap implementation for the tasks of the operating system
 helpers.hFunctions, which one needs here and there for the operating system
 ossettings.hFile where all settings take place
 ostypes.hDifferent types the operating system uses are defined here
 printf.hLightweight version of GNU printf
 queues.hImplementation for queues
 scheduler.hScheduler of the operating system
 semaphore.hMechanisms to prevent race conditions for the operating system
  platform
 system_timer.h
 usart.h
+
+
+
+ + + + diff --git a/software/doc/html/files.js b/software/doc/html/files.js new file mode 100644 index 0000000..9e4d5a3 --- /dev/null +++ b/software/doc/html/files.js @@ -0,0 +1,5 @@ +var files = +[ + [ "os", "dir_8b7cb6c889a10e2a101a7e90c854ca4d.html", "dir_8b7cb6c889a10e2a101a7e90c854ca4d" ], + [ "platform", "dir_c5a52a81292cf9a5167198f4f346d6d9.html", "dir_c5a52a81292cf9a5167198f4f346d6d9" ] +]; \ No newline at end of file diff --git a/software/doc/html/folderclosed.png b/software/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/software/doc/html/functions.html b/software/doc/html/functions.html new file mode 100644 index 0000000..490fdc4 --- /dev/null +++ b/software/doc/html/functions.html @@ -0,0 +1,110 @@ + + + + + + + +EmbeddedEtcher: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+ + + + diff --git a/software/doc/html/functions_vars.html b/software/doc/html/functions_vars.html new file mode 100644 index 0000000..6fd6771 --- /dev/null +++ b/software/doc/html/functions_vars.html @@ -0,0 +1,110 @@ + + + + + + + +EmbeddedEtcher: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/software/doc/html/globals.html b/software/doc/html/globals.html new file mode 100644 index 0000000..70f9d00 --- /dev/null +++ b/software/doc/html/globals.html @@ -0,0 +1,207 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- d -

+ + +

- o -

+ + +

- t -

+
+
+ + + + diff --git a/software/doc/html/globals_defs.html b/software/doc/html/globals_defs.html new file mode 100644 index 0000000..92e36ce --- /dev/null +++ b/software/doc/html/globals_defs.html @@ -0,0 +1,104 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/software/doc/html/globals_enum.html b/software/doc/html/globals_enum.html new file mode 100644 index 0000000..97056db --- /dev/null +++ b/software/doc/html/globals_enum.html @@ -0,0 +1,107 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/software/doc/html/globals_eval.html b/software/doc/html/globals_eval.html new file mode 100644 index 0000000..a2122e1 --- /dev/null +++ b/software/doc/html/globals_eval.html @@ -0,0 +1,134 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/software/doc/html/globals_func.html b/software/doc/html/globals_func.html new file mode 100644 index 0000000..10aebb5 --- /dev/null +++ b/software/doc/html/globals_func.html @@ -0,0 +1,173 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/software/doc/html/globals_type.html b/software/doc/html/globals_type.html new file mode 100644 index 0000000..cec8544 --- /dev/null +++ b/software/doc/html/globals_type.html @@ -0,0 +1,98 @@ + + + + + + + +EmbeddedEtcher: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/software/doc/html/graph_legend.html b/software/doc/html/graph_legend.html new file mode 100644 index 0000000..ae61b6d --- /dev/null +++ b/software/doc/html/graph_legend.html @@ -0,0 +1,126 @@ + + + + + + + +EmbeddedEtcher: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +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 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 labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/software/doc/html/graph_legend.md5 b/software/doc/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/software/doc/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/software/doc/html/graph_legend.png b/software/doc/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..a3fdbc199b050a69cc19dddde0a412a26437d9b1 GIT binary patch literal 18526 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 S!Q+7-kXKSllI7wi{{IW7k3Luc literal 0 HcmV?d00001 diff --git a/software/doc/html/heap_8c.html b/software/doc/html/heap_8c.html new file mode 100644 index 0000000..62d93ce --- /dev/null +++ b/software/doc/html/heap_8c.html @@ -0,0 +1,381 @@ + + + + + + + +EmbeddedEtcher: os/heap.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
heap.c File Reference
+
+
+
#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+#include "heap.h"
+#include "error.h"
+#include "ostypes.h"
+#include "printf.h"
+
+Include dependency graph for heap.c:
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + +

+Functions

void osHeapInit (osHeapNode_t *ioarray)
 
void osHeapHeapify (osHeapNode_t *ioarray, uint8_t iind)
 
void osHeapBuild (osHeapNode_t *ioarray)
 
uint8_t osHeapMaximum (osHeapNode_t *ioarray, osHeapNode_t *iomax)
 
uint8_t osHeapExtractMaximum (osHeapNode_t *ioarray, osHeapNode_t *iomax)
 
uint8_t osHeapInsert (osHeapNode_t *ioarray, osHeapNode_t x)
 
void osHeapPrintS (osHeapNode_t *ioarray)
 
uint8_t osHeapIsEmpty (osHeapNode_t *ioarray)
 
+

Function Documentation

+ +

◆ osHeapBuild()

+ +
+
+ + + + + + + + +
void osHeapBuild (osHeapNode_tioarray)
+
+

Build the heap from the bottom up. Given an array which is not heapified at all.

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+ +

◆ osHeapExtractMaximum()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapExtractMaximum (osHeapNode_tioarray,
osHeapNode_tiomax 
)
+
+

Copy heap maximum and remove it (extract).

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iomaxNode, which is the maximum.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is empty).
+
+
+ +
+
+ +

◆ osHeapHeapify()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void osHeapHeapify (osHeapNode_tioarray,
uint8_t iind 
)
+
+

Classic heapify operation.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iindElement to be put in the right place.
+
+
+ +
+
+ +

◆ osHeapInit()

+ +
+
+ + + + + + + + +
void osHeapInit (osHeapNode_tioarray)
+
+

Initializes all heap elements by setting them to NULL.

+
Parameters
+ + +
Arraywhere the heap is stored.
+
+
+ +
+
+ +

◆ osHeapInsert()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapInsert (osHeapNode_tioarray,
osHeapNode_t x 
)
+
+

Insert a node into the heap.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
xNode to be inserted into the heap.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is full).
+
+
+ +
+
+ +

◆ osHeapIsEmpty()

+ +
+
+ + + + + + + + +
uint8_t osHeapIsEmpty (osHeapNode_tioarray)
+
+

Is the heap empty?

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+ +

◆ osHeapMaximum()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapMaximum (osHeapNode_tioarray,
osHeapNode_tiomax 
)
+
+

Copy heap maximum.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iomaxNode, which is the maximum.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is empty).
+
+
+ +
+
+ +

◆ osHeapPrintS()

+ +
+
+ + + + + + + + +
void osHeapPrintS (osHeapNode_tioarray)
+
+

Print heap all priorities for debugging purposes.

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/heap_8c__incl.map b/software/doc/html/heap_8c__incl.map new file mode 100644 index 0000000..93eddc1 --- /dev/null +++ b/software/doc/html/heap_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/software/doc/html/heap_8c__incl.md5 b/software/doc/html/heap_8c__incl.md5 new file mode 100644 index 0000000..a517f56 --- /dev/null +++ b/software/doc/html/heap_8c__incl.md5 @@ -0,0 +1 @@ +abf5623d7e66602274d10404b6c8843a \ No newline at end of file diff --git a/software/doc/html/heap_8c__incl.png b/software/doc/html/heap_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b19771a60642a054dbe6dc3e4bd0f2531205329a GIT binary patch literal 27265 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 rNMnsgQ2cutr|17OO#lBkaZZf + + + + + + +EmbeddedEtcher: os/heap.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
heap.h File Reference
+
+
+ +

Heap implementation for the tasks of the operating system. +More...

+
#include "ostypes.h"
+
+Include dependency graph for heap.h:
+
+
+ + + + +
+
+

Go to the source code of this file.

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

+Functions

void osHeapInit (osHeapNode_t *ioarray)
 
void osHeapHeapify (osHeapNode_t *ioarray, uint8_t iind)
 
void osHeapBuild (osHeapNode_t *ioarray)
 
uint8_t osHeapMaximum (osHeapNode_t *ioarray, osHeapNode_t *iomax)
 
uint8_t osHeapExtractMaximum (osHeapNode_t *ioarray, osHeapNode_t *iomax)
 
uint8_t osHeapInsert (osHeapNode_t *ioarray, osHeapNode_t x)
 
void osHeapPrintS (osHeapNode_t *ioarray)
 
uint8_t osHeapIsEmpty (osHeapNode_t *ioarray)
 
+

Detailed Description

+

Heap implementation for the tasks of the operating system.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Function Documentation

+ +

◆ osHeapBuild()

+ +
+
+ + + + + + + + +
void osHeapBuild (osHeapNode_tioarray)
+
+

Build the heap from the bottom up. Given an array which is not heapified at all.

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+ +

◆ osHeapExtractMaximum()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapExtractMaximum (osHeapNode_tioarray,
osHeapNode_tiomax 
)
+
+

Copy heap maximum and remove it (extract).

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iomaxNode, which is the maximum.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is empty).
+
+
+ +
+
+ +

◆ osHeapHeapify()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void osHeapHeapify (osHeapNode_tioarray,
uint8_t iind 
)
+
+

Classic heapify operation.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iindElement to be put in the right place.
+
+
+ +
+
+ +

◆ osHeapInit()

+ +
+
+ + + + + + + + +
void osHeapInit (osHeapNode_tioarray)
+
+

Initializes all heap elements by setting them to NULL.

+
Parameters
+ + +
Arraywhere the heap is stored.
+
+
+ +
+
+ +

◆ osHeapInsert()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapInsert (osHeapNode_tioarray,
osHeapNode_t x 
)
+
+

Insert a node into the heap.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
xNode to be inserted into the heap.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is full).
+
+
+ +
+
+ +

◆ osHeapIsEmpty()

+ +
+
+ + + + + + + + +
uint8_t osHeapIsEmpty (osHeapNode_tioarray)
+
+

Is the heap empty?

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+ +

◆ osHeapMaximum()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osHeapMaximum (osHeapNode_tioarray,
osHeapNode_tiomax 
)
+
+

Copy heap maximum.

+
Parameters
+ + + +
ioarrayArray where the heap is stored.
iomaxNode, which is the maximum.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (heap is empty).
+
+
+ +
+
+ +

◆ osHeapPrintS()

+ +
+
+ + + + + + + + +
void osHeapPrintS (osHeapNode_tioarray)
+
+

Print heap all priorities for debugging purposes.

+
Parameters
+ + +
ioarrayArray where the heap is stored.
+
+
+ +
+
+
+
+ + + + diff --git a/software/doc/html/heap_8h.js b/software/doc/html/heap_8h.js new file mode 100644 index 0000000..cbea16d --- /dev/null +++ b/software/doc/html/heap_8h.js @@ -0,0 +1,11 @@ +var heap_8h = +[ + [ "osHeapBuild", "heap_8h.html#aba6f21f0421450da6531c7ea9f6976b5", null ], + [ "osHeapExtractMaximum", "heap_8h.html#a31002fadb05f80382c9714462dfb092e", null ], + [ "osHeapHeapify", "heap_8h.html#a5a51c0aca53767d5038681cc649d5fa8", null ], + [ "osHeapInit", "heap_8h.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c", null ], + [ "osHeapInsert", "heap_8h.html#ab5c1d9c908e7d618bd5869f6e0ed16c5", null ], + [ "osHeapIsEmpty", "heap_8h.html#a999a4beae27d4c7085278724feeabbc1", null ], + [ "osHeapMaximum", "heap_8h.html#a2a73414cf2e4e1d2cebb4597a36bc018", null ], + [ "osHeapPrintS", "heap_8h.html#abfcd76f5650f218825578b0bd1652587", null ] +]; \ No newline at end of file diff --git a/software/doc/html/heap_8h__dep__incl.map b/software/doc/html/heap_8h__dep__incl.map new file mode 100644 index 0000000..185f8b0 --- /dev/null +++ b/software/doc/html/heap_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/heap_8h__dep__incl.md5 b/software/doc/html/heap_8h__dep__incl.md5 new file mode 100644 index 0000000..5a71c2f --- /dev/null +++ b/software/doc/html/heap_8h__dep__incl.md5 @@ -0,0 +1 @@ +a9fe6ea994e4692fab190e78980a243a \ No newline at end of file diff --git a/software/doc/html/heap_8h__dep__incl.png b/software/doc/html/heap_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1592b48557e029ea39fb8b08ce73c1cff64309e3 GIT binary patch literal 5446 zcmZ9QcRX8P_{URwOU+7=8nr1cYE==tMzvMDYAZ2H%!pBYHyw5nqxKe?QbkK`RhyuM z*lMre?eF#a{qg<1a*}gjx%b?Ao^w9WbD#GU{a8fa~3wctGn#B`>ms{G71V{;a1%xE-6zT@T^oJ~Y()kyI{O)cNa zOxvK@)r6#IoVhlbNQmNvX=M}<_IdK6>9#1*Ua_!G8L7dTkZ^w4o-v7;OPTLvTg-D( z?dyFUuvQu^%|U>(FNZ?q>!LtU@6WW3A1Zyh$aXJv}sJ zz|`r87l^TvL@;%UD^8PE3f{Rx@8{bn3{TIIOJI{ z7|iiXx*Jm)=f8z|M9?RGst$t@=RFY=5f!x?EiEm5Y-B`EOiawn&%cBp&i&ro`xWS} z-?$N_^`1{zfJucL{c@tx%40J%B?SbMVNaO(OHR-Ea<0YCW0Z!5rhRqaz|1W6+c#B; z@UO0e$lAKPq>JhCaTYHxFDlE#oP($9YOn$l8yg$gS-yfcvqeE+wa3)43B+%K~+JZow5Bzz}ypOhK3(L#9?|eCb1E|=WX0&1~W1ev$C?1kddhv8L?JXRek^dz5V=TfA>$aCAXLu zodPF)e}Dgjwj~8&0RakodwU9c`kvm8!d7;6;eYy)ZGcUnpr-Bw)Oekpokmz#xS_e3 zM_T%MU1?+_c}{L_mG`D;%i)wW1q}@eXk(_4F+M(CXrA-Kp3Ia2Bqb{gy1u?Hxj2%! zzV1XqN{ZWQwL3(xsDcu=XU!@$t(P@lQipZV|7!~e!H@ny)oW_w!Ts^aY} znD^vOG^0i_uRCaAXg@_!t`JUhHYtd7qXH88IL_NhD` z`tsPsq+-PD2}%Q2z>UTBM@7j{Sk5y&Gn7)|Mti4f2;JVnQ$l90v0=Bra}S+-se`8rHZ)L=HMVZAwu@Wtckc z9C$?-&s?w$TUU{Aa9H#5GU42UrW5*-w@dQLihUgMr&=OOi=+Bq-aMWNNuaCxdU71V z+0tqmk&xgY2tn=ZYTSUVAIKy=({?{QBwk()s7Qho&S5YFe#NZVoE%3PIaBWw^8?8$ zV>B2KyIpG$0gh{J?pb38_dOg73jvxkT>OhPLFQrXkP%Ut7>UUuBCO&-CdkGlDKh) zl0<=oq@nmi2c2wL7ZM*&2|Dp2;CB|5mg08YeX!+O>l_d{X0EW8{b}Z7zp&Ol2`59N zjKMv~7C(9U+dI2{AJKB>7Z&ZS59v6v2E)tB1Qm~8@+EM#hAs63S?7@zJ4hmg-o1Ss zHd@fPTM$7bUNw|VwaIM>FDT)L(8r7BbgZ}ueEo?vFRPJm;5qrJJ$`1 zxFjtxT3zVX>T7r^Y`@hIRi_QvR>wS>ahQK=?|`EpCDM? zlOi~v3$Bomv#1(Rg`yH?t6EO&0W1HH$`5Co3}Yv2d~jv;e7Cr)u1){>TUfPw-F`qP zxM)qBU3M>XDzGivU$x>cKC!!7!?;C;IakB%<=J7#LwqqBtyo=?ytvX23D{BQoc`k| z3TaY&rhBERe*fwVl+r5L};Jx_8_C8W#c{y&*C;Or~otAB0D?EEvUskmZ>Rdb$fC(Vzzbl zidbkrF*rG=S0P@Jeb#xcr1R4Zo;>R2?@yHXIU>8Rj!oEzljMRsolO$a%F7U4Wvd0D zp+QvnY+FxG@`ZlFVkJgKRCfCB-+!BOECm=$+CSlWV+R+h;l4Tmvvr8HI^M~=gJFZ4 zn{Vvy_RLLG<%0S3FMoQ=LJ}|Krl^sJ8C|%}hqr`Ppo`@CYH zqtIZ*9g$~aT1<^9Kqh#uUb3d&&-!|L5ER+m>|cJ$DFDbkmXfiw%J;R1fB@6oE_5S3ZFF%UR<=Sbh8u}5s8}+i)5~`*Hu*wlUF?7p=i6hqyw&F zf;2fWF_{BVj}1P#NB1IVHgnU%_@IOQ-tJ0zf^nMyqm)!UJULgw5ufRC;V;F_L(e4w zhY%5&Pl`o)nTwGN3Q_|RE_h)v z>gunL4Sxks82i&^3Jne6cH5P$tk`aaz1*HtvxwmT?JX_MH&NrjrI&F`i9BKfhGlCU ziGc{eS94ohs7y?(d~u||=4N0|b<(BDpn=EI(k`bA^MT0FO%F1uGI|SjbxJx;5tzzX zBLDSK&z7_Do9E}|J99{Kd_4b|atS%#DK1ie=imaWs^(|?OGv-2kBv!{TViEESKZT7 zo{B0*a%z|h|8q(J0 z{b?~@sG`j&_LKZY74oPa(cpdi)$9SH*&7uP1f19SA*zX~v`WDI!vXmLfjbr7)_=)X z*4*pL(~^cKOA0vtlAkrQwCF6zVzFLQhw6M&Vb5Y^S>*7cb@^ycmsGTHT#e&-&(Nx@$N6@w)&$7pP4bv@PIJ2*h8DYj@0n! z&kufgON7(?E@zLYpRMW48cnw^>>2IEI@pikrjR+i806jalgo>aP}k%A4*PBz{!){r z@CF$9coSZTLZF3+E9Br{pSS#!b?G6VVH`FO8ubV`Q^;-U$j&A*E{_2!0ClGEsaG;l;eD1q_)cMiHWF%g_kL5 zX@v5^ws4)1;^N}%Z@FN$qXQYT!~n3| zfIzqv6<NqXm5*9PD{?r!|ZV7SZ0_O{S%#1-e8wyj~v@ zjJtWCjz>LC$=A1`w5}k!%lcbaR|jwj@Lzk5TI|q-%&}VO(#@?dy&5I-Q5&6+ z5m#l?V~roexO;i2y?P}WTps!M0ml;|r>h@#9R@N&%F0BwwY8U%o}RVsY{&`$>1SU0 zj|WsVG`w3|Tg!)=(|Ii|88Wi6=){MYDYZa+3sF)6z!2u-B4jPzF2@v-zFuoG`f6_L17}< zIktT8a&mGMi9I~O%PrpP_6-j5)6vo8RaK$!>+A3G@_0w4rnCWod-duS7ejOySmit5 z0$M0kD_jAK}J5dm35qjg*bu_?!1N0|Nsq>WR6C?;wiT(=%64bKZnU zSqW_SB5dvLds~w>HsJZNg2Icf!`Ol%YfHQ!;zF?nNdCiBxjVA1&K)Kt$;rt9PwE&N z0^h!U`xqAqed+8>edo>{^CkqPxfp9%Ss6ICOI%ty$$4;OgaOq4r#Jbzi3ue&H8nuS zK=bwYUj%@DXn44z6?r7?Fu<;pslW!cV7lI|v$vN@1p@{eIUT!_i;L)+&`{jkT6A}}Iui@a*S@}zN646jK|pV> z3FD$*6(tH~fT+dH8$f_J0hNYQQ!JI8ot>tZ)>`#OnOVKEd#C_m7Al}kEXEB9*JFxJ;b*Rjf{i?E@GyF zRBnL<%=JF~n=e0@Vqtqb@n}8>`VVN!Et(?^2)}s%XaoUd%S9-Sq=&xg`=g?vLC&w2 z(GFB+{97}FgF)ZAyB7yO$u|UE$o;Fm079z8VgbT`Gq?&9VETukpdp}~VJ3a|E(0?& zbA#_L_js9EWP7_3NXf}bC@n1w1fpgY`=$X!g_RgpES??^qN1YSPVa=Gh0fH6TP`MD zV@@TxxrrnsBxGJMk_28|_y7xL-5Eg(;`~A&Qu6kePD@X>vrH2l4fMG&%lbiv#jvog zEmOq2;cZGv3K-b;|Mk$hIXw!l<%N#WZvz7fcs%~?>!oh=QcvQ0fV}T|uKX0+Tqs() zaDY;Wt1z&!Y5nZ)k4B@fo76g@H;8vu`qQH^7_O?C8lJPmO&)3%ky`*uSKA!b)=FAC zIB4kT>T0Q~l3b?>x0rHsbK?g>>9>)QcR+}IM@r4|9W}QRA99$Q0RDBL>$A_WcfL8E ztoTurmseIcRYp#Z0fj;>ZfxiP5zO|?&fJ`xO))@*?Sa3fpn$;R<5WF^v%!HQxJB^< z>)5GUuhRHzw_!oZ4Y?Q&rwi`z9DzTM2z&%RGy&jwAl9q>7{(8!rlwkL&$Ysnl?^jJS|jK7Z=~0?61PO z(S=w6T}i(^TWq2R8#8nM;Wd|{%bT(ud0(%BWyAiur%9_B6enps9Q{v;5h533J#lp{ Y)$Wxb$%b$$P#6Visp+YftGs;kKV+McR{#J2 literal 0 HcmV?d00001 diff --git a/software/doc/html/heap_8h__incl.map b/software/doc/html/heap_8h__incl.map new file mode 100644 index 0000000..1f56651 --- /dev/null +++ b/software/doc/html/heap_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/heap_8h__incl.md5 b/software/doc/html/heap_8h__incl.md5 new file mode 100644 index 0000000..ca1d721 --- /dev/null +++ b/software/doc/html/heap_8h__incl.md5 @@ -0,0 +1 @@ +a7bfd2223392d74a2e47b7242b8567e2 \ No newline at end of file diff --git a/software/doc/html/heap_8h__incl.png b/software/doc/html/heap_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..478f23f933e94fcd86898438adad628c9d672d28 GIT binary patch literal 6564 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 QYZr)$0`ytAyhYgm0%~;rTmS$7 literal 0 HcmV?d00001 diff --git a/software/doc/html/heap_8h_source.html b/software/doc/html/heap_8h_source.html new file mode 100644 index 0000000..2a8cbae --- /dev/null +++ b/software/doc/html/heap_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +EmbeddedEtcher: os/heap.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
heap.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_H_HEAP_
10 #define OS_H_HEAP_
11 
12 //--------------Includes-----------------
13 
14 #include"ostypes.h"
15 
16 //--------------Functions----------------
17 
22 void osHeapInit(osHeapNode_t* ioarray);
23 
29 void osHeapHeapify(osHeapNode_t* ioarray, uint8_t iind);
30 
35 void osHeapBuild(osHeapNode_t* ioarray);
36 
43 uint8_t osHeapMaximum(osHeapNode_t* ioarray, osHeapNode_t* iomax);
44 
51 uint8_t osHeapExtractMaximum(osHeapNode_t* ioarray, osHeapNode_t* iomax);
52 
59 uint8_t osHeapInsert(osHeapNode_t* ioarray, osHeapNode_t x);
60 
65 void osHeapPrintS(osHeapNode_t* ioarray);
66 
71 uint8_t osHeapIsEmpty(osHeapNode_t* ioarray);
72 
73 #endif /* OS_H_HEAP_ */
uint8_t osHeapInsert(osHeapNode_t *ioarray, osHeapNode_t x)
Definition: heap.c:155
+
Definition: ostypes.h:41
+
void osHeapHeapify(osHeapNode_t *ioarray, uint8_t iind)
Definition: heap.c:90
+
uint8_t osHeapMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax)
Definition: heap.c:122
+
uint8_t osHeapIsEmpty(osHeapNode_t *ioarray)
Definition: heap.c:197
+
uint8_t osHeapExtractMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax)
Definition: heap.c:135
+
Different types the operating system uses are defined here.
+
void osHeapBuild(osHeapNode_t *ioarray)
Definition: heap.c:114
+
void osHeapInit(osHeapNode_t *ioarray)
Definition: heap.c:82
+
void osHeapPrintS(osHeapNode_t *ioarray)
Definition: heap.c:176
+
+
+ + + + diff --git a/software/doc/html/helpers_8c.html b/software/doc/html/helpers_8c.html new file mode 100644 index 0000000..28e4612 --- /dev/null +++ b/software/doc/html/helpers_8c.html @@ -0,0 +1,157 @@ + + + + + + + +EmbeddedEtcher: os/helpers.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
helpers.c File Reference
+
+
+
#include "stm32f10x.h"
+#include "helpers.h"
+#include "error.h"
+#include <stdlib.h>
+
+Include dependency graph for helpers.c:
+
+
+ + + + + + +
+
+ + + +

+Functions

uint8_t osItoa (int iint, char *iochar, size_t ibuffsize, size_t *obuffsize)
 
+

Function Documentation

+ +

◆ osItoa()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osItoa (int iint,
char * iochar,
size_t ibuffsize,
size_t * obuffsize 
)
+
+

Simple Interger to ASCII conversion.

+
Parameters
+ + + + + +
iintInput integer.
iocharC string where the result ends up.
ibuffsizeSize of the C string for security reasons.
obuffsizeSize of the string created by the function.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (buffer overflow).
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/helpers_8c__incl.map b/software/doc/html/helpers_8c__incl.map new file mode 100644 index 0000000..7ba92f7 --- /dev/null +++ b/software/doc/html/helpers_8c__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/software/doc/html/helpers_8c__incl.md5 b/software/doc/html/helpers_8c__incl.md5 new file mode 100644 index 0000000..819c7fc --- /dev/null +++ b/software/doc/html/helpers_8c__incl.md5 @@ -0,0 +1 @@ +c4783b62bb9e7d3c693bc0497005cbd1 \ No newline at end of file diff --git a/software/doc/html/helpers_8c__incl.png b/software/doc/html/helpers_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..748e956b71eaa8c599b5ff9dfeba91be0c5ef795 GIT binary patch literal 17926 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/helpers_8h.html b/software/doc/html/helpers_8h.html new file mode 100644 index 0000000..46fcb12 --- /dev/null +++ b/software/doc/html/helpers_8h.html @@ -0,0 +1,231 @@ + + + + + + + +EmbeddedEtcher: os/helpers.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
helpers.h File Reference
+
+
+ +

Functions, which one needs here and there for the operating system. +More...

+
#include "stm32f10x.h"
+#include <stdlib.h>
+
+Include dependency graph for helpers.h:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

int osPowInt (int ibase, int iexponent)
 
uint8_t osItoa (int iint, char *iochar, size_t ibuffsize, size_t *obuffsize)
 
+

Detailed Description

+

Functions, which one needs here and there for the operating system.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Function Documentation

+ +

◆ osItoa()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osItoa (int iint,
char * iochar,
size_t ibuffsize,
size_t * obuffsize 
)
+
+

Simple Interger to ASCII conversion.

+
Parameters
+ + + + + +
iintInput integer.
iocharC string where the result ends up.
ibuffsizeSize of the C string for security reasons.
obuffsizeSize of the string created by the function.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (buffer overflow).
+
+
+ +
+
+ +

◆ osPowInt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int osPowInt (int ibase,
int iexponent 
)
+
+inline
+
+

Simple inline power calculation.

+
Parameters
+ + + +
ibaseInput base.
iexponentInput exponent.
+
+
+
Return values
+ + +
Result.
+
+
+ +
+
+
+
+ + + + diff --git a/software/doc/html/helpers_8h.js b/software/doc/html/helpers_8h.js new file mode 100644 index 0000000..268f166 --- /dev/null +++ b/software/doc/html/helpers_8h.js @@ -0,0 +1,5 @@ +var helpers_8h = +[ + [ "osItoa", "helpers_8h.html#a47defb2893c0a5e4427dd9daf6d5057d", null ], + [ "osPowInt", "helpers_8h.html#a8f7c8ca9321d4fa5a07c09b42120cab9", null ] +]; \ No newline at end of file diff --git a/software/doc/html/helpers_8h__dep__incl.map b/software/doc/html/helpers_8h__dep__incl.map new file mode 100644 index 0000000..8ba883d --- /dev/null +++ b/software/doc/html/helpers_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/software/doc/html/helpers_8h__dep__incl.md5 b/software/doc/html/helpers_8h__dep__incl.md5 new file mode 100644 index 0000000..957ae65 --- /dev/null +++ b/software/doc/html/helpers_8h__dep__incl.md5 @@ -0,0 +1 @@ +7f5153055a49971667421030c92871ad \ No newline at end of file diff --git a/software/doc/html/helpers_8h__dep__incl.png b/software/doc/html/helpers_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..523647e83ad99c5dc6da5875013b0c3cf7e39685 GIT binary patch literal 5840 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 ZlB36 + diff --git a/software/doc/html/helpers_8h__incl.md5 b/software/doc/html/helpers_8h__incl.md5 new file mode 100644 index 0000000..5abbcc9 --- /dev/null +++ b/software/doc/html/helpers_8h__incl.md5 @@ -0,0 +1 @@ +128035a9ca6abc1e3fa42a113d8626da \ No newline at end of file diff --git a/software/doc/html/helpers_8h__incl.png b/software/doc/html/helpers_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..4898cfbb346f65e2561a683de5cb296079f7292b GIT binary patch literal 4687 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/helpers_8h_source.html b/software/doc/html/helpers_8h_source.html new file mode 100644 index 0000000..ebd3882 --- /dev/null +++ b/software/doc/html/helpers_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +EmbeddedEtcher: os/helpers.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
helpers.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_HELPERS_H_
10 #define OS_HELPERS_H_
11 
12 #include "stm32f10x.h"
13 #include <stdlib.h>
14 
21 inline int osPowInt(int ibase, int iexponent)
22 {
23  int result =1;
24  for(int i=0; i < iexponent; i++)
25  {
26  result *= ibase;
27  }
28  return result;
29 }
30 
39 uint8_t osItoa(int iint, char* iochar, size_t ibuffsize, size_t* obuffsize);
40 
41 #endif /* OS_HELPERS_H_ */
int osPowInt(int ibase, int iexponent)
Definition: helpers.h:21
+
uint8_t osItoa(int iint, char *iochar, size_t ibuffsize, size_t *obuffsize)
Definition: helpers.c:14
+
+
+ + + + diff --git a/software/doc/html/index.html b/software/doc/html/index.html new file mode 100644 index 0000000..1e51cd3 --- /dev/null +++ b/software/doc/html/index.html @@ -0,0 +1,97 @@ + + + + + + + +EmbeddedEtcher: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EmbeddedEtcher Documentation
+
+
+
+
+ + + + diff --git a/software/doc/html/jquery.js b/software/doc/html/jquery.js new file mode 100644 index 0000000..3f1abfb --- /dev/null +++ b/software/doc/html/jquery.js @@ -0,0 +1,87 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/* + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({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("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom: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({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,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}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+ +
+
ossettings.h File Reference
+
+
+ +

File where all settings take place. +More...

+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + +
+
+

Go to the source code of this file.

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

+Macros

+#define MAX_MESSAGE_SIZE   255
 
+#define MAX_LEVEL_INT_NESTING   3
 
+#define SYS_TICK_MS   100
 
+#define SYS_TICK_PERIOD_MS   SYS_TICK_MS
 
+#define MS_2_TICKS(MS)   (MS/SYS_TICK_MS)
 
+#define MAX_SIZE_TASK_NAME   20
 
+#define MAX_NUMBER_OF_TASKS   4
 
+#define HEAP_SIZE   4
 
+#define ALIVE_PULSE_LENGTH   MS_2_TICKS(200)
 
+#define CONVERT_NEWLINE
 
+#define STD_STRING_BUFFER_SIZE   128
 
+#define DEBUG_MODE   1
 
+

Detailed Description

+

File where all settings take place.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+
+ + + + + diff --git a/software/doc/html/ossettings_8h.js b/software/doc/html/ossettings_8h.js new file mode 100644 index 0000000..9cda301 --- /dev/null +++ b/software/doc/html/ossettings_8h.js @@ -0,0 +1,15 @@ +var ossettings_8h = +[ + [ "ALIVE_PULSE_LENGTH", "ossettings_8h.html#a26d223e387ff89bbbeb5fe1c238f7aa7", null ], + [ "CONVERT_NEWLINE", "ossettings_8h.html#a0e73304dd7fd368f0702df55824d1668", null ], + [ "DEBUG_MODE", "ossettings_8h.html#ac80a3592e72fd96b772ee47a7d8e0d0a", null ], + [ "HEAP_SIZE", "ossettings_8h.html#a1b45302695680930829cac31d65e41e1", null ], + [ "MAX_LEVEL_INT_NESTING", "ossettings_8h.html#a6d0f30dbf0f5f658209bdfe01e400d40", null ], + [ "MAX_MESSAGE_SIZE", "ossettings_8h.html#acb84a306ee37479f97cf0b476560f027", null ], + [ "MAX_NUMBER_OF_TASKS", "ossettings_8h.html#ae429fe1a9a03040b1a337048275f8540", null ], + [ "MAX_SIZE_TASK_NAME", "ossettings_8h.html#a63dde392f4d29d54ce7fefc32793be6e", null ], + [ "MS_2_TICKS", "ossettings_8h.html#a16ba2eeb8a3b183ecff5652270cf1f4d", null ], + [ "STD_STRING_BUFFER_SIZE", "ossettings_8h.html#a0917779e7d7c2d5a3271b5653ad55df9", null ], + [ "SYS_TICK_MS", "ossettings_8h.html#aa494389e1ff9b4494ec3f6565b0fcde6", null ], + [ "SYS_TICK_PERIOD_MS", "ossettings_8h.html#a5ed26cf4f2ce5b422c9fd7a00d60ea2b", null ] +]; \ No newline at end of file diff --git a/software/doc/html/ossettings_8h__dep__incl.map b/software/doc/html/ossettings_8h__dep__incl.map new file mode 100644 index 0000000..6e5ede9 --- /dev/null +++ b/software/doc/html/ossettings_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/software/doc/html/ossettings_8h__dep__incl.md5 b/software/doc/html/ossettings_8h__dep__incl.md5 new file mode 100644 index 0000000..911b888 --- /dev/null +++ b/software/doc/html/ossettings_8h__dep__incl.md5 @@ -0,0 +1 @@ +ca505c2b458e1ff652c997276378136f \ No newline at end of file diff --git a/software/doc/html/ossettings_8h__dep__incl.png b/software/doc/html/ossettings_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..36ead915e0f7207c545b605f73de7cf0bf13ec11 GIT binary patch literal 16124 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 Ns*0Kl#d79B{|_IJYG42W literal 0 HcmV?d00001 diff --git a/software/doc/html/ossettings_8h_source.html b/software/doc/html/ossettings_8h_source.html new file mode 100644 index 0000000..30ab4eb --- /dev/null +++ b/software/doc/html/ossettings_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +EmbeddedEtcher: os/ossettings.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ossettings.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_SETTINGS_H
10 #define OS_SETTINGS_H
11 
12 /* Error */
13 #define MAX_MESSAGE_SIZE 255
14 
15 /* X86 */
16 //#define X86_TEST_ENVIRONMENT
17 /* Only needed for X86 simulation. */
18 #define MAX_LEVEL_INT_NESTING 3
19 
20 /* Timing */
21 // TODO: Adjust this:
22 #define SYS_TICK_MS 100
23 /* Don't adjust this ;) */
24 #if (SYS_TICK_MS <= 100)
25 #define SYS_TICK_PERIOD_MS SYS_TICK_MS
26 #else
27 #define SYS_TICK_PERIOD_MS 100
28 #endif
29 #define MS_2_TICKS(MS)\
30  (MS/SYS_TICK_MS)
31 #if (SYS_TICK_MS < 0)
32  #error "SYS_TICK_MS can not be smaller than 1."
33 #endif
34 #if ( (SYS_TICK_MS%1) != 0)
35  #error "SYS_TICK_MS has to be a natural number."
36 #endif
37 
38 /* Scheduler */
39 // TODO: Adjust this:
40 #define MAX_SIZE_TASK_NAME 20
41 #define MAX_NUMBER_OF_TASKS 4
42 #define HEAP_SIZE 4
43 /* Don't adjust this ;) */
44 #if (MAX_NUMBER_OF_TASKS > HEAP_SIZE)
45  #warning "HEAP_SIZE < MAX_NUMER_OF_TASKS: This might lead to problems."
46 #endif
47 
48 /* Alive LED */
49 #define ALIVE_PULSE_LENGTH MS_2_TICKS(200)
50 
51 /* printf */
52 /* Convert every \n to \n\r */
53 #define CONVERT_NEWLINE
54 /* Size of a standard string printed with printf. */
55 #define STD_STRING_BUFFER_SIZE 128
56 
57 /* Debugging ON == 1 or OFF == 0 */
58 #define DEBUG_MODE 1
59 
60 #endif /* OS_SETTINGS_H */
+
+ + + + diff --git a/software/doc/html/ostypes_8h.html b/software/doc/html/ostypes_8h.html new file mode 100644 index 0000000..6725c0f --- /dev/null +++ b/software/doc/html/ostypes_8h.html @@ -0,0 +1,264 @@ + + + + + + + +EmbeddedEtcher: os/ostypes.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ostypes.h File Reference
+
+
+ +

Different types the operating system uses are defined here. +More...

+
#include <stdint.h>
+#include "ossettings.h"
+
+Include dependency graph for ostypes.h:
+
+
+ + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Data Structures

struct  osTCB_t
 
struct  osQUEUE_t
 
struct  osSemaphoreHandle_t
 
+ + + +

+Typedefs

typedef osTCB_tosHeapNode_t
 
+ + + + + + + + + + + + + +

+Enumerations

enum  osSchedulerState_t { S_INIT, +S_EXECUTING_TASK, +S_EXECUTING_NO_TASK, +S_IDELING + }
 
enum  osTaskState_t { READY, +RUNNING, +SUSPENDED, +BLOCKED + }
 
enum  osError_t {
+  E_MAX_NUMBER_OF_TASKS, +E_HEAP_OVERLFOW, +E_MAX_LEVEL_INT_NESTING, +E_BUFFER_OVERFLOW, +
+  E_NULL_FORBIDDEN, +E_WRONG_USAGE_OF_PRINTF, +E_USART_RX_BUFFER_OVERLOW, +E_USART_TX_BUFFER_OVERLOW, +
+  E_PRINTF_WENT_WRONG +
+ }
 
enum  osWarning_t { W_SYS_TIMER_OVERFLOW + }
 
enum  osSemaphoreBinary_t { AVAILABLE, +TAKEN + }
 
enum  osSemaphoreType_t { BINARY + }
 
+

Detailed Description

+

Different types the operating system uses are defined here.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Typedef Documentation

+ +

◆ osHeapNode_t

+ +
+
+ + + + +
typedef osTCB_t* osHeapNode_t
+
+

Data type to hold a pointer to a TCB.

+ +
+
+

Enumeration Type Documentation

+ +

◆ osError_t

+ +
+
+ + + + +
enum osError_t
+
+

Enum to hold all possible error codes.

+ +
+
+ +

◆ osSchedulerState_t

+ +
+
+ + + + +
enum osSchedulerState_t
+
+

Enum for scheduler state.

+ +
+
+ +

◆ osTaskState_t

+ +
+
+ + + + +
enum osTaskState_t
+
+

Enum for task states.

+ +
+
+ +

◆ osWarning_t

+ +
+
+ + + + +
enum osWarning_t
+
+

Enum to hold all possible warning codes.

+ +
+
+
+
+ + + + diff --git a/software/doc/html/ostypes_8h.js b/software/doc/html/ostypes_8h.js new file mode 100644 index 0000000..63008b0 --- /dev/null +++ b/software/doc/html/ostypes_8h.js @@ -0,0 +1,40 @@ +var ostypes_8h = +[ + [ "osTCB_t", "structos_t_c_b__t.html", "structos_t_c_b__t" ], + [ "osQUEUE_t", "structos_q_u_e_u_e__t.html", "structos_q_u_e_u_e__t" ], + [ "osSemaphoreHandle_t", "structos_semaphore_handle__t.html", "structos_semaphore_handle__t" ], + [ "osHeapNode_t", "ostypes_8h.html#a7b59ec4a57312624d7d832ba4a8e04be", null ], + [ "osError_t", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094f", [ + [ "E_MAX_NUMBER_OF_TASKS", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa5077eda051eb91ad02bdecca89b94696", null ], + [ "E_HEAP_OVERLFOW", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094face45ae8032a0d0bd1df51e97013d296d", null ], + [ "E_MAX_LEVEL_INT_NESTING", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa46a4a81211207fa1fb7a78c2c9e392b3", null ], + [ "E_BUFFER_OVERFLOW", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae536d157197aef88abbe6c97c1d4b20d", null ], + [ "E_NULL_FORBIDDEN", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae4194956a8d68929ebfb61be58420d79", null ], + [ "E_WRONG_USAGE_OF_PRINTF", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa16a500ed7c06729f78c0c0b543fc0628", null ], + [ "E_USART_RX_BUFFER_OVERLOW", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa54988e5b26b00fb0ac6690ea9b38ddee", null ], + [ "E_USART_TX_BUFFER_OVERLOW", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae40b50252e0cd0a31c301b24386b86a9", null ], + [ "E_PRINTF_WENT_WRONG", "ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa32d8b2d1b7c1aad2c711b49d86362255", null ] + ] ], + [ "osSchedulerState_t", "ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8c", [ + [ "S_INIT", "ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caabb033d58518dadd28210bc74bef6051", null ], + [ "S_EXECUTING_TASK", "ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8ca35eb5bdb3613bd35655abb940b143777", null ], + [ "S_EXECUTING_NO_TASK", "ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caa5cd19863f5591aa8aa45b4e1d09f2ae", null ], + [ "S_IDELING", "ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8cade85fba74d53f436befd0d3e5fa72fa5", null ] + ] ], + [ "osSemaphoreBinary_t", "ostypes_8h.html#ad68cf10efc310f9689628bde190fe714", [ + [ "AVAILABLE", "ostypes_8h.html#ad68cf10efc310f9689628bde190fe714a1e229ccb8b53a57de4ebb11c2d15272e", null ], + [ "TAKEN", "ostypes_8h.html#ad68cf10efc310f9689628bde190fe714a372d5df31e888cad667bed8bbb87e500", null ] + ] ], + [ "osSemaphoreType_t", "ostypes_8h.html#ab218649e29adcb54aefa674dc6f17acf", [ + [ "BINARY", "ostypes_8h.html#ab218649e29adcb54aefa674dc6f17acfaecafbc1299672a8c1521cc0d5f1ae986", null ] + ] ], + [ "osTaskState_t", "ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55", [ + [ "READY", "ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a6564f2f3e15be06b670547bbcaaf0798", null ], + [ "RUNNING", "ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1061be6c3fb88d32829cba6f6b2be304", null ], + [ "SUSPENDED", "ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1c2114335a42993ac5cc5dbf65f83d41", null ], + [ "BLOCKED", "ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a376c1b6a3f75d283a2efacf737438d61", null ] + ] ], + [ "osWarning_t", "ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362", [ + [ "W_SYS_TIMER_OVERFLOW", "ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362a248cb11850829e0dee0a150d48fa36c7", null ] + ] ] +]; \ No newline at end of file diff --git a/software/doc/html/ostypes_8h__dep__incl.map b/software/doc/html/ostypes_8h__dep__incl.map new file mode 100644 index 0000000..8a40db0 --- /dev/null +++ b/software/doc/html/ostypes_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/software/doc/html/ostypes_8h__dep__incl.md5 b/software/doc/html/ostypes_8h__dep__incl.md5 new file mode 100644 index 0000000..2733e90 --- /dev/null +++ b/software/doc/html/ostypes_8h__dep__incl.md5 @@ -0,0 +1 @@ +6340ff997620b01a625ecd4a8c43fdf9 \ No newline at end of file diff --git a/software/doc/html/ostypes_8h__dep__incl.png b/software/doc/html/ostypes_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c3dd384397ea63e07ebe81e8ceabcf3ab820e6a7 GIT binary patch literal 7418 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 + + diff --git a/software/doc/html/ostypes_8h__incl.md5 b/software/doc/html/ostypes_8h__incl.md5 new file mode 100644 index 0000000..e4bfb86 --- /dev/null +++ b/software/doc/html/ostypes_8h__incl.md5 @@ -0,0 +1 @@ +9df4445d576ef7644e8293f6d4f6f820 \ No newline at end of file diff --git a/software/doc/html/ostypes_8h__incl.png b/software/doc/html/ostypes_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1c49fa24113a3bddc2b6cfae0ff2793b98e2ab56 GIT binary patch literal 4447 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 + + + + + + +EmbeddedEtcher: os/ostypes.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ostypes.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef H_OS_TYPES
10 #define H_OS_TYPES
11 
12 //--------------Includes-----------------
13 
14 #include<stdint.h>
15 #include"ossettings.h"
16 
17 //--------------Scheduler----------------
18 
22 typedef enum
23 {
24  S_INIT,
25  S_EXECUTING_TASK,
26  S_EXECUTING_NO_TASK,
27  S_IDELING
29 
33 typedef enum
34 {
35  READY, RUNNING, SUSPENDED, BLOCKED
37 
41 typedef struct
42 {
43  void (*fnc_ptr)(void*);
44  char name[MAX_SIZE_TASK_NAME];
45  void* arguments;
46  uint8_t priority;
47  osTaskState_t state;
48  uint32_t wake_up;
49 } osTCB_t;
50 
51 //--------------Errors & Warnings--------
52 
56 typedef enum
57 {
58  E_MAX_NUMBER_OF_TASKS,
59  E_HEAP_OVERLFOW,
60  E_MAX_LEVEL_INT_NESTING,
61  E_BUFFER_OVERFLOW,
62  E_NULL_FORBIDDEN,
63  E_WRONG_USAGE_OF_PRINTF,
64  E_USART_RX_BUFFER_OVERLOW,
65  E_USART_TX_BUFFER_OVERLOW,
66  E_PRINTF_WENT_WRONG
67 } osError_t;
68 
72 typedef enum
73 {
74  W_SYS_TIMER_OVERFLOW
75 } osWarning_t;
76 
77 //--------------Heaps--------------------
78 
83 
84 //--------------Queues-------------------
85 
89 typedef struct
90 {
91  uint8_t write_p;
92  uint8_t read_p;
93  size_t varsize;
94  uint16_t qsize;
95  /* Gives you the possibility to use the q with every data type. */
96  void* start;
97 } osQUEUE_t;
98 
99 //--------------Semaphores---------------
100 
101 typedef enum
102 {
103  AVAILABLE,
104  TAKEN
105 } osSemaphoreBinary_t;
106 
107 typedef enum
108 {
109  BINARY
110 } osSemaphoreType_t;
111 
112 
113 typedef struct
114 {
115  osSemaphoreType_t type;
116  uint8_t data;
118 
119 #endif
Definition: ostypes.h:89
+
osTaskState_t
Definition: ostypes.h:33
+
Definition: ostypes.h:41
+
Definition: ostypes.h:113
+
osWarning_t
Definition: ostypes.h:72
+
osError_t
Definition: ostypes.h:56
+
osTCB_t * osHeapNode_t
Definition: ostypes.h:82
+
File where all settings take place.
+
osSchedulerState_t
Definition: ostypes.h:22
+
+
+ + + + diff --git a/software/doc/html/printf_8c.html b/software/doc/html/printf_8c.html new file mode 100644 index 0000000..c139008 --- /dev/null +++ b/software/doc/html/printf_8c.html @@ -0,0 +1,149 @@ + + + + + + + +EmbeddedEtcher: os/printf.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
printf.c File Reference
+
+
+
#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include "stm32f10x.h"
+#include "helpers.h"
+#include "printf.h"
+#include "../platform/usart.h"
+#include "ossettings.h"
+#include "error.h"
+
+Include dependency graph for printf.c:
+
+
+ + + + + + + + +
+
+ + + +

+Functions

int osPrintf (const char *iformat,...)
 
+

Function Documentation

+ +

◆ osPrintf()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int osPrintf (const char * iformat,
 ... 
)
+
+

printf to be used by the OS user. Can be ported to another platform easily by just using another function to transmit one string with the USART.

+
Parameters
+ + +
iformatCurrently supported are d integers c single characters s C strings f Floats with 4 decimals %.xf Floats with x decimals
+
+
+
Return values
+ + +
Returnsthe number of characters printed (SUCCESS) or -1 (FAILURE).
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/printf_8c__incl.map b/software/doc/html/printf_8c__incl.map new file mode 100644 index 0000000..d6eada7 --- /dev/null +++ b/software/doc/html/printf_8c__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/software/doc/html/printf_8c__incl.md5 b/software/doc/html/printf_8c__incl.md5 new file mode 100644 index 0000000..38b1b74 --- /dev/null +++ b/software/doc/html/printf_8c__incl.md5 @@ -0,0 +1 @@ +bc53be29ab9bea3d234e4c1ad6505340 \ No newline at end of file diff --git a/software/doc/html/printf_8c__incl.png b/software/doc/html/printf_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..541cdbf55b2082672ab3b15322d7acfc56feb822 GIT binary patch literal 40188 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�orH=0(Qa$D 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%0DrJ(F@2VD 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 G$nQDn$4$zTa^RBSoCP2Z*!;=WoO=4%~ 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 puAjuc% + + + + + + +EmbeddedEtcher: os/printf.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
printf.h File Reference
+
+
+ +

Lightweight version of GNU printf. +More...

+
#include <stdio.h>
+#include <stdarg.h>
+#include "stm32f10x.h"
+
+Include dependency graph for printf.h:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

int osPrintf (const char *iformat,...)
 
+

Detailed Description

+

Lightweight version of GNU printf.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Function Documentation

+ +

◆ osPrintf()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int osPrintf (const char * iformat,
 ... 
)
+
+

printf to be used by the OS user. Can be ported to another platform easily by just using another function to transmit one string with the USART.

+
Parameters
+ + +
iformatCurrently supported are d integers c single characters s C strings f Floats with 4 decimals %.xf Floats with x decimals
+
+
+
Return values
+ + +
Returnsthe number of characters printed (SUCCESS) or -1 (FAILURE).
+
+
+ +
+
+
+
+ + + + diff --git a/software/doc/html/printf_8h.js b/software/doc/html/printf_8h.js new file mode 100644 index 0000000..cb8a687 --- /dev/null +++ b/software/doc/html/printf_8h.js @@ -0,0 +1,4 @@ +var printf_8h = +[ + [ "osPrintf", "printf_8h.html#ae2b707b3f94f0857c447e83c833b068a", null ] +]; \ No newline at end of file diff --git a/software/doc/html/printf_8h__dep__incl.map b/software/doc/html/printf_8h__dep__incl.map new file mode 100644 index 0000000..83bfafa --- /dev/null +++ b/software/doc/html/printf_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/software/doc/html/printf_8h__dep__incl.md5 b/software/doc/html/printf_8h__dep__incl.md5 new file mode 100644 index 0000000..3b4783e --- /dev/null +++ b/software/doc/html/printf_8h__dep__incl.md5 @@ -0,0 +1 @@ +487a092e996e85f80ec562c4c861078b \ No newline at end of file diff --git a/software/doc/html/printf_8h__dep__incl.png b/software/doc/html/printf_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..55b9b39f6b78559988b1c7df3a06e39b39c4f87c GIT binary patch literal 8293 zcmZ{K1yB@FwDuy6bayF@2-2;vq|&w0u%w7|cP=TYgpvY+Ah`%gcO%^?A&qqBe|a(U z&%F0$nPq49?mhROd(L;h`<;zcS5?5np~itgAb3iOP)!H~r4YP!#KHj2Uo%Yv!9NW1 zmkLnG-TmWh!}m`R2qQ!Z`a;_??ccl?OiS+)bKgNIUM?w$Il_jFLjB83RGn@V<9Jmy ziq7*nb?q(PirX|XSFzFBO4-EPknHSbO~T>{WCXbe=`ZppRpv%8C{FjsvXsBqx2B4g z*zxi4XbXc!=dYgD^rc>{EqFNZ_K4DUQlc`25@t8NcM+sR0k1|#Idww`Wh&^&xMZ-H z^y8w)z?;Qgldh0&e)=`eEam0p0(9X6%LksYCVxrq)187%bu3#l+ATaqfuOdf=9U%| zqgvNtS9Y<@k=&Oe-pB0q_4NXDI84P$B7Q%asaG~PBb`<{ZN+fYT{lNqR1nV<3$v~N z7n2GdQG_xP6FKH`GxgGU*CaH;@3d`FcXr;2h>LT%)t8m=)}Jl-IGcF5yUV+~S7~0c zerw3SAN=jx;~08L{Ve;K*jPSzXAJ9PUr$dE0)cp2Q(aAoL?Wl^JW5-gh-Lo%$J}6E z)9!dC9DDeiH&N&h$pvaMv^nLJlp^20eoP$1C*Q>I2-=YkBT8o^jw~~4!|?R$3JLO*+81%E-xyPt0`#;^*i0deqq2`I*&VMr_X~ zwv|+e#uqv|i940z9=px6voz}i>4oFC8#_BO?d?!BG&IwZZ%QJLix7zE!Ey&Aut4j( zP&M~py0{0g-30fm6ann3vpv1}Nak;`V5hFFNly&olamqPbMuwX*lMR0jQ6yn!H0*= zzPA_apPyOcWas28t*;|gQiZazvmZblPquVoXhq8>8qLkk_xA$sXtpOyyZTdwozC~o zrtOA@hp}*RL(|iZ8Yp>;>m!DS)VYo8DX&id$to#fS2_IQnPm&~?mIMW@FuHs|JRx# zXh%pz6}h}@zN&`L^bbPDm3`7~&PPm4yg#hK(9+wB)8Kv5nkMS9zY-@c!aWX8tE z?lk!vZv@rXOH7v+7Z=ZoaC37*Ain;63LM*G1tfu6e8kvHDj;eqGHPl>s||Uaot-TL zd`@?$z(DoauOoYVm5Yq($U%%bdU$mG&?y8l6aVpJaF#4$V)jpAPJ^|TRWAHdL;r=mN&BwO>*w;Lic+LMIic4M~N*hEuBroUDj}wU%oW(#g&=i=hTI=aT`?O zl9Q8zgKY=v;dR|mKR-WzZeqevs8`zA=y$chgkV@6E6~Ei#zu+j0tc;B?4TkDtP|1F z#t7O?H23siOG!y7ca2xt>4}Jln9fw#I!|6~6_%=NYkxcD!(tN1BpW8gM}z=;(M@N5 zEG|yd*w|R@d0<{hr)89uo^C6}HIhO5-QmA;eB>P^71a_rfJs-%P(l`PX8*#!e4)}U zF)Y~R#bQ$aYA%Px1l`s^G6P&X0S=PE8ur#M!eR=wX-Fb)mXG*2GBQG{pUL;NJ}s+0 z?S&e_#uU>2I-s~-0=wD}|M(c>9eB23XO-CkX(Etq@avt3|MmG@QuX2iZu2U2NEiQu zWV^>#COngrzWxf1HJyvjCn(x~y1BUcLEd>N(|(D5PlpKRE}8 z6t9@T;FsPf7@BJdd9$F0S5SfTob20(vSRM)-IX3nK?QM)PV3aUL-%hB!sy(^qgnZ3 z)^B_Q!RW)Ea}>1pO9Rqn%*?2aZzvBh3>|9>6>~KsI!5$o9cyS^|GkNtnu;50xU$2c zdnzeO5fp^!cz4VHJ4KL~M#z(s&PQ_u)zj-=U{;otko{r%Sb+maLn*(te@nI;CesJS zp{eoi^`quh=jJ7dIg*q(l9Ym{D7c}a@;VmFmc|C{VYaB1Rk-ItHmTd)-A5R=oK9l3 zan|yYS6P)%SAkX^DW`S}9~Anyb^L@&!gHS%vbelFls$#O+s2cXl}t#~VP@YTBVjgVJI92h*|f@t^X45X&-ukWq_64Ch=`Ja)xG zlMoS~y(_KeO%wMZ$dUJpJooI#Xd9;#9l`&u_7o8r$#m{({Id!h*EO#|Ua{^4FocU} zd!asb&N@kg<+-siPwV9La=5b4_UGB%%~_M_@6RWS%E}0B{hNQWeXHij8;!iYLt0|H z)FmaTj32c3^thA0R#)TR-Y&r^x7d4oe~>Pi+}-Mm__&J}6}@626fiEs#XaWpI!smW zP>JBV53AmJKf>Srv5b2UgP%9cmKvu!T^>8b^iu@vGG)xrgG1uXTY?oMpk##6Eaj6T zw5F}0K|iqQcz8}Lmy?vKDB%(BRfD4YSij|2an`FD%&MN>UafA-*ZrJheIb>JNkZax zy)Vo8<41dMxLSm27BINn5v}Qab0Qi;dx3s@ahEJ6(EFNrSQUFjyK`lZ$TMDG5NpMq8vU5t|-SLAUKY{0E%Zg3nXZ zIEM8;4$X122lPqYPAyyGdq4L5BtxS6*5oIbj%pTeoBTj#@VcMwV5E^K-bz>#PTXUPqn5Z3VloOMj2W-qRV(70IAOB{zzVu{uLwDfdHO!0ht>;QK<{wWX?_+5Kx@t}IDewwB)spbL1`*j7 ztGkDzHDAMzH{f=P)#Z6al9*~oRQ~V2Wa2alFPhmZ7Dj-BD_!D@?A_?9s-?g5ae>2H zcBYBgd3Z|4AI1-^o6S@(Vd34VuXfctGU56AFF|f=6FepGDN&Q2dUQmQkx=ij4^uxT z<{&2CeIy}4l>AisIY?AKpHrLPpZRd*<@>MJlq1MRRN<%}$+?~sw|{sviF8?)`@4$0 zw8TeQ=YEl6(o|AR|FY{now~k$Sfk&Q4@pT!O-;`fA8S_E{;0w(>)aUj%PJj|wX}2- zb`A=}~p`4fP?J(=0E)-T=M2Iqb7U_m}p zDv3HeE`BZBK^JO^j?N5~XJukues&*6Z3GA=UPszmH~vXQ2^}5tS80?ul9E!(%Sp^) zmtr9M!l2A3%`G=qCPG)DpR=#8-5)V63G)JaS|6m6TJN~OsPlHt6HpO`rG8g zmo_)izFsP{@>}o9$jhS)WD@8aWN9a9_d2dBi?z0q5HVzi(@ToAbXkk|`pP%|{;fW` zM0Ci>sr&6>WF*6EeIQ!I>rkku=r7#OC zDoQGKYkn?($f41~`SOfpw)XRb)Pn)>Q!KpntcjIh?KuiwQ@@^K4-ZeGK(zAeBWql` zhMw0z4FKg(d8y3?17V$N164YnxfiZ z*r(C$&(ZI@kmbq?v)}QFAsURl4{+lJK zC?}CMauW~8uT#=Y%#i5m%95RQ+)#f8D$;%nrUN7I5EVYYz~&=cK`@ixhkRnNH>97> z0~{Ra{yt?)oD_BG_0pd7fz?^I!oPi##ES{=z7k2!V!8TmJ2U7fKpNnAgBOpIOMfG|5S zw@$=A{ef?3sq>k4$qv-I#VKS5Cqtr)5k75oRHdC7qnNiwG+W@?L6L;1td>p*i}Ti&i{rePwh|m$@cfQNsmx4 zcfr`$t55_RGtVym@87sftAeC1Ycb)KmF~h%NQ&hOkSdoUZ!t3vTV=@M--}&PYjxzChqu>S5h0kR_kaSJuBQ)ytoo3+*yKyq zjH)T7C7s#@Gbojpmkh0VQn26E$Ng(BK9CQf7{Fra=M~se^CM?8kRz6A8Gj!ENX*VI zX>D(Z{IrUNK5w4o<>MQ2wc#93s`c*6=`%Vo$j*!8<>aKg2l%}Oqs2XG9B?H^WHAX6 z5mRyM)^6<1bMH(ak(k3Ba(vDvc|CS1&o5%%eliN3?TxcZ%`TL7*3I=fD|cFKCi6X; zf3kmJ=;?{u8H~PSYW@AHf9n3^H$UptWfD+Zgn&>52lH!YC)BG}O5#JdtNl5<8wUqR z7ZNU9=5xj(;iDU>k#lK!dyN#EjZVx*Bjd8y8@;*SF1?EeG4T4#1r&r7e3fE=T%QFt zX#m?zr#Y`=akVsEm{32OCLmCQYHHTLbyhU_LnOvOf};VpF!Q6R2#1gFR~bn5XU}i| zJr7LeVq0_w*e(GF8djoGki}X1Y*oqb3f#4csJze>-W#HVBK)_-JTd|W@xfWEp=Y;;UdJK$ zNj4mWyOb1ORaGg7OEjwi+6610m?{_TB7uLmH?%ub9|EhZ#d(E=Lo@#*+H$--Nd`((P;xTK z@$roD+0k0|0D9%-;ZAD`BeBl%-=5is2*vijCh24q{DNpyp-Sq zHYxD<*f54+FYqfPg^1`dnj7SXv5Mp0Dq?tR|JW8KJNqM0R0ILWngiAkD_gYxPl%T% zmF-YYSANOm^tan>XU>ZVg#Ue7O%CX{hFh*K+B`d zWu0ZNN$r#D79*$bmbyBljD-a;Gc(W1>Pu{?Ye!1*C(e02>(oQ^m`*zK1`NM{368(Q z_X6wuoJ!NuXUD!aK!?Z0RV!6VNyeqq+s)pbAsH#+drpmuiw1-%fwg{`hy47Pm431_ zv&WQA#&y3d4JXXa5kuvSwQoN3I_f<;|26NyN5|IE-Eqm4aOv>viFrX zp*E8%D^GO0@9FoJL5FX7ZNs8eROpT_S2!6NvIQ5~DsNa3b9KVlH8ldF-^jn3j~o7v zio5loka3IsEA<#(uG?5T?Z`mML#zIKOMy{3TF`7|sDeq?=|60CcET3G)TAzLBrcDU zW3D!0k+r6Usy^vPFs3j4bm(t3CR3I*DF_=OAS=5CR_!&Ut z^U1f(yjSr+g`-9EeZOFOJxoclaOp@s3s1d)H{ki zuzD+zfMOU+8vr=-n?5{v%=FZh&CVP(r3kOoADI==cRkW>Cem921etf#{CrehweCi( zxVV?L*S=ea(lj)w;hLUB3nGt1MMVjtJ4D=fVDrf{Vdc;GaBL?vbd|ex3@KljEmPC?FObtwbkga&n0bXX}+-?haRWUAJnU;sw!_| zV-r%^Lr2;-I;v%lLbR%3OzLrcexNHlu)oyCA*~;Cm~#Vrq?WreS@=Iy>;ICFM?I0f z-QCSVh!mj1C|DT>Tc(xpJy&ld`as=l$WOo^rG1H6*q8Jql$K@dw(c(gv)*59u(Y8EfX{&eQ$mpL%hv@IM@rGza}Sp%f90S_nV12}F~ zRTWOxwDE9d4m~G_uAH3QXGtF+pedTd;USBQrrO%t5QsS(&gZ!J+;w9J+Z(Fz!;bPRPTF1Y&TgF78{HAyT2c4(L=1QtJ~X{$NKp3SA{tGh?tn7%Cv-p z$HL*Yv#cyE<55Q332#+f)nr*s}@^ksk7g^3@5BrAL+1A z{{@d$B!0fZCpkASuN>&Q<=}k67NiSrS!l$)kMmn+1(R8i9t1Xk-oz_*(sHo%_b8@7 zgO1_55ar_Gu>v{SpDvyZ#9Cy2K08Jr87XPE^YYqSC%uGcGw@00&dv@@QBkqs>}%Au zr?>YrH8r)cDvgBf3q84a)Z%f6C13PbPL7W)K#h7km?4P^=^GqOw%5zqbvCMXzOiAJ zjxC-Y^U_*NnJu?`xIL2lFgh~Q3=D)@52TsR*Sf(W)ctnzlPNw7x?K$wAFk$*FUrr4*xcU!31sPK9~9faX>!~i2~a@gBC zDZk5mCr=+<9Ib!J$;sJy4BYap6V|ZWX`WyA&gkay1P;{j^3{q80df+O(Va6B*;!CZ zfQLYrD3Y)9GnDy*-#OK%%%4CzcfY&!o4zeItYMxl$x4GNDDaDm*Lm;Bl3ff}ndknP z6L6yY=^0n}bksC<@mW z5Zjs^)>%mN@nx&#xj91s$biWjoC=GJi(6P)wv3ID0?k`dN$Eu#z2xHV?)y|>hv2?d zna9L0K(Au%x^y!eB)gfVB|4Db!Jn|Ou!P^G_Nn*X?TsB>omCBz@~^$Y%I4_zvY$Uc zJ(-=Ih4+%qXZq;$2CsQL78D8{i$ zfBkZByl$-e%%HQLhdg56b0N4+)Czk3_1Gutx_eL!zAdy~&*9x~X<@M#E4+|jS(1|j z583-5_^jwd_Sq8k)-88MHSD#%esI^y63C76rkjH3XY79woszNaX~y)yZ=ksIjN=4>34?nbte&9BPqd@%q6U7a`@^Qm8-u}dEwfrI+bR4;A174yGXP1fID0PVPmau_!T#KPLT z&+jg30bw$)nw}X(9-xo@0Hwa60qMG_DdB%jdA2*>_C3=d$Hc@05?EMR$o=}_0_dPM zL!+az;O+oi`{tkB+V3y025&)nN$*gTfE%(;tSTQR6C9Lq-NF!v9MAxSEP{?$)7{Np zwa*!k|ILXW8an#8*ix->qL*zgwu!Qv`w)CNo_HszX~Ff&g?b z@$Nf3pd$jA@%PtGr}0`xvKaSk86{+{tpgl;BIB#N26<@wq|Jtu!Lh;m?S6W(nqCkty%F?n!>h>J2tD(_C z3FqeIj5^tw{3;ZENmoawgH<&R<{%9g_;$M7^7qKd$1h*LAYcEq;>%K> zDsp%A;uEOgF}A%c&d)amEu`NwGbvwEQp&0Lt;W2KM-7L{t#xAxc%GJKl-BkgI(NcO zLiDw?v?hL9t5w-e@(95@aVK(LQoL4WW@d%~eT*} z+BpE%nglLu^u73q#~_tPMMWi8Z8UH1wt6`X_5WMk2OC{i`C_Na{GkkVYbTll0<3Io zy2Ej)T0egLXmRln8{3SPm9@y>PvZ`dnw&FV3!X_C3iIgrl8?=_1Z$6Wn&%d$c-xe| znSm8)XH^d7h}jw-nNzYR@X0}~kEjJ5qT+$}cC?2SJY%kuVsQhHY}N8%A9N?d;&ZBYiVhYK$n6nCZ=_XiY}i%PM6ym-2v^np zD@?4c^5!NzL3Nq7F1>95CAX%gCKlgSam&TkHMFUzX(sP3ub#cs=WKWX__#d~1$E3l z=Ho}=^v~3W1_f7_S=SpFz{9UT^P-TjzRJJSq(%(S$ALY#i>nU)M`ug&|L?j}xsv9A kUkBjd{}$lCJMd?BrH2lW6fqANz$XwTIaO$hjA`)y1H?ctp8x;= literal 0 HcmV?d00001 diff --git a/software/doc/html/printf_8h__incl.map b/software/doc/html/printf_8h__incl.map new file mode 100644 index 0000000..89f8ed2 --- /dev/null +++ b/software/doc/html/printf_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/software/doc/html/printf_8h__incl.md5 b/software/doc/html/printf_8h__incl.md5 new file mode 100644 index 0000000..e5a1728 --- /dev/null +++ b/software/doc/html/printf_8h__incl.md5 @@ -0,0 +1 @@ +de77dc99ea260b4b373b33c58a391f07 \ No newline at end of file diff --git a/software/doc/html/printf_8h__incl.png b/software/doc/html/printf_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0efd395bd1b189007be77bb96402fc345fa78548 GIT binary patch literal 6767 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 + + + + + + +EmbeddedEtcher: os/printf.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
printf.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_PRINTF_H_
10 #define OS_PRINTF_H_
11 
12 //--------------Includes-----------------
13 #include <stdio.h>
14 #include <stdarg.h>
15 #include "stm32f10x.h"
16 
17 //--------------Funtions-----------------
18 
30 int osPrintf(const char* iformat, ...);
31 
32 #endif /* OS_PRINTF_H_ */
int osPrintf(const char *iformat,...)
Definition: printf.c:227
+
+
+ + + + diff --git a/software/doc/html/queues_8c.html b/software/doc/html/queues_8c.html new file mode 100644 index 0000000..20d520e --- /dev/null +++ b/software/doc/html/queues_8c.html @@ -0,0 +1,238 @@ + + + + + + + +EmbeddedEtcher: os/queues.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
queues.c File Reference
+
+
+
#include "stdlib.h"
+#include "stm32f10x.h"
+#include "queues.h"
+#include <string.h>
+
+Include dependency graph for queues.c:
+
+
+ + + + + +
+
+ + + + + + + +

+Functions

void osQInit (osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart)
 
uint8_t osEnqueue (osQUEUE_t *q, void *data)
 
uint8_t osDequeue (osQUEUE_t *q, void *data)
 
+

Function Documentation

+ +

◆ osDequeue()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osDequeue (osQUEUE_tq,
void * data 
)
+
+

Copy data from the q.

+
Parameters
+ + + +
qQ we are talking about.
dataPointer to a local variable where the data from the q shall end up.
+
+
+
Return values
+ + +
1(data successfully copied) or 0 (q is empty).
+
+
+ +
+
+ +

◆ osEnqueue()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osEnqueue (osQUEUE_tq,
void * data 
)
+
+

Copy data to the q.

+
Parameters
+ + + +
qQ we are talking about.
dataPointer to a local variable where data is stored.
+
+
+
Return values
+ + +
1(data successfully copied) or 0 (q is full).
+
+
+ +
+
+ +

◆ osQInit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void osQInit (osQUEUE_tq,
size_t ivarsize,
uint16_t iqsize,
void * istart 
)
+
+

Function to initialize a queue properly.

+
Parameters
+ + + + + +
qPointer to the memory where the q is stored.
ivarsizeSize of the variable type stored in the q in bytes.
iqsizeNumber of slots of the q.
istartPointer to the array where the actual data of the q is stored.
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/queues_8c__incl.map b/software/doc/html/queues_8c__incl.map new file mode 100644 index 0000000..6e388f8 --- /dev/null +++ b/software/doc/html/queues_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/software/doc/html/queues_8c__incl.md5 b/software/doc/html/queues_8c__incl.md5 new file mode 100644 index 0000000..95b4d93 --- /dev/null +++ b/software/doc/html/queues_8c__incl.md5 @@ -0,0 +1 @@ +3c98835096b81128aedde3fb61a60502 \ No newline at end of file diff --git a/software/doc/html/queues_8c__incl.png b/software/doc/html/queues_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..900121e9793a968554ba4579d91f68d752ef0701 GIT binary patch literal 16794 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%0A^=JzuJb7>2&(Cj%DJQ+ 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/queues_8h.html b/software/doc/html/queues_8h.html new file mode 100644 index 0000000..a83f12f --- /dev/null +++ b/software/doc/html/queues_8h.html @@ -0,0 +1,266 @@ + + + + + + + +EmbeddedEtcher: os/queues.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
queues.h File Reference
+
+
+ +

Implementation for queues. +More...

+
#include <stm32f10x.h>
+#include "ostypes.h"
+#include <stdlib.h>
+
+Include dependency graph for queues.h:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

void osQInit (osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart)
 
uint8_t osEnqueue (osQUEUE_t *q, void *data)
 
uint8_t osDequeue (osQUEUE_t *q, void *data)
 
+

Detailed Description

+

Implementation for queues.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Function Documentation

+ +

◆ osDequeue()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osDequeue (osQUEUE_tq,
void * data 
)
+
+

Copy data from the q.

+
Parameters
+ + + +
qQ we are talking about.
dataPointer to a local variable where the data from the q shall end up.
+
+
+
Return values
+ + +
1(data successfully copied) or 0 (q is empty).
+
+
+ +
+
+ +

◆ osEnqueue()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t osEnqueue (osQUEUE_tq,
void * data 
)
+
+

Copy data to the q.

+
Parameters
+ + + +
qQ we are talking about.
dataPointer to a local variable where data is stored.
+
+
+
Return values
+ + +
1(data successfully copied) or 0 (q is full).
+
+
+ +
+
+ +

◆ osQInit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void osQInit (osQUEUE_tq,
size_t ivarsize,
uint16_t iqsize,
void * istart 
)
+
+

Function to initialize a queue properly.

+
Parameters
+ + + + + +
qPointer to the memory where the q is stored.
ivarsizeSize of the variable type stored in the q in bytes.
iqsizeNumber of slots of the q.
istartPointer to the array where the actual data of the q is stored.
+
+
+ +
+
+
+
+ + + + diff --git a/software/doc/html/queues_8h.js b/software/doc/html/queues_8h.js new file mode 100644 index 0000000..ecfbe82 --- /dev/null +++ b/software/doc/html/queues_8h.js @@ -0,0 +1,6 @@ +var queues_8h = +[ + [ "osDequeue", "queues_8h.html#a0037677933e9d9d089327009032edf2c", null ], + [ "osEnqueue", "queues_8h.html#a78b4d06b91514e747007d1cc03029b44", null ], + [ "osQInit", "queues_8h.html#a164dd36f8a083fd39b238b6d05910320", null ] +]; \ No newline at end of file diff --git a/software/doc/html/queues_8h__dep__incl.map b/software/doc/html/queues_8h__dep__incl.map new file mode 100644 index 0000000..aa07aa6 --- /dev/null +++ b/software/doc/html/queues_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/queues_8h__dep__incl.md5 b/software/doc/html/queues_8h__dep__incl.md5 new file mode 100644 index 0000000..021d3f8 --- /dev/null +++ b/software/doc/html/queues_8h__dep__incl.md5 @@ -0,0 +1 @@ +0467115473e4c5313088fcee2e5c07b5 \ No newline at end of file diff --git a/software/doc/html/queues_8h__dep__incl.png b/software/doc/html/queues_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e8894701a6071e679547301597ca039ea598d2f7 GIT binary patch literal 4515 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/queues_8h__incl.map b/software/doc/html/queues_8h__incl.map new file mode 100644 index 0000000..5046abc --- /dev/null +++ b/software/doc/html/queues_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/queues_8h__incl.md5 b/software/doc/html/queues_8h__incl.md5 new file mode 100644 index 0000000..4511dc9 --- /dev/null +++ b/software/doc/html/queues_8h__incl.md5 @@ -0,0 +1 @@ +4d8434370bb0e27e4fa1d128b39a3c79 \ No newline at end of file diff --git a/software/doc/html/queues_8h__incl.png b/software/doc/html/queues_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e84e89c88e4e7b03738e24dc40b6580a8ca628bf GIT binary patch literal 10161 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 SIY12_L`qCvv|L!<|NjByM*>>_ literal 0 HcmV?d00001 diff --git a/software/doc/html/queues_8h_source.html b/software/doc/html/queues_8h_source.html new file mode 100644 index 0000000..3c361e7 --- /dev/null +++ b/software/doc/html/queues_8h_source.html @@ -0,0 +1,103 @@ + + + + + + + +EmbeddedEtcher: os/queues.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
queues.h
+
+
+Go to the documentation of this file.
1 
8 #ifndef OS_QUEUES_H_
9 #define OS_QUEUES_H_
10 
11 //--------------Include------------------
12 
13 #include<stm32f10x.h>
14 #include"ostypes.h"
15 #include<stdlib.h>
16 
17 //--------------Functions----------------
18 
26 void osQInit(osQUEUE_t* q, size_t ivarsize, uint16_t iqsize, void* istart);
27 
34 uint8_t osEnqueue(osQUEUE_t* q, void* data);
35 
42 uint8_t osDequeue(osQUEUE_t* q, void* data);
43 
44 #endif /* OS_QUEUES_H_ */
Definition: ostypes.h:89
+
uint8_t osDequeue(osQUEUE_t *q, void *data)
Definition: queues.c:57
+
void osQInit(osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart)
Definition: queues.c:34
+
uint8_t osEnqueue(osQUEUE_t *q, void *data)
Definition: queues.c:43
+
Different types the operating system uses are defined here.
+
+
+ + + + diff --git a/software/doc/html/resize.js b/software/doc/html/resize.js new file mode 100644 index 0000000..56e4a02 --- /dev/null +++ b/software/doc/html/resize.js @@ -0,0 +1,114 @@ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var 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; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} + + diff --git a/software/doc/html/scheduler_8c.html b/software/doc/html/scheduler_8c.html new file mode 100644 index 0000000..723f2f8 --- /dev/null +++ b/software/doc/html/scheduler_8c.html @@ -0,0 +1,361 @@ + + + + + + + +EmbeddedEtcher: os/scheduler.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scheduler.c File Reference
+
+
+
#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include "scheduler.h"
+#include "error.h"
+#include "heap.h"
+#include "printf.h"
+#include "ossettings.h"
+#include "../platform/system_timer.h"
+
+Include dependency graph for scheduler.c:
+
+
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +

+Functions

uint32_t osSchedulerGetSysT (void)
 
uint8_t osTaskCreate (void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle)
 
void osTaskDelete (osTCB_t *iotask)
 
void osTaskDelay (uint8_t idelay)
 
void osTaskDelayUntil (uint32_t iwakeup_time, uint8_t idelay)
 
void osRunScheduler (void)
 
void osPrintTask (uint8_t iindex)
 
void osPrintAllTasks (void)
 
+

Function Documentation

+ +

◆ osPrintAllTasks()

+ +
+
+ + + + + + + + +
void osPrintAllTasks (void )
+
+

Print all information about all tasks.

+ +
+
+ +

◆ osPrintTask()

+ +
+
+ + + + + + + + +
void osPrintTask (uint8_t iindex)
+
+

Print all information about one task.

+
Parameters
+ + +
iindexIndex in the TCB array.
+
+
+ +
+
+ +

◆ osRunScheduler()

+ +
+
+ + + + + + + + +
void osRunScheduler (void )
+
+

System core. Scheduler needs to be executed by a timer interrupt.

+ +
+
+ +

◆ osSchedulerGetSysT()

+ +
+
+ + + + + + + + +
uint32_t osSchedulerGetSysT (void )
+
+

Get the system time.

+
Return values
+ + +
Givesback the number of ticks since system has been initialized.
+
+
+ +
+
+ +

◆ osTaskCreate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osTaskCreate (void(*)(void *) ifnc_ptr,
char * itask_name,
void * iarguments,
uint8_t ipriority,
const osTCB_toTaskHandle 
)
+
+

Spawn a task.

+
Parameters
+ + + + + + +
ifnc_ptrPointer to the task function.
itask_nameInternal task name.
iargumentsEnables passing user-defined arguments to the task.
ipriorityA higher value means a higher priority of the task.
oTaskHandlePointer to TCB.
+
+
+
Return values
+ + +
1(task has been spawned) or 0 (FAILED)
+
+
+ +
+
+ +

◆ osTaskDelay()

+ +
+
+ + + + + + + + +
void osTaskDelay (uint8_t idelay)
+
+

Delay function. DO NOT USE FOR PERIODIC TASKS!

+
Parameters
+ + +
idelayDelay in system ticks.
+
+
+ +
+
+ +

◆ osTaskDelayUntil()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void osTaskDelayUntil (uint32_t iwakeup_time,
uint8_t idelay 
)
+
+

Delay until function. DO USE FOR PERIODIC TASKS!

+
Parameters
+ + + +
iwakeup_timeTime when the task execution started.
idelayNumber of system ticks until the task shall be executed again.
+
+
+ +
+
+ +

◆ osTaskDelete()

+ +
+
+ + + + + + + + +
void osTaskDelete (osTCB_tiotask)
+
+

Simply delete task by setting the function pointer to NULL.

+
Parameters
+ + +
iotaskPointer to TCB.
+
+
+ +
+
+
+ + + + diff --git a/software/doc/html/scheduler_8c__incl.map b/software/doc/html/scheduler_8c__incl.map new file mode 100644 index 0000000..e852524 --- /dev/null +++ b/software/doc/html/scheduler_8c__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/software/doc/html/scheduler_8c__incl.md5 b/software/doc/html/scheduler_8c__incl.md5 new file mode 100644 index 0000000..eaf48a0 --- /dev/null +++ b/software/doc/html/scheduler_8c__incl.md5 @@ -0,0 +1 @@ +86a715b93b05a3e260554f1659474616 \ No newline at end of file diff --git a/software/doc/html/scheduler_8c__incl.png b/software/doc/html/scheduler_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..4e73e4e76eab3e11f2cfd12c896d13de11be71f3 GIT binary patch literal 45392 zcmZU*2RxVY_dcvBBP)dL5VE)Iy+c+u*_%XW2-(>g*<1D|gk%%4v$OZ!`#F8T|KBry zkM5T~FMRIL{l3q6pL3n-I_D04sVI$sMudidfPf(@BcXzTfcOXj;SL_kUHHk+_fLcH z-+d!_X$geefB(`O^I{MXC=g^NMAclAw`RhZL-t2n)#YA06zBLS3x-&|9@Y7u)M#d^xv1bhzGR)dG#Uq&N=RXUj1k*&KZS-eP*A+?Pv-rFiG=Xs3)a1rxjP7S-`?J4W@i2seiz{b`8~p0r2l*% zD;tIPzgvWWkU$tIeCI!}UZ8iS{pSS&&A)49jj67wxi~v}VL>1--`mmA5lr^AynJwI z=xye|w{E$mZO2Wg#%g!k^NRYYCe$q?(JJNOw8GD4q2t8Ecl`R6l=qIN@iwe*hpb@qMDkTa&kSes#5(% zZ4C_qJUj`ZwmhY@o!Lf@rLL$zEb^11BN1#o92^w`1MkhT;twA_EG#Tsp6*IZNC_WMJ!IpJN@ky!DL@$|xCFR+slvYU;_!$+NRF zyXkNH3+x;zb?6y%h>7@gbUYdw*siai-}RB1z3=b)oR=5rUfoN&ySU=_;7wnVAucBr zGzrGd00ODVqq{zuy3<3tPPPydVt(>O=-xf$XV0G8yT|q@)@^b!8l2P2Xb;YUVC!>*ig1HWrc_j5 z#YAU8$7oaZ)xy?d&Bl6@obU$*#=|FTa{{P!(bUv!3{RgjG7HIzimJ)VzR=SX)6zl@ zyYI*jCovO(SRza(kgBOOl^UzAsy3pjH8J-4_r&b1Fzbib#arSpZ7n`4i;Fl9=f_7r zN5&HwNc&odqW`3rk)ZYjbYy$LuANr%#n_Z7s#cwV0Wunnj6-h#)-jtj{1L%YOf^w(Lxe zgCvSg+f)s_iznf*TT z_ARBA70&(p?1_muckfRB3L}}{*toblKa|}H5_52H>^fj(-U41Q1;iNp9nxf}= zvbFqNSKVOF94!fc@95Bddi4FNi|)xAb<1l-)rUS2UxO%YkQAFn)j zrWGWNGz<)g$mZnw#EHu;iAf&! z?+0|v9ns;nwYENE{KfL*Np?D`hMu0ThK9DJ>CKCJB2nsSAAjrck6vRDQfcG;B+4Ndy??GFLt%c?3hy?QkTQNvHjLqkJ;)GFua7zRxvHMOT%gEnYru<+=v zd-P09vXP2+5LkI3DQnLBKq$%0ZLF_vtUA(BR#r7Nl~+|A_)B4T#+{tJ_4DUdMFnMI z;sOy-bV0$Pn%W9S(`lGtPfud&&x%yx0SoKR;jy^4&fK~UV^l*0$vT(FE@i7d>4NAKyl?o;4i zF%JmFGG7|!y<|o2Y+E|NXeueTb#WRwJ*bF{dU#`}mh~_=J2SK6^XG%Jv&^k6B5v-_ zsi~jB!UFvLE8^moT%`kVcv5=$OV+nYUYnc8#NV={42{JttgIwR$RHqGp}G06}eIt8fe0>Fmh8#ymsE>}aKYw0%M&JJkH>rK= z$777pc3NsYe}B`bPhTHJ?AGTdfcrngBeg*x-0PJua>*}Xn#svAZBs;?*{3y zxd;x{=bn3iL(;tUIalu2+BG)1?0V|YPV8$3g)&SxUAM$B;hXnAS9y*djMUk&qF0YM z_2hSk<`^?UjOd-K&Foe>7ADm}P3A==vRtNo8yxzx)lRBFoy6SzX-51Lws^NWfS zOPK$8s0b=#7pWhM!3qj9%gcRm!0rT>j*VsV^K(V_CLwV zs*5?K>+9-@iabKzLQj|kcOWT|l~eiQqMP~b$_1S@H2y--zEku*)Ms7R=< zZ^IhGIMwUg%l-ZP)7Y4IAP+C^`hy3DN?)Vm;%3DIQ)y}Ax27%K_R^VXX{!xRSkYPZ z-%tE{v43D1zhBd0v`soUj%LE#uNQ+q#U?tWRMkFDGTOTG#eUI(Y=koO z4B@N=GG{`;jTZ^84n5QLEB)D_KY#9tV)OGS#>eAE&>FFdVN$4F-p8HxSYX~e~aCn_ds?~fIVZ)TPw7CB~$VAAO%7Y{D( zIqLT1y!b@@JD1re!LPYemTW@E$lgp$-Jt|2&uX1-Zvs{GC_O#(#!3xD`Ua7a1IYwr z>fAU`{e5d}EB}-mqhb`we~#s%rNMtfkP{>kotvBO?|+af+4BIOE}U2AjR1Jxr%xNH zsiK&eRms!3Z~1Zx85BH!qCo|NbU^#s2)saDop=aWLw{D~)tIjGpcrKfgs;_)ffAfWR_D* zM`v!nHN(Nde{(!3RcQNpuseoM4bsVpk^c8T;%=40c~lVg78kxZO{JIaZW8n0*w0Rv zxmT0LvK^f+k_pN+I#5NWkY4w)#7)&OWp4k;YH7*X+De32!efsHPWAEQ8GIBYh zima?EWCpE?T5#2i3q`^J-sit5DX&OKwjg1Wl6tbDgK58h{ROE&jBoLW+TJc?r=p^b zva+JCE)w+n_GYRJyD7Ds^?iXl=ual9IiAUV+NV>4=;c z=VU|u=HfUvPqBDqF=bOq_#*UD3~~&~zA`7mfX44)lvIws zelCxRm5PMR8yjzTW?W8po74C;Ue5_x^YGyE6$?LS{cw4FVm@`}d2CC%)+vwIMz4ZEc?!8}k|)yRor}P6}ZItV38*66QOQ z!OZ5^*&N3w47i8nO8wM)AhDgFQv&k3wape-QLEB5HnzQsAylD6dmy5y!Go2ChJ}-p zgQL>@=4!%vjIc<@T)=F8D_HIYqmV1>M?XZ*;|)GX$7R`C4o(SHPJzXFL$AL-4tDKc zP_`5lNGql4HX0(TBPPjEyN;JglM8+J58PGP$m6WAdJz_;cjpdjOUwG(w~nV`AOHPZOLh28YuVSY zA8KkwZk1S~?`kB_AO}*tKYNLfA9uW>a0d%3Ff43EEr2KN_f#maw-6s4U0;jn`1ts8 zgL*g}gs!6#Oj)JdlpZ#b@NgagN#|#u_!aDt1X902F$bGw%|c05HbYiIQ)ArWaAnGT zU?}!;o7ZJu$E zAc-zHp%rTthKk#e0v!~OU2GnXwWPqa{c7uqRe`1nuLTTBxI6jow>K7Vx>@H(a7lF=s4$e zyE656LV>KfmE04C4m>>0HxA{*kGr*Wtc!H>nV1!mT;%LoXjn?g>NsPQbjHWVc#QlX zzkGTJK@+(v%`EZZBGbX)X4HJ4mDK{|<%NaHeODuEYlBy>-WeJq4!OLxVYD})&MRih z&!ZLhw3T`-01#bSnb*)z3*aUs#WXMWR3p)@hj5Ln{f+MrmMR+?`7E}V zW4~XH{Sa{uX^p#60huS;UG>$gu!My4l$8GZcO4@|oIFsiE+b1;muccL)lcOZ&dn!S0W@@^*F*<&HYyQpZy*0$P0vjz=_$CxPP6gbih3^e}) zwV+4Mt;k5_6fsKe&b~lE=n}c%WCDzAV)n}1baZKH1YojZxhol&A_fL3Dd{s?TiJK- z_ES?^s;UaAszLzKl7v${S}vR7QB;yr6k2d@+}%4KQcPHqQSSav6-3A7mbj%LwW`sSCglwY03yF zY4c9<(r%pIvhN*UT4r8`$3?4nt*hAR>o>;6Ud*>L(6R}6Zpg_uKc&WN? z;pWk(s2Qs&A552C=I9x|sH%Rd@M1|c76~DpAyQZY3uupT-`E%mY2e_ftS>Kr5N4*T zo&r8t2zj!Y=_xHw?e{AkIXO2espHjwSWi#QY-7x4rRYMk>raH6g*Z7GC@C8nJbr_5 z+uOUkWxa>|5t|qo3MYpTwWOtQgK;s{6y36B`;zSKXWu8qIJ#$&S{1(18y~^DwR?2H z_LK(SeuijmyU_@0DA_HcebCCy|5$|+-PAX!Hrqnyo6kBd~7Ai!lFZiKPlpVy093k-`H~t zuv6lrcQ=l@wRM*P&Qrno>NboL@JH-gS$T>AQ~3s)YKr#Ca`ndlFl(v zQQ4SK2ci>l3h#wc5 zc%iPQ_G4CmyuCg0PL}Q4w^paS-oUbYEVR)l8aRu!wLh|(xp0x|QFc2=ZT8xkyT!(i zeEIT?-H^1f2RA({>vDGtscOD1*WLeJ^_cb^5yf^5dF<~?YH4vzPm`>y$o|og z>**m12qf3ns{{nR4G5@!qicj7-E3{KGbB5EAv=4hzCL`S(v5&gg_}c_okLYkEnD;s zgiTk0{h5ZLwYBMl1OdVTTN}=Gp6`}N8KnkFd#6gQJQ^2^5$~!Jsf8y2VgH$!@bz_m zVPs%ZKL7LQVNA&dO6y*#ps4*EzO=-as%nyOom9uiPF!&@_7eTD&GnXV4N30q+Lb?T zf=^CvmX>f#F39jhf#AxPHC5aQOC9U%@26p5v9e(dyi!A4{C(#G5rwx=cu&t*1UZ9{ z=f%aks-%ZUGoY2=VBfmB=<@Qbz5N-8?=ss>+1b&MxY;9(1}RNdRqyS2M9o45i;Cif z8_~5#BP|Wc&K<*^C?h-Da;_;)UENkXV$ycXOtg8oa$|$r@lZa3?ApdOM<{rv*>jVd z^*Qdt^6@qkqrwXGz}APlx;HleijY|rdbwUPtlzih${Ho#$p{G#_E_f{Tpouy=^2)v zeg6D5yT?slzO<^U3_?~|ScmVu5cH&ZQOXwhJYZQ?R>qc>M(_!E=J(rp9nYZDK0Y!z zg5x+RPxJF51T%WDBqsay^QSoiymeLO<)QKM!w~pkO;l8M^ZxN&9GOsV0g>wF#!JAg z1|dqb<^={`mC1+P+#Mj-0X7sCOn&~{_NsX3odcWE62kktK2E206{Wk@dV1?05L|#7 zttZ<#ougV{&BXX83_LuYYKcU{fB*jWLw?3% zPm}TTca1GRNDu6ck8YT8Q2YB!fDK5E>i*eEW9S#C5nxOW@>$ufIP4S8v^U0~jVj!L+z|9uGIB z+vWHiC%pv>-*lfl$v!QXN=iuvUggP7RL;)h=oriW$qvaztWedQoZJb;e>PWF8LT)y zb#dtsL6)Q6oZ8jh-2_qx@D;zTCJ-ui^qriT-4Z?nKsZ=Vd{JjMHWk{}d+CBE@9eB# zPP?{__~G`$Rq#nFG3kE&TFSz)fNUx*KE64AUaG%r zZuZL2!2!6a3Y#yJLpgs{aQ(1@vz5~50pS}PAIee>WlGY+s%mPqKkbr9GV`CGHx3R( z@145jb=Uu#J6;>?uHqBR>(*lZ)i)2P>;o{y1{^*lUC-PK|;hxYEK zcKy6B)Bemvij^)3;mShfMuNlCv=0{6-Tf5!4p#wXJ-z86m3QES;^K9K*AIbU862!D zFFywc6j-A!dTsf*uX}qRs>L2>7Zvd`GH#w9ehLrwLPXR;MxLp*#;~Zs?x7wTsk%Lx zs+^wYv$vmuOM6^H*I8lORA0~TeKpS)D`hw1e)(6_>ebk@#E(Z?6Xy22tKK(t4iNDZ zIiIIOxM*;hyFMQGU}I}(^eCR5exd2e1T0t!xDy~UaONm06--RNPbBt2G{1+D5h%P9 zaY(}V_7}$iHn+7cdR+ zbvT6R{j7a`f^2MVP-(QcD*!DT9`0^EPBi54>ES(AbYZuH^P_bcEv=}{@o|odHz#>Y zkNW#-p+IA8w_o`9krFH7$Iwt{m3H~k+5VpSfKan*xwMi}A`OPh?>~PYVMk(lH(n@c#B;A>M#)T8JS|I4pC2upBOH#>Qyz4`b{CV72(PI4b92p&iCK^Sd@UQu z%3r@WfLfUS{;a5Q6B{?F`h8tMN(v?w?T#{ceV&rY2OafCM@M%!(7MuS(rap{xVsDo zWB;cYfSZN6gq1cgE+xfwUhF9`v4XYr@xIW4EcMx9XKB|TBESx=d=C z1bTXUzja{Cl(oS|0Z;<~yJ=a?UHHOMkX|M4JcpBYQ z_cqkM92{aIvD1o+;R0*?{n>{N=1ssz3Hc&7N1jk~l$X1~;qM<-X@1CTP-1CYT<%(q z<{#S+x)Wo$ud;O4Yzp%Sb4D22Y-@fnZ7m|$0($Um?`*uk9&Fk}#B+9}PJDu`{$&g3d<0W;2 zWfQwlMfA@JgWCboR zkn!Z>jSdesfLy~O*YEBcy#7D9oK5A9PZ&nEMHDzQBpPjBUq<&Q@4u%CnH(!oQSm|$ zE5nNvzJBm5jSx2`K3Vr?Z?C0s);bVieeC8??g9LCy{vKF(e*jrB(V8Y_96J5wihQg zPI9a|DSq6e$6x$f{`URCOG&}l-hQW9hA!dcv=c>T=<7SJQCiQ|C~q-Zuz9$GI@_=+ zT6n)yFBI!R@5R|ZVKEW4pP}n&zcd7Y2M7IM?&dk!pVRnHE53c}?pIvxii#b!i`@Z| zt*y-)_Zc3VsS%~UZSnlt*8#M`J1Pk77YO(u-qHbLrK4jK5FmbRU}Ik@-bcXdBN7tc z-{{GoUsg8w>jjV;{za_x=bb)BB|_e*S_X5$==MevyM7SrsiegWnwd45XOBkmNAUvs z*rb$|v#O6{%gPL3L6)Ot78WZleglPtp6mObpf^<3o)TdHb>BC_szlR^mU&}ilNvEl zcyZA`T6p}u(e`m&HdgV`5qd`_0hCR^?1D2#CMFlYS|5DhCz|MI_^qITiFVa{Y#kS8 zVR$@#Y&eFEHF9(~#&BZO>c@-Y#T6y!c6jpS3uFU`i0+gl~Drwp35#3D}e zKbk1VGq-bdJJ;0{dALo41f#OErOJX@KtqEM;t>sP{K9@4>~#Qum6gM0ude?D|C~qh z_s0O`3-X+)`S{4VOGSAGV8o+iQw$7K_zq0dk3G~6vtHk>Py^;&c6-Q#UMR@XKg3(o zY8d;`*QcgnE5vn)iHRxbd2!wm*5-3(I+5#sgR@q}0nh0R-`0lS$oC zNlBbEihdjQy!D6~o1Bb~*N9IuNCR#nR^6`!egDuA@FbPrZwz!3Et3T%*48VLb5(C) zW=>8jR@R(?0x*DOYrs8-b!yJYKn6-j2+h_XgIyQat z2IcW=o3Cnxw7eYs{t4!jC>bxW5-8PvVXg|-+S3{|;K!$UCf1B{?zv`uzsdl9qmvL!TK3dqI@w8aw;XuE>A*K|YR*M8E4(Teo)9%WP8gH$=jMjBl?EtO8lM5pJo{Y>$e_)!$JQ1yto+PYjot<;%a1;F z;(ETmxR(-lz``#}j0)oKH-wFD@6ju+6 z^U2JNpN|ju&Wy*v|6LXcAm&a``SnFfpoN)1}_24vqJ4o#}{*ppuHPUEltg_B%XW! z!*0zF-wj@AH!C{{#C$PzP*b7&W?<8>D+f0gx|ZcW#myFuLNYTGl^~=W;hE9}wEkj;Ox= zKSpk8=yQJl-Ln?-m)wYldB1-BOS)-7>V!l+&_ndAN6u3$>r-F=%FPWbXu0ZYc>InX zQIab!`qZER$jH!o_;3Pl+5P(!&{d+Scrjd(N5N4EG?t~t_}}wGMeFg3v3Nc$1%-yX z^Y$MHT~{V4(|)f0_KM?te^JTE$k*dk z8@jPxWToBt{9o1miF_Lh+JUA{p{f>j#4&(PAkRU~f+IP3G9=^`VE{DGK~MuK5kU0F zNSpbORwN5+sbwX=HV`^H+8;6Nem$GA@1<3qUFnUlM?_BL;&dYAH>iwu>zi-7)*}V+<=6pqz$@i1wcgDbdbG6clIrR@CMJrmuFmS}Ntu~zkWQey>i>>4FgY3i=~Dq4 z?a^c6UP~)EUu{+4T+1|J$OaIZFV4Ova)p}TdL?!1F_q>6k#lY6>Dk#GQ#dpI!fc2| z^3{h<+_^>u$pD`6@(fT>A(!MGn|hOkzgg}{;&+K=V*Gr2)*Ab&uxs!ogc{S{_sVp5 z1OyF*g@e;|zT>5|W~M2b2057^6CQ8w#>E?$Y339{WMwJ+8yPwCfMBR7l27n+oENC# zLNqi=1_mp8^N&_mdVYlmo&2}s1!{V2oy*8$gyiHS^Q95)gO5!h7sIAv#Al)SQC!Gi zYr_aKg{e^{YaKg2l-bZTqq!G@l>XX%RS6&$^cjwgId9F`R{|r^UA&D=Zm_m~{z6V} zZB`JARWZ5df3aHl`P96YP@`U+2&ij~{<$ zh%=Co9CH79FEXj2#&n`O?IM+U4jg zscM{fE)VFVz`OzI+8nf_Apy zw151x8v0?Hn~53Br%+KPA<&b1VG$Ff1wc2ekL?sAw~eOAp*13ihf-4J#zrTbn;dq$ zS^fP!Ir5&2Ors@wj>dmP^Lzyw+JB0jx1k2EPq`^P#t&7Jp+kGnOVmVid6cNkj|v!2 zCKj~+0^l$NQt4=Df{ylKAHr^oIDH^2*x1v(ejiDc4o^;1b$V`2PeCCW`aomYm=5!f zjtT@ld{K~wAcsO;h_ObBpxv1v#v{;hT@GRB?f;UfAKBvpRUk;ITifrFQ!s!S`$9VY zQBq=QYXTQZ^mmJ2&E@G7g-cwV*WuCoi(~81`0)b+FRh-1=7$E~yAF=t%Tb11@95XO z*xp|xtrA@L`!_OkVcz>@!p<~DaVqXvXavjA9?Ex@0plU^d!OP#0ogZt;pOEA3P=%1g2q@NAiuJo zpE$ru8PksucD^B~=Q=u6@3%uN^|D8Tqnk=Qn)ytT;H zx{;uc-kFv?IreM>Q~{qy(-_nPG~bU0i$+6O9=fqL}9^ z2(^{@KojFL%ZkcjUiT5Zv*lkPQ6UE+aC3Lfc=|*{Jg`1_sMIxH%EV&e<+e{r{N?TD z-}J*_rH;igPJ62j{j$GTAj=W3@C|&Df7ONJM4dv0B?fI%F4bJ zhO>ZhrY4V89`D$Rn`58 zEKKz`R96)TK;;j7*hs08q-+6lLrAC;x_LE9#|}?wBXvATL;;6!9>&IrbFB`9so^BmWs50CWH-OZA?&sCkBx4~DSKcn7d zKwKega&%Lwbsoje&IQ^4^uM3Q#&(vnYCu-)2s|>o?fH&z{EsQR93+HzXm;ky_8WBO~_$pI#n{uzaC5DGmgr%fTD(os4BIpG;xlvM^1W;jgk%IJ80biCiV2fn3zUuY%i0pH1N>) zoGfzk^0;uRvUy3uBNH_7KuP+n_OrFM&MfSv{v8cy+1N<)`x2xnF#w{lk;*G8EiGgO zJnJ2`Z|So>h)^`T#WWjtX6e^kEho=@Ap`-$kKf!%i-QHHX**)so zY;6TmTO6P9vK}W$j|g}I0(b9q54(a?FDP*L@}f-U02++F_9-|2 zwmkCm`~z%Vq$$bSc^wo}%=)_4Ce%ELd<58Fy$CW-5(nBSnTx%Qs#2`p&yh66dC20F zQ2}#)Vi~}zXIs0s3=E9UMPwOV;xTHbm)WIs?=}arXlMVraNL)IendwHHtj}j7CO4^ zi{p>Ke=~9>h9$SPvMz02Cc?Bxi8TiYA!Oi`6d?2zfoTCSlqx9ieYQuXA{U>Q24#t# zjTA*>NC=TeF&YZ$1a#UUuAad5dFNsrAUs2bjUoXO$Jv{;!__ZLOr#7NB}aREuWdg4 zX!g3jJ`D&6m_IGMIHtYpvjiIVfN+fSuD<(HS5N+te=94@BpgC7(ciy%!wxSwj0N1H zotI-^7yhy_;?Q&JREROp_qv-0pD zs~RPJ+@2zDa*vhva;z-RIN7cgahNzYEesQs{5Sy_Sg-rU@#c*l_?j*oKv-SIkw zCO#lSJ0qr)94IoHy?-9AK6cr)yWc&W013(e0b3xZKTdG=L*anQ$&125{{GZ=z&&`J z?wEm~`Z!JifESa_O@~onM{*gM0ibb-u3PKb51Qga>&Rq*j6oX+qR3d2Lzn4LyL);P zx|5p<0LKKKOlW9wyugeC^R%Aj8jca z3<7&zR3m|kk-|@)r!vGj_SA{c_a*eIxeBmxavrv!BGVx8Je!$8?80z%u8|B?1B75M z!t+lP3wo%5zOwd}{9)AM@}q;3?Uru!Vbc=epF=|uDJ(vnQXF(#9gkD!>oeci2zs5J zr!@Th`R}aNFq~isMto<7^TV5KCXTInV4%zfRvzKvevZb8i%#UQPyGv7_9^wpl|Ed+ zqeMc^LQmV%{19Kb8a-jWc!*1yayex`;PejErWt`_G4Hvice@j~OMlZF+z!POKk~Ff zi$;locWHipk{J1W6O;b)L+e~+Wc*_s+)zYB;ZHIouxe_!2;a7Lb5PgJ{&hv~I~6z% z4*U5~1o1$KG@eQ>;K-fv&`{d?sv%sUCxuYRSK z7$_a>yDiU`?;Tlo=AYs|M9H3MActPE#nn~0m_4(ETKiC!o%bJGA9l#6V#|omuRpH~ zuIT6}fxn`v9kjqh%7DHOXu-WSS-XLLt(UI;(UCmNQy}s-7 z&Fi{xZ%?_wWp!YCcl9F$3iNV+WUVxt|M>CE^mJHQSk6GI=s@aq?Nb5*4H1za$-JuC zI%E-@FyPaWmuDVg=&hj?fdqpa64|diF(aOF=M)!vF0`Rq)hsQUkP{JIF5IEo{!{*( zoqct0{x<=OSBid&IE%iMlpVAi(o$#7G+yHQiDF?^7_)9^GV(_S`BI<+7^0hXwakY! zc`?w^9uAziI&b|kG&SYQ&~tU;1&R@7=q1d5S6Sd#^vCqCvZeoSd9mKkebs(fgw{W$4{SylZUA_*obO z{jc-3`{%eps`t!*RBDdyzl1fh8Ln#;%>g@$0haZotEJl-5Hh4zVTcJGD1A{;JPxOcF2y*fQ(Y^DqQEX%={aexsYhm0cX5Ayv0m=L+R47`uLe|`N8e2=Ys-NBI1ujT0Eq(bHf@A2dH zwYBHLq=f|q(AGaSHT49=%HF=&VNps!0fPaFdwP%Jv7h?vM<_vvd2U9>#!eUR^_9p| znR2{PSO&mBJMJ49`5T6mEOCBSjs5vU_v~4IzHHJv`P@Y<$$o@lZGM-XX}m+$fc?|c z)5F88x5muO&H}0D=TKX0Y%J*1YA5p(G`_D}Ibv#jPCEAt#nJIFpNEpJOVEWm?faF0 zq@>)Ybon<(E*BT>X43nmFk1Ng_ix!P8OkU=KEBAQnVA_@beMjv6nou@ffdcBndv1e zD;txNB21?ADSTF`Rq;BB2NzlsuC8?R#<||Z$STa-N&ONqr?lUF1XEYS&Ex+@Yc<6@ zJow4U$+57MBqi^m`G*7tD{E+^!R41W--NW^D0%*cI)jOciHwZQ(sCV4CXQ`lWrZgC z8;0worUNLxHZ)ANwu(zgNT{d`O-&Jpwo`7?K7HEV)df>*nJ>S>B&4O4RY*{fE==jt z(aGrR>%V*%`CdJV1k(P)hYw-Y54P{Y!9fJMZ~%n`?6;|!>jq|3Z*O51mfd(3gO2I9 z60cnaZlF~h=0L^7#F}p|7%&6W^ycFbqIO!Z3W{eY&` z+1Z-({^tm+_t9I6DupP7g~y|)oFmBd0GzS$<0HIoT3fR~4!or=oBrlNMNbc`5{;11 z&B1c-(j`m<>VcKR!Wii3nf20|N8Z7RTU>Wc^WRQ;>Uo1mE~o^>hJ&P(I5`DSjO2Sc0T`Ha8VC-)awKF6-w&MEpmfyu#_ zh+4aG6UtYsd1;@VoU+47Jz5qD8DUhst*s5(iK1>jmU|vOefks^HwN4pg!Yf`g?V^f zL`7R*f3~-`!wfAbD_dJ6r3wOMya}j=W;afk&Icexo$l5)xxXW| z-PH2FP}{%poPhf6vFZuTKcYZVOvt(DQKlPd54EnWC@?lUNFaTH!1~Xnd_=HuE=mKX zWo1$8GIDdd-)r$GD)vKD*=V5#i)I-GbSuBD1aFt1R2H3|voZ+@30cZjQ&;a!3Jwhw z$8KwBVOux}`eD|W7z>UY74?LQ%GlaE3EHtcIs&A!#*4IY$;f7BXHydr)^>J;X5*-g zU|>B>*jotAUo7J#tiQUtdJe-ZGa*iYy8ig&>U?d^+hBQFa?$kZYeFH9lN{g&e)<=2 zZD9M0LHpYaCzfm$w@mL$Y3ffByC_<>=)Y0*$e#xzDLF(vP5keemw+Qp$hyDa7b7w9 zhpDNlmF5xUQoAqQD_>l2#MmUJhVj_X{+YZP(AXX?HHabxN0K4(`7!@SQBe`bv6Uc% zw8V4&PcJ~jyG{IMv-Y;O-xf~lqsaSkO$z16?N$JTpaeYmQe&4SJ#<#!aeWoEuP-qaurFeKdB*bs9+wFpHecVdx6{}%ed?uFh!iEYZ(5XpPt_8cw@Ac2XbD~*RNf_ehEM}g^}d$ zQ!I4!*Q|uj&d%uf9XCdvq4-{0Tto^-*+;@a^0)f>ovGT=`uh5^vc0xoTo{N>cv(et zx3Z>2sv`5`#2G9GHwwjoS%qT7!N|Ct@wgu;Ad zvy-%gO%>+1(aDJf?l#iqa16StPCQGC{9*{x-7wzXYQMOD*5BVhPw<5T1=MrD>gr>N z2@o8;VA%WM+HvJqo$LNW{ku&FNO*X75KwJwZB0#06%-U!2hxNu-hdAP%H?5auK?+& zx?0fvi0(Ke9OYABAT2BF9*ldxeft(N7Ah+0{PMCt192S4S9eLw$WD(-V|>kJA#^ZRzQM*N5|> z_yYq1!pQ{bpFClM5DB2fxLlJm%Jur+8Jb$O3W6$s}(H(C=jle+(2R*-%0WmZ*2xO|7rz6BfRO z=Lr}zz307Pc$;aS)zowYqvg1se~mLowMcK;+4M;Goqx^Dq|~u}61x4wAAEhSNf577 zP|#UXQLyfU$H34$({P(1t2*-D>-hK>e0~}R>ZfY$eSCbjwzeP*d3kw3EQ1F_Kz|uL z=>nqHziXeEnmRo`Zgkzh>kA!2Kq|t$`{uko30vjr>b;;K^aYoG_<*3SJh->F2ajF& z^G7qA|GeRRc+EMo83O8kWMp_h2A0P!8M@bUHxhky8|&+a=H_$t@2the5!rX)nGJ|; ze_?+?M1lbMN=;4R-3A`lw(5_+SHTCB!Jmbn2v-8$FsQN70$29(YRb)B0pGAZ8&RV3 zo~-A31G6e>cE4T&0e!f-3mEhBgwM;+iz~}EdCw#HdlQ7d6ySD{dH^sy@J&BCIbjo4 zmr7c*zHer8!?_Z;w-zYXhkAaw3w`L+v)|o@fy9JFGqO$M@GUqM1Dehs-uHvS$7CLR zeH9fPM=C?@8_wrJI+ZH{H7C36?O{j!J<#S2pFJ>8nkQ=wH~5{43s6RS&0dYo%|M>Q z{f4CX=uvD?5Q>Q(JSYO7)Dkz6D1aP4!vq;>%4ZMJTLDVLV-v)=gCZhe2;&tzk>YHx znY;(eJuI&O-p!TO)dUx2pKeOhFsgo|_;_|CLHf)8x?eDg;C`@#TDJ^O`w0IctgvQN_WEXIXsE(*wLibM zl@Qj3i-W`GyhT`v_;~S(!{`c^Oli7&(GZ>}01Z1ZO)@uUSaEa3(LJrJB_C?GY4d(O zp_0zp+PeDz=2yT%yu4Ah(tPfL163q~ofYsjiG1FG-(zEB4liAcjJOy3MoEN%oxTl5 zl@VF>Kl0D7S?uf2`7N}WzA_gt_@o>B~;1p$G5l<-@+1r`F3soRB1(tST?z_HcZf(zcPia2-H1pjDJ><4AR*F7 zBOu+~NOyPN<$3QnzI(?#!+*|D@p<;M_u6aCHRoLQ4qOlp7AK{!M&OY3M}_ieIM(z^ z$K?)k(Eq_$VKykdl${{o}{IZ!$%iPg2K=`UVnMj@Z(!UivPT z>?Z|$&e_CuW)M?XFaQ2M_;MD~WVVR54l{qPEL~zl!TeXO@9NI*fJ<1-1DIWhS+7t3 zNY;3xi;>6v133|qp#g`@*{MSg55gq~$B>3Yg085l`W`8#DftD{;{)VRK9OH}S>q81he!0;Qe@8s8ILX8>rj%wDS*iK;)bxB|KX!YKvN_qBf|(Iz2U4%xp$kiMesa$ za>1bElmWgUW)l&MZZeluTz>w)>uP#x3U*Nx3J}&or4GuIVlenHzNTPG{-4_=+|5)# zKmc+HAc+csuMG@@|>Vzl>$#2A%LP>(;mt?|k5%c&YOFh^c$9urw%E}dcFG7%(R!4gMxuYWw)?{)Y zPit4p>7@nZ>Ry4V{dF_{ci%eJg!Hq6lh#(E0fEfN>l;m$RyRJ!*7zm2&#>1I7+RV+ zXfS)y%pXFL%EJ?XISY|bO>OvbIiLSQcE31n+g0k5=~OLYRKgydPx$#ye*4>mYKcAMi0%-q~uS9d0sNdx>=-r{rBIxI;;-J-2M0S-ps)(}o59KH!_xU#V!;B}5q z3vb25v;o#k5d3WI?6MDn9b3s@z$6B&1vvwwg!%@5t$iT-{ia3F%f z-QB&_;CH(V8yd&pl>?XUCvVUk{vSmZGwM4^K{xw@We7lzp=yCz^Zk2dV-`rzpak{t zxxV+q-P7~n;6Q+%{{=4R@*=|2Alv;TB;N5Xt*Lwq;D;f8(9(*J7v0+1Yh%K7{7U7o zBuB03N)PeYR@+f_RGRk_fGWKKy$4LtZniEVYDwN4yJpDZV@k>u*oQ!JX$DSQGrNtr zU-L|9Kn_TPS{WA|<$h||A* zO@ru`b0_5Mz}`YDl%qf{?CS1@I~6=^B&`d*FODHQA`N&cSxRyPP^zFH(w^JA@Qt;Z z{jJ*3pBQmZRX}aKmg|jRT^JrJ-B_3A5cm-CugSU80UGXyAQAotMkJU*Ej~Cf5INaK z`nAo*Z4BMWXa=_HF~CPBH^Rp~f|MOQo_}3UH?4|Q(4#WdlxV8ex4s8|P}Y*hh&@&g zmL{8sl`j3n{a*S0FoVv=hqT2UbpBeYvs4FX=Vxu~T_u>QCsefwsVm7GqbUL_d?!V7n9>r4G$X@gxx(Pd@ha!_$OXV+#Md|QMKHtcD>UYp+iTXMoK^s5NS_{iyS#N z301}J-tRbEbsZgy_(yL$zBgjm&_yOBXsWA^1d-98zThMH;?0!4{g}Bxx77T8MoUA_ zd$gwRF3zi~G*U7vdxP*hJif}GlSq(|UKg;kQnF_&=Uma^_Y(ltqM7v8AD{J9LE~rE zRCWA4!sW~Y=GMwm-KaSAu?cBFRYYI>%E&Mj74+qutz>pzpfP13%)Elwo(b)Y9JS>gu6e zcbf3i;o&ekiNowG0g&kQaPSCUU%GQ!t^|xDXDOf?toGfJlhf+%4w%+spk@VM4r5VK zK~KYwfq`Qu4}yUGK>3|Z!AiKESmd^l;hc7KNUQgMx&D}tKs-WkFRh_KG)0K}f()C< z!PFQ(jJQaMb(bW_;k;$8sXs8VF5&xf@<*cRrKJj|S;v-E2Gf!J25c5}H6@9NnWdGJ z%)ILFLnCyOhWG?R);6M@9qWJDD)iE`R~9zNK9&*Ke@eb|KHdGX(gW5vdca~y5I8|T zr!Qk*Sc$K>1WPA$>+V%Dd3lYnuq$Fr`jNnf-ajAPn}Y1RyPmA=b)24(g9qE@tM>Wf zJUe>&Yia38m(5=)S}&KoWXa3_mY*;9VhpsNDwr7N9|NJRU>TEO4O-OhiMD#6FtlYW?728KkdEhMT(_6&Pij&JAoaqlA za^Xpunp6x*s?)yY<(*%9sM0J_emWm9VL6c5%I;vhv2tNpp91XbP!DR@P^2?GL|yhghTYuqsA;oTS9n z$0Lg8FbY)A|68)W+|xA2%X>Sv?m_{eEVn88s9>|6vHKy!nb<=k*X`X;Iar??A7Crl z&d46^e*ms#L7tUs4<6#JtS#u?FE5-WCH)PW0x9|K4|dn8WIbwa-O((wZ0Si+0!``Z zRW%hkN&p50#gamrPkH%35jXPPM=_?7txVF=q7di!YrlN?A}xL=@Q0dwTL+_>N;KT_ z^^`2=p_ET6?B^c%-Y_`v<5}tG-+o7}&@1Kc{ssyUZoBc)_6PLKX&JOGD)GT$?_!6C zz-_C-nyucRMoVGG+|7;ApUu7n7bV;Cd|UW+b=;@ONHY9VfOfAz|CXq4x5_43#njS6X)lD2kU?uViqpu6QlGvEhS zG6c`fG+`^sXP3ccG=;!VuO9tbpT=91oR;=Fdt|_2es@k(^u-vKND(gnA~dzZafZWn z`*gZ`=W`-OL`3gaZ7nbF6_C^v^y*@$`0=;q4A_kBl5Y74Jf!<7_4;+e;4bDU7%mF1 z{CuR)%eTEPBmgdy?3G%tY7ThJZJ&)a8+X-t<9K-eP2yMMqcO0*lMxg9&BWx-O#O{t z8BMaoYTs9QBE8D_M=ZjbgBY+A*POC)8Cxz~D=STmT91ux!1&B#ZQyZhgz&e1V$DgU z+XMtylHtwPWBP(7AJ{KkqokU#$U^C8XEanJJ@ekIDgv5C#6a(nlh-*usaINr*3-S! ziKarH>?5Xk$v_%5x9#J2c{->0O{fU6Bq<%w2Z47FV3IdEu026dIbE&g(Z+KF&xeL`I(BA>*b}dg+_r*n#06Z$swxwibpS?mlm6$E3d?{X;)nAa}V`> zkr4rFsh?v^%!42KS*gz`W@k&jY|nHDf9yoVEL{_2dGYKSB|~;1d_n`qmuvVoTTu~| zm3L4k%}nEnNzczu1+x@CUp&Fe#-gN51tc2@TLO9-fnw(h-6gs!p3BQ|@OJffvq&Z; zPgIy49DTXC%8uht2U7%gD(vbP=Gd$@Mzm_HqGYpN>P0GTCi5>&gvo`kH+Sd$Y@*`h zFCHAH+SwLVnsnNTiq;ExKH1vLI_b!~eit4t?d`3itNUlQ-#q@|Lh^?XcNwy+&d)6Y z$634XfVkEbo%YO^ndF(*Y9!6rqDW(KQj(VO;zbaSFtZN#9V?x4DLJ`?-~JJ>mKVvy zmUcf~mt|jQj*+?C=d6DBoLW;`K3T|f3ZC=oG8OEfY!@UJjyA$}nRk+L$;p#bQo_mz z{7G-$_P@ED$va1J;%{oC)$h+3Oc<4}e6#SQ>Ri67TR$i`m{VLlqA3V066wNP6cu;f z_8*j7bV9(R;I_7Mak2RMo`;D?j8a65Vt-R4t+50LD?lOt+se+%roS?~j!v4nom*0#{LqI_7*?AeH_hho@gry8T zC-H%Sg3G3dZC@qR%I)e)4E*;}h2m;!<6oq|z#TGrce%e*g~!0SHRFx5F85edoqByn zXcVqHy05o1={^Jn@w)G~9Ul6`A>9#)3~JrV$XG9A&9*JKoqY5pznS~K>{qsDK9_vn z9>M~5CkZGi359)BPX@IW+1PG?#!mD3X5ls%_HKN4jJC zWpoU;^)Fis_uN@;#y9r---xbN)Cm5}-mJBRwS1K@@ESuwL?-DJBT9un2Seq0I_C7LlfBC%-WeES^8^l@zz94E+scP zZlpKYJe7BEzCF6@BhhGK^nH1H9u0Nn!l&23C}oSCnAqtEb_ysi25(F}`Bbl&9rl&= z_3O=XN8dAt*K~AP*y1l=hCI?4=9+4^Se~iHIH&iEb!wOQyZiL1 zxaS2)5VrW}@YUK6LRkHgrz=xa>~wTD)vg@phD;h6d3mptm37od+!qZ!hu zp4EscMEoeG4hR6fqIH@XNM2%M37U=()HT-AmQnE<_lV;C%V=tic4kn-XbooT>I8GI zx&yIVOiY|%A@!q1TAD+oPqr&1#H`yo^H@0#j}AlgbAC^5%pYou9i_2z$ZStv*#B*K zL6a{3;WWMLr{0k&gQnzmPo@ZGt zclERAd1!0PkJX&Tl{k(yXbzQ@N$&4|I`1?Uv9(Q1()s1@pIUo`$!+)eN&fuOLoBjD zlhK%=q06;FHYTJXtyJ4-Z2djOqsu7UABR8!IxgSL0Au{`9I)9}Hm0@4w-_ zefx-rrTpUbiT56@j^52!r6W*dZ>Osvdi4EY->kJowMNrF?oJV)RI(adoUCv_AVyR3 zJT6a5K6ZwI8u)l;r}_Z-n#gxO>srNAO#F_^)@LfhV{j-<^HyPCWc<5h=e-ek&>8_f zET1dRJDEc7-g!Z8bd`aw`g)oQl9GiMECGA{dl#;7*M||)v^V*ikVN57eYh*TuR=yi zS>oW(aUZYV&<0gU@lm&~u98fgIoJqeOB8Kyo8Gw-i-s1AkGC>MGchjbd*Kq1m-kXp zF&WHK+}tedCprF*EEbmS(?3|u%JiD8u)F2gKyWqzXG=!iO zuJ=6`^h8+#!ez6Y$^H(@4+RAsV8q0y6^Mx?S?{&R=XuNv_tP!h;DLUnmoiKZ6CWtQ z^bG2*pyyFQ?d(Q zzt`SYRVC--n8Nzk7*5hXXa)nR^YbHSylA#+m+2Iq9pe+M9Oxc>NUeu%@cw}(yH#9V zcsM%x-6ByXC9ZO_@Tz|&P%g<9)CIn~)Rzj4PX;D4H&(2&lu#v*a%v=PO1oXSuALq=-QM%Z>^4y#j5wD377Z=Z8Uyr~pWqkaS zS;wWPg&yo`9K^WhVZ--ct9W_Yx*Y$UA@mW8$;hxYF)8TO@ZNvmxX`k}&COrP`!8Ec zoKQQcF6irv)T`B=ZCznoc|#}K)E^R}3w=hN`e$9^eEH?&qls%%Zwm_0k^MqLY4fqx zK0$e6H|+r(rQDg+ptsbktr3jY!l-Cyl`So#ukObM64`9s^YHlElOodq5yRZl5>6#2 z$6#q`a`1aE_&o@3X1y(RG&Q#^EsN9Bv7@5MHrB5blBir=>&Jt*y?A-e2TE?7j;-G% zCNBSa)1+7!DCcweeYyPL8T=zj+|z~SBYOuW?>08x%i5Z9oaG3?0zkVgqGx)+c`ZE#9ytn86O6LMF6m&jyUz+R;q4V?g z-ZVQ5>~aMerlCQ=oZP3z#@>Znk|)m$_}|2Q){acQ_K$vXUD#y&;@h{fS4+aRUT1&$ z_tuL|R4%U!98(+W_p)_2XNz#}&7B;SRC)5y@tu)9F(oFksPS6k@;v_Kyist}`Y-iH zcUAXee3I|rQuoZP=Tt69_T1i6M1%nGT#bO^<}u$HQ#4w4G9M|^?Z}okDWj=h1}nYw z%@dJ5XS@G|>PwKcI5^C=S+H>p1K&@~5m&QTPg&VzXNqs9C5-3p-PXn?l?zXm7s~~V7!Dc1gYj%BP;<`wI~bDz>Im^e5|wh=H{PPqqX@_81Uv zb8?p9#(_$4aA*kq<3mG3B-od8a~mA&A40>f&NZl|B_+=mTIWa9xB02%(m4hAb(NG! zLDBM|PA;jjQTpCJ9}*I!F&m@kc$Ru|s|a$0%}$lUAbm8X-i`*}z^e3o$UKgjr!cl-YR z#+jJ|JUpS+P^GcLxvH`wciS2HKP1*pE5eWiMSZ&OSCNIfa(O-doEq2Ir068=)2F(E z*PiZshFfnDVx&mioQK<&uRV>8#h|6=I``s!O(zx;uJb{bql83MRMhNXwiYY8WN;MS zH)GMwlyO*t|7HZ3{P~rOJ_MKiPd(pyhd)ZXbvp(_key-*R2ZAxM;7Y(8` z6n?Bl$SB!Dug?`YNf(Z{I0dRnY8j>ck(QRQzz+2CQgG~ZRPv=w_vg-!gmMyX?nnr@ zT{b!G*3bp2*P&<)~#T(68%?if#KJm5f@TRX;7v|MdDUDtr1v~-k9z$ z-h<*6q5u%(E%oiKA-{N~8;@+(F!=2TK44k-aYPx{e9}hkx8hHs?z?M%hU97JX_uNi z=>K(ipUi-GE_yo_?q2v(K=)o)sK38VHNoBG(cX42;ao~#U zSE77I-Z`S3qO5UZwyO9V$p;W@w-K5@!WgkDF^YX5~u1Nr&6j8m4S)eW2O>$p!Crv|0fY>NJ^-#>zSJcoyt$jPzL69;IE*6oV1BWkj!l*(h`Oz5!9_{Q zSu+7|#a9LKTtp-`Ki@4ag2-OVdUHjqr1aNQj{8dF6lUt`pNh6joIrleqStZzc0Aqr z;s_S#dAYgE#l&h_#XPgyI&t<+D#9aXX&yf=Hg4Atket-=m*?&};CbG5%$= z#9=uZ5&vO&9@>){Up;d(*Wb;?nCO6leM$F2N4$MFkoEOzvE^{6kmt6Bni6mP2*K8E zB?*Z-=o-*v=i$hvLT$tkHgp-O0KuUtqAY;|8ehCSG zkGEW*YQVDb`_5&>?5IX94M9CKvphea(tB7T%`}B~@3Jrb4|8Oi zxLEtcY2@WOgngOeN+tFlmZdMXnM?u11M2O*(V0}hfdGol_$q8*C6P@`{2eT6t~Rx* zGc$j3n4TiveYWuFheWcUG(*92TU!zy4HpaZ=K|L;sn<;-+(T_r3zzPmPVlT&V1^Hd zQAGHq>@+kdGqsqS$S$`bn8Uk+Jq0nzS)JQ&0>4L)Le~qx0919y_|BD8ykuDa6EJE`DxMWVmm>?PU638QImD;aLvt@ zxBHw&jQ00{gQ3HI&r_W)mRC}#Y)uS;g0a8<7MPRtyiLcm17VJR8!k+!5I_83fD&`i z%E9h4HW3KZTh1@tV`vqg0Jcd0W5*lESxlNwmi>Z~k11euvptiIac zrB2~RURx7}s?FZaB!1ac+lq;z>~s*ICnk-5kI&CLM!CdLA9xo?Ueqk&$p$JZlUY+MqcmLw24lz0=wNsT+fWfx$y$kpxaVU`~|)kX^L*WwOS| zz=97j(9H?1!=7DH+)^XS%y*5r+ZOW$1??@J9mHNY4tAmm@!f%-wWl3i6pW9jltZ8fNy&jJEB z)NdjpOi+@|RQk`Lk-{2hK2UHxD8j~$PflqfC1u4B1MJP~N;_Qp)^ocZPc5x)1_ttl zX-$B1%+JvnDkp8t)P`0%ww_d)>G=jh1p51hh%)tjMFE4K)NV@3`+{5ek@-U^Dk7VN zs_G=)Q^hVJuB&PhH8pz9AsTv98AlGAk^JXy%YXW${qNDKoetA-^T=dmHs}>7{X)2e zz*GhaflIh7sjZ~0o|7^i0JRT`p6ObIq48$}eBu_fD(({{0;4+s-&S5iJ%C z13O`ViLa94G^vuP2ms&bz~GCFn^+;aO(~CRtbc?uJulDU*jjKTu<&E~aWFI;-uZ8p z6ibJNUV3>^I=TgauKY=;4Iv~|7Lu=-rD*d z0~~mVKlhpv_!6f=6%+4*NU@<|$!>O8QY;f5hphQefP7jx7M8Qy1^4Wf;9pQ>KO+0` z_3Jw)g6{eG&rs5KC35%-(&N2X)mN@Ty!!&E=abjDVQPC4+rP)hf%MGJwuh0Sy*=fg z7IVnOYG3&lVI3r;-#nzMA|tbRc@_`YpuqoB7e8L{J*EDeSX873$-3JPQF2}Xo5xQc zeOFa!%FpqPU`>>LYkc__`ch>_XCZj7%x{{H-*YF1{$&$|0N2wafr2gg;_Sga44KXl zs7L|ad#Xn{zeX}X7Oc#OhIsy8NnyB18m|1P8yz;;CaCS;i%{_W zdqYo(z%FhQG|teGQ`cu$(fHN^>9%{`T1#MV~t5j zn5S!QOKs1>wV|bh5<$ijN|wy9Yj=tEn|%W^a)>G_DhKzxL$@i_sVy6k50RAUB&FLs zKG2i~xSrY{LIMh>n2ALg8SU)J{sGf1#G?y^A3qKg5_)CgvDdryj)}>vzUQ>-)?JdK z%>h1_`m7tyw#3{QOom7)F*CETP%aP<80Xup3H)0$&(WoxlrX4_q3fBN8U;O9O|pPN zVc6lSYD$@zVr*;y6q*;V5AJsf&_NGKODAn~K)J@HJ4&V)3wOHSi0w_rz{ro1a7yn` zgZtm%82$N}C;DPDO|YGlZBOQun>W1Y%AFXfu8$qYFw3NE6GlD~ZbyawHh*Mg|(P&biP-=4)yl+iSoOR{o zz>eJZO)7%%8V>>fKeCdNm%j%@3s{yW!;$_{4>Yypy#H@pj?uL|=l9(G>xJOb(moySRdW|f0~FMEq@RO*k@;R z+;39`P(K!3iolC7!-|c@!$B>4<5ZK8 zon5Z~TMVDm#UJW?i$PV_ttu-cJVPr1o15!^-RsxVG8=V1S5F_cRU3*+iQgf4r|J1y zQU428Qc|N#eCpr`<=hfieC+$tDOup6en?1YI6F9ACEx4?c$NjAcaPa%s=HCkkm~Wvs^52AQ}x7uy$?p<@IM zCX_^*e~|tC@;Gt^xYmkER7>lA@m4MSF3=)i-vc+wn{!xb;Rv|>*{(MA%cs*_5U3ciEA);1a^^TmX_CN2P|7#ED-+x zYvMCA=0Y0rVkJVHUWJM2v3X0HIj4lG>Ul@(;BK+PR!)9qvOs*HzDQq%-BQ{!0#RJC zuWShFzBSq71Jjw>PKKypz52MsB$Q;{J+Ik16bNir7eus{eD}LPe*+%5rSYQYLd)cc zIzK{D{7#pJLBf|TdNR^=T$0M7y1Mo$!G`H8)B2v6R=<>+{17Mp+xBTU#%4VJvE0`@ zvh>E59U~>DfJBFgHCDR@Kmw|q^8?WH&bSm63=ruQcfqT!3Gh;-Mu}N%I zRUnHd?$AVsK5K%_Qccol?a!aJi^{N=508eyQI(Y3`UY}5At4~HwN77#$jB7=BL5Ky zyE#?JXT^#4@-Js|&fWj6#O|v>_W-xy*P9RQ>_TaTvMGG zlr=J5g9d7q?~nXGwPJY!)F|_+B`M~8c&CM+sPN)9LaWuoigbUTG)AH!gC4kfB z{|ry93Hsd#HNt4E&!YUMp*8WNHDJQ%bE+7cHM3n*nw$``_$?<#-^M$YAUH!=XL{Q1 zlN2&45-?(*JTIYZo%Fnpq1e2=JM*?!NUEt*#=+t9+4giQ0TTdL_l*qaiSP~-CU0KgmfFqUMl=)|6)7pL zjU|ToQ&Lob?d_?XJGqshm#cpIPV)*Fpg(vPK>ZeaVmO3U>vejX`a`WKq9@pvV&NO(O(&4_%+vxuE zX@W8!_yc+}Z_(w>U>h=$U-wltbP6c;cN1iT+uuVvQR8fd%pWGD#H?$-H9;o+hlZZs zNO5qCg_vKJm)+rO0}#(#cYadCM3UW&k4;pANOtT};txTePULN|1CQ;(Z_rE)NUHaZ8D3ul`W$=Zg{R>JGqJH0vS1s=yGZ-NURoRq+hOistp6 z;O3v8KopwyCqkJ)E_nL=Y5V*3_aph0fRNscqo1c%Xmw|K_^>f$cw=kRv~<>PdFf$y z+U$YB#ZSFXsEhi{Q@pnN%|n4yRrPD??Vxl5b#%`B{22aQ0Ljr%3qwA1{B6W7{r+9w za6TS;R?~@pp);PH8!tVaLZ_v*b@W**HaO@U?*JodXl(-sGl<4elCOYAmKY%zAQO_2 zwp98kEG|)(-JiguzMAp1V3y72a#tpP1Q+#-wvbwOqIuQf5Y=y|7baC%rSUxfF2|ytAhghGrtk2t42;XPU0f75zFdK z_5spv{j^ymCj2@&IT-}u*$wRw_ zZuT0+#_K-@yPdcev*O^qeDUJZBXe=pA$t7qztHk!Czf@(WI%mapev_UrKCr^Nh|$?v&r!Cskf5LkkJ{kIvtMj8v=z8DEtLQ0Uu!Dl@Wyn|{LqiW z*D}J-&%?+_CWvDm^KMB_&hW&!;3kES{jZ?#x`3KX+#VfVYO#wa4&WROiBWZZ-LGHt z^vfzi)O=A=`rm3!&$Yj0Z71?X{J?aIq51c1i8p7UobMqH zj*=Ehm^RwWm$Q(}j^_7EifGiELNUHIX;vYJfWXsp{o2w} zl_F44cLRfdCb64{O(wnjBI5K(_|c44^rfNksfS5avfNN-2?%!CQ?5-ftvZjRFtz-I=LlpZ z&0qHO(F~N|)$WNR!G)?*k<6e#*|)aIXob_15Lc4Nz{-%U8}@ntR^o%bE@(noXg7HEf|3-5%!7C*-~72 zK%Oa2UjE<>0lqYc`k8_a;Lm8-* z&WlpA5g9N_K}gWFX!&iZEY1=-4eEzbSu=`(SdC=8fPq)3)X}|u*wjvE1?`{$dYw^0dZiU{XzX9i6GK%S7D90hm@x9Lf-Taxd zs3b`wn*$ZOZy|9#GBO_e5=Rt#E}MnByUtH~(aI+HlKcAJcAr&auWsboj2qVZ-iTr+ zaW=gJ!|TekvD+ww59vKjOenCioHdIKCxY*NLLiX*8nlZ^Fqgl{{2a?cg(-gAmNA$J z{joyI4`wh`WB0=KHj`VW!#7)xb6sG+C3Iz6dc|PRzOK8}R#Ix5A|Gb^M;*8>g=%kxVi&_t^JMUniLRYR@G~iP(?>joWsgCyEy{LP1 z5)Jxq(!MBuuFSku9n_kCc$fh#?`Pgs1OYwwK_eIO^QWE0mdCZ}sXaB5O#aW6pZ|Ul zncF-R!ChQ*dZ}~4L#2oF0*o>ck=Mst(Pd@MJn`N)&yW!YBEQwS%FY`bzdLVajCpfd z7sBXY(73u37_+B0Hs%6jPJd|T@zIgoy?Yj^sgAz{B`}CUi0JIRYrMWW&N29BNl8x5 z=0rx$dealpaJVK76a!=S4F`ww?-X%d=pkk2eKZR;lZF`RmNPYHnfakEOCGdQyp}_c zKys4GvPF0-X*w@f6oU5$MEVF$?s9yBVFLI?G)hD`a(SvGnO+KG#bsAF$B{)ussiqK zY@y?di-?H4Ff6Qi2tWeNcLOrc(UQ#gROQ0OlTy&(S5;{%D}Umco!z3M#N>J$RyEWI15jIpxxMytXQL@JwoY44)}@Z`9hJXT1vdAt=SWfltBLUBn+ z_*Q9G!1_vHXICX5VMM%@ei+q`6c#49x#;*Yq%1d=8x^g;s$TY0jhbvIJ<|osG5KC| zvlysIxv#Pzfm${tMZa)`ZY503Rxcob!qo~^3fek4;^5`LjY~v?il#NRK(zhqjYCrq zP9l#TCqpatU+u4vnt4F+L_%5)4DgPL61mu=k8aP;%>^P9F40OULTpw-LhQYsjEuaD zOu-fbd*xYcL{*wFOtaW%ZvIueAa0if-+yJL^(tH5K?x#NRH|-s`YTxPBBOgDHzkjO zshXN6>MRa&=9g%30_tI5-R9i&8>uv+@0s;3` zNthX~tfDga>F#KoEETUn>COI{%F5C1U9yz-cuvl0?Cd^&SMC&MwP3<&_K z+4Hw@Qc}vs4@L=w$sa5(skOC-&~2&BRvy&VrB-=x>6Rl;!C!}v zX<{sPQxN&lAN%GY?boC0X2YGCJ3u7k69^g}zWO~8N8n;9wGydQZQ^f#->Yj!#|24UZNiCcI9L<-KVu#xQxM}W`LC1P6m(4NqqdL%TCj$*x z1Zv8!lAT9hk5Q0O7_>D*#edXO!rzy#&pKF81s2@5?3=&2Ekd9{hP3I(Zt~}r@9N!= zFmp{b6fCS)>%dnAybt1$nMtgN2lfa29bLaEPMEJ?V{J_$MEd)5aI)eIdWMz15~#Bc zcl!*A41=!AB%Bp~&bXamW*W>TcPH`SkPJAM9L&7KaY$R6@@3~90ri-iRGawtXPEl_ z_;LBVJQfLib7v=pg(s^Y5K-r7(9s>V>yc@OhL@lturt&B3wmW%Iv#JY)|!{RE{>C) zQ&W?Y@H;cg>*?8a;F~O}VzPQ9zrO7jhID(i>5f1xMIuOgVdy-Z3pTbQK1b**6Cxo% zSE&9&`yq(_9zV9QveE&sk=L)im%9={TXcL-nI>oyu9@?qQnaEQ%N7;{YyW)g3b}_96;#; z5_=P4V@wKur>%)H#M`CL`1rUuut|Yy3PR1q_;_Vq9pyV}h!`WUjoHrzzR4Uccf$a9 zTRZ|{;)LYnWYDv~&~|uTf;(nKddc-`#pD@)c>xKhtPIr@UD$2+IcRa7KL>~Gf7(;T zTZ_T0TZqNQMFc{Y{s0;cMlGS>5tGPmGXaYA$=OL7F)zT}zyknu{@@qF&E-76`4^rG z{t1v*qu@}AZBzV4;^C~{xJN`Z_)RAJS7m_j%{7_#7HF~aG=9c?`b5fYJ$Ae`nUs_y zqA=Lr-Q5i`Q)f>jqpx7-1F}BNl2s6Tf#wV3f6UCxPn0-GZBDkQo1j36jI@9A&j?{n z^?H_?vl|-GKhpj5_Xl%SSRjpG-N1?LXp`y-`jdM_I=mLTh2Z(A?uAHv4m3yfcSl=tqmMbvj&4CY$*x*2HOB#M1G;EnGhEj z2Zja_5x|!G1=7WYgt1g1Pfel+^z<;<-er9#2XxDmV15W<@GuF_z4<@sqCr5+0M8OI zR!N3;60wF$OF}~8;x8V8nwR$!e01RLz@i15GBDB5+z(fyGBRlM8n1uoR16Id-#|lN zAf*!}(bKQ$Z*LkQ7uQcP2y}K9;ep4f@xCa(umU$K78W~*Bkt~Ju=eh5Zlq*n2mAXI zvS4-aDJrVc_r?cyt+jPN{9weFt#{bM2?+_1CJ8-#3XT*upoOGxx`kNoO;bo$+@7vR zL4e$Le#&QYcQ2%<5Vb*C-~x&*!Y8N$!$Pl=L;_`&+oKr>@bNurx<*Duz=RaY`e0!W z-9(T_3dv`K1J}!!FG<7hiYU6d{d>PeS^5nm42+Mk^!1)6wnN{Q!09B2dUdt`t4uue z75Mm=nl5L)j4rpC9Lc%FRzGt2ytcMxGgFh8V!*~D>~m_*DWGu-_6W*%?nHp#>HVT3 zAC<6AS7+zOH7Pa`)AtgRNs&A1R`?E9&fsN$118F4RRkM-oYS@Y+vl_ zQ$#!mKd(s>C;lr)ok4P)%40{FBH!EDY4lVb7a7bex>5ux{51);^o;LdPXw+)Y=aHz zPu&LQ4ZnZSo$SmO7Z<}$^{xLngU#MNlWoe{_w5GxKVEyCcT@?-f##jR3Te-#$Hv-> z*|c2{Q*~880gLGSwMM@KsYJ>PJuE$BV$TUu!QNsgZE8Mqc_*ne>ce`vP&ip<3+)& ziWoC6H-*%IjKLaz4W!WAxPXh3?nY1%v1Q7qg4(sbrGx)}j-mFnya z@XPexyx9ZqDu|FiXZuUXqgLkT2n3w>($dli-JzkOO;v$WYz%!PW6i=Dq`Yr$F487T zKpb0K%nsHLpmiT%Qc_YfY7PI9o9l71{rbXh9bG-|8GB;ad0Bco2qx1JZ)rpW^Y!YV zF))}dw1mB$?(FvO>UQGM1*Rz@;{c?R)aeP*-;{G;-hnNc5#)nZy0H=3Ms-(rV26T* zi0uWJKy|gTOB@+C;`I8;Gh2x3qJQ*uV%O7d|8aw6)OHviRqLtocPT)*AR|BjNr;$X zit;T480I`;WP~L|Ak@{>;p{|&h7OI6g4dSYA$xO7qo?B8M^ z+}s#-pp9a+#HS6~0U1Sl7QFzF&mX+UA?AIR&!1A{Yc)5)l?#q?-@chZOx7v4ekms> z_cLT=;YL}p(An9+g z%c)8)9u(VyAq7|*?#+wK$#uh>ibKxZ;89D31>10ZEebL(ctUt12y|x`7aJQJ(e1`| zb~_M~fQjvWMYS2MU12-zcN+yvoM3H{Zr>jLq0?&2K3ed4V|m#HyqDg;e-9>cBe7Rj zk(Ke=6(>;Gb8^)xq z_^q}V26$?V{HCMLh`tm%HsJ8Bfk-u+s|Fz$!USCRMpu8T)8xTteT@3iqp`lehVxi1 zcV@jhL5D>t@B#q!KVvMq2yU#jNvskHyK!)Btx&*=HPvU$R@yI>>s=R63xlaxrF{6t-mh$D_{y-h3_;~Zp7yfGnl zH=Mj{*=eL>YkYdZ?Yufa&jM2Mvw#YF54oETU(4Qt*9Rl{Y)~&hc^vY?oZ~Ym_)`)R z>Q*}ZX>Uh^+Ta$@cc0|H$T&#(X_p^2!iw>+s8FWmw?R->m#lz5HJlZ0E-o+<0A~j9 zodiN97-X-G`+kb2DmDz*&QW>e)~SjAWiU~d@kiP@96A7jn6)ytR^7OSu24qGFM}ZB zK32)fe_ai}lfSmaVd>4x%rJkfN4&a}?>f+FYiie4X^)IN`Jffomub+1zLe~3N7k0q#%gx2CG4%E}Dl3!x zoDk}#@dO+D0_>s4`CtP@(P@&w2r$X9+>i3 zS65fr{JVcv*1MGHKcK)%wQE@W47^h&CUER1I!bP$x3CCkZ=V$uT4{KM2eq(S;cweo zaC8AmObf72j=dgZqX11D@%Ea`*N}#~fsAnZ0Sil=^*G;D!2Ek?6Bx|a2zVSqKbCZ6 z3mbkw5FV(&78jeLqQ%7Y($xskmo!Meg$sX~krDS^5zx~xUDJ8zAVTe)D?n$=%oyL@ zz1v@j{$KG+ok?^wF+JT4W7_4D-TacdcyB%mA9>yYN0Xl3{^Iy93CUEzI^EN!hj7jI ze_fip-=@zB>jPQcmmkwF!+gL`k(~T^O` znFlRb)|NET!?yMQtg$!XdWD2?SCz4B_Nh8+fzp-7k8MPlgul|nb5asFKiA|7mfB94 zvZDS<53Z%YbV(jN7uWTqw6rw&?1~+mp&eX2ye2W0MA@yKb_ELfpBm@R@rm;q;AOS7 z$xT-)LS=%5g$3DptuhVu7kb)^*D42yciOxhL}X=$kiC=aP4+08Y_j)Wx8I@9_wV2R=<&!O z<+|?cI?wYuuj6>WUN7z(o2icDBWI9VzxXxyTY?bB`G?&CFCU+j&hox06zRY#$I`+A zujR9u~|n1hLnQ@Fc5%-fVW`lU#aalqr9=W z|G6I=Z7()UapnKt)J)z3 zK1;jQ;$7L{`HDpsf5kN}6T97dSDl|nvc4uxb zM2!1TJ5N{0YF;+m%j;EJ_R_nlx?2EzzIa3MAtq$50*uFxAT{(bqM{ zH{AYZtcO!!vdwUOB;ZGExnwGj6C)DOKZxB4rpA{%TLyZML0T5{hKssnFi)>v|4^G8 ziF9?y&dQq3P#lJOfABQ|J1VMcW5-o>bVN9yuc@h7q!qorzIpMzmGnQ@3m+WZuzKwi zKyWMmb9MjJlG3 z3&YaZR?Buz7TWxc=yQD7pMY?NfaBl7Iv_p^wX;Tjiv52M*(;D9vL&tEY>!kgoU zZsXpv3Z{SNZy>4hXe=5)|@|nP!VTu?i-hpp#hR2=UHWTSO$XvM`2rE3jO20 zzOOLnUjK2{0|s>cIqdq58ynBGZsGh4R)LmQ1Z)XHeu~K$18N_M`-T!F>>*rG5m)ghp)|y@e(ziU1O_`%(L?(we7m;^zGBC2q7TmlA1^N@j^5^Wg@Q-LST zYf<)NUfxlurBX67#@U4+sHYHT8+l=F+mfuc&qYAsA;&nI`ZyAGmIdcVT_!XOb->b+ z1kc&#UHIl?1Hfs9Q0I!>+4C6w-MUx|9aL=WN0j;h_Z5CHbOV32*joseSI9TBLb?yI zZ~1nkPO51B9`ELYtphzne|}yMcvBSfZy})r$jeu%U%7{ORS!nCppg3^2$O&rA*9iT zg09am*8ko3X?9#=FwYov(l(sl-CZt(!OM?Tz3#K#Ax8+w z`4DBvjrXJ;T=G^(+JO>yl0JglM5>X)b5BEZB#_?>w zw_st;`ugno=^ApPCLugZ-F0i)$oc=S2;mtu7i`{OcLn4y3B}*meooh`aevr>YLpwo zk5PSox(I3%c-0K1&UM~QvJ|+RC?$2oscS2ULZ=sQLL>g07vdHjohYy3IvK3M-3i@< zx1FIaSsM|-D4_#7XaI6nR=#LWO2DIw(q)98>3?G?Jo-9_Y+PM?0LXL# z5gOw>p<0{CikOw>aDZzp7Dhu$%N_u)EG$#^@B2ct@)vih+uE8bGpqa^9eX5z(DCuQ zQ>y+M5QI@qt|n^ zX)M@v1?3bhW0R*y{pO)&Z(&Zbx~>PB7`H<`Fya^*QVlQqzjJTU||5uo%+?qS8tDZz@81+9Z!C=Zz&X+wuY0{xS&1- z?Pq>|@9+RGeSU#~Bom?E--bNbSXWn3S|mk)--wK~_3YPADsF$fZr-4+)6>%xc4S;3Dm&EJ{csBxq<4om8u(hJ#6x{_k zDq;CkYLMSvKz}QThG}hUiwGQKJU}QkFyK>Ruk4A|_3?|QiQ{@vp1$A*78^?rOuQ>-0@fdF5asoENl1Eogx4+8HueRBcTuY9=a znimj=1rXHiTp1g)EV~ww18g#!6Dj#eOD)m8$$Ubq4%?#RykJ|C@J^`*`n>DT$&)e~U%uQ2YJ9HsaCU2A zp|cRk2Y2`AdLzWYT|vT^6=bni)zBR#Q?P9f2@FKZcR1}4Oe?{qh>~CBM61%Syr940 zEml;LfZof-PVC|3dFZ+Pn{9-&vg+0Nk5OnJf?HWVJ(wQ(iQO@?_?94|uPrC!vQv?e z5C<Dzt78d7~Eh?>v$@nNb4URpvF z7t?TXFu`->TWJko&|dKtEG)$L?ltvi&aJK{2*yOmY3HQUcY9Lx*LoZRU7@F^D5M$k z?;f!gZ387TJ1e1CkOy^~2Ix$HYsdK<_E-YvA8AQUazy>YKF^D6I8ff#ozp`-c(6R+ z!FN94#pfGL;E&td4)00yO?lyHYKnWB;PmE=(63(?U|B#;L^(~6dAa{BC+a!_#hka8 zR#^}DH(K#h^$+YFfg^>lQ1)jD^J@rOt25k5*H|1NH|=!)T*t@14+avq1oR8@&wYKK zfs9*IvqT{#0;F(4WKoIT);og!zpE{WC+;eI2Wh=+7TLcAjnHrzS^QKp=0o7<+S==R zaP1o6|NiwWh2@7LZ_7F5w!tPT3}Rw*y;uSeDVG}ZVE44tX_4E*9rAby=zb8wW~+^PV}20)_5R<5dR27z&(DexOs+uY8xu8n>(;5iAL9$V+tkms zw(k)Wa|9vZW(CB>E)5!7Z@=|VZ(m_MV*=71P*H{TyaziEs|n%Np2Wkcx{HmHu&%CW z7~c6EbI^l?SkeQ~)5GS#L*w84Y{J!@K^FH7(Gb(tLCL7Gm(%fJtsZ8!kri?z=Z zqOVUf^zN*4YM-m3mEVzwoLtb|8Nl3v<6{V~^_-c>exLIkMD^fsb5GG9CMisF*C#YK zR_Qk56fevKT>()NUH$jipCRJd`QLYg4%pEV_3W$!i6+2ht0$V*MTU(RDd1Xx3-}Vj3 z9JM~-qDwkli`e3c!==RXC6}TgVE&{|mX1fyn$DcBQ$tQmeqX0dqu7;gqvLAlv(43Y z)naRPHL2WnNvxDjm*A$ZguSb#(Lvb>4aLJN-3bXjXqF4|XFK_E;FQeX%L8 zzN?-yMoT z#+~kuT_Q=z1}ORflDy_dLsrxp4_Eq!@U3 z4*-G6dDT1FYD9c;QmM-!!yYZi_>7S77Kf%yTbQ_R!DK6Kr~vQ4YNDYOJ=hS0EG^~w zVy{9EknK*rVu`BoK31{TNfV)FT3X@QXq@Na1j@lNuHs``k0<}Dp4yR-C|dVvXaw9O z4*wh-O-r(~9nYuV;qT#5*V}n&-xWI($pqcCn*jj^C&!DB!^ppbAz)4Rv*qQxcRgiA zltDzP=3ps%B|alEVkq(}KRTHZf%xyXP9l;!NhJF^zJk1BH$)l=@H!;eOj@Y z*;z20Lv{ORWS=2(>Nwh@0o)5rHm7yJ;buYR%=eQJa_d ziZ#Kjb3w#;E2My9Fzt%TDqit~0tQ=Y2= z#_#l;26Z)u$;hMNWm?ZKOpVppQTSnKwYy82-Aw-Ti_^2?ha`b{gP!~epJYuehig$A zf2_Q};L`cr3Cqn@2TQMbzD;cG-jxEgE6~Q#PF}vcwe#(Cy=?mY6w`Wwb$jdmpPGl+ zl{#6=UnZkNLrEWJFEOPt+l_w9wn-KNZxZ%9)3P2lvd6ii+_a{IP(q$*JpA2XCMX<_ zjdhy`IfhriwlNva7jt>kMC`Ujo=>8M`8lq)p{D`&_&OA3_#r zg+J+Q4$m){O*)+>?Cm*#Tv*+coVw=den2EFlb$>6-abAzctbK3OQJSyUX#%Z+U|F9 z8sECr;&yPfKE~&CwB;Qk#PWNXc5l0tqo;?V_jASDBU|Bsw7E5rXQC?#tm(+}y|%&J zP%Iy58yoC>bw2)}%qM{`DoH=2clh?-CDAtg60oCpGTXAM5c4g{l0k0hZ+9(*cz<_7 z%g&e?RX^yb-1e40JeIU+CphtE9S4E$yh zYR6|{r$Rz;Y{~>;5nn??8F);}JK^A{izWhs`#33SGCWD5`QjcfqFqUIb8`?f@MADH zQ%0JpH-7)T#?8i*R?y>w$^Ms-u?@|m_>@|b>oTnq9>MViTdAq63yC6=Tnh}c5icz| z&SyW|94@@k=a4I7KxzCbK7Mie=G#Rjb2sEo1j37EASMaPlFDp1E7b{<`_0QZrODur zO81$wz85*S4t&a8?h^)@v$3(GH8huuR>v^7?tI8*AgiG63kQju==q+k`LaUBjlk5l zjt*f-$(krO<>uC@WP#p==0NiP%<;yDy8i{yXFe%T0$-6DH|2x1*x(%vyr((<2fy=T3_qPXl1}jvoL96 z-Kx;eB#;978`trIA{Ujh#9>Xfp8WG`;mDk-Q0FZxA79xZl^~o41;ystC| zB5D2n@5(X$uB>D_zRHLrrD7t{SQ$uqe~=b7gryq0NIE|UhpcpkM~<5s#Ttnr-9LUx z7rRGxGkLh*4yC;~8_JKkitqW9Ls=!S!S^j8HQwIN$`9^MSSu>OAVs|U2Gc3-+bJkd z#m63z2QN8=oL9DsWD5BhqSwA?b9mtRK1lw}8(ae1 z3N3Bz%)en^J-ENx`*;4+p-x!7ZH23GYkVhaVr41J)3ZRYV7)CoI5u`FDw(CjWG_u7 zDlm{$n$1^(o|KdH8ysE>~Tjxs&OzrzWSo_&`{Gti);kg z<8Vf*fB|UXh)e6&Is?=r9#PS@=C7Rl03wQ^1`BuYy^D%^<9sx=F?rsaquw7G@$Jt9 zL){TQKSP?>LJoCycIfQfW^ZB@lK;STGoWK@`%Nk{37wS6*SZT6OkYQhFe?SS9p9}j z1)S1Rx?2>{BlnWp&7WFWOl|@Uv%mL|E~0Nj^@*0de8*Xsq;a@-Sr?Z5~fA?e^ z*(xo4($G+QxZ#i9O~yBb=aBT+N`V7)kn)0YuW8!1{ukvf1`dlJ6sTAY4Kak zb!OpZugL2#`Ip|_s+Ah;6IJP}Ly0P?2xDEn`=E%LDm}r*hzp)9WfNDN%2tzy*I28u zJ^QM(YcR=_WVJF23p>BcP|n>`R@*xdq1wOBQ%9ya_sET6W$7tSN`ksZw%}gHvd%0Ov_p+;eaUgFl*u zf4K>7aY;j;cXIMVTk9w_#`m^>HDgStIF4e{>zA)yjrmgreK7Dm80C)7cz&)A*Xo#o z=+PrRO-%(YCk=x5pVzOON(R)%srYm=$$fkK;BMqETwK)Jgj@Q=*yltUFkG`T`PwVO z`%K8+J3T%8iF72R<-yvU9Ti0ZYv8H17~ARPhLC7(2yl%OVT4oHNkvwphTo6`u8oz- zEcQ&uDRc^OQS!dwu+M0T6dPS zrL>Ejyu2n#6|xT*@Z^s$*>;wm`>731?W5xfqoZ*Lq2xBMGKz|l`jflW)r%Dsy|kiv z&L`gi|0QcNV&c1l10L*#4L%1lIqK>)`sG_dWDO1*^!}+nZqk^FjvB12l37}M>W;pC z9Bi<$LHzP%DTDNXKwR%SP90&wP$9--Lq+7~xSn@%9vT^0SGx{o@s9Y5;c)7&QIIdR zR%7l1BoxD`&e`xwk47ZxWFf|9Ys?tL!LH)vtj*gv+$VQfmE`+bXfUnuKHI948Hf`7aGTpGQC3Y?(}~=eTr$J8&1uS`48S=3 zhp_VQy~X53N#F#wJi`u1vH=gQ^yA&U;Vt8ky_2EI<8wAJ2f0U?N12Uzb4)*f2{k`yf3y+9ss=hTy5hyh@ z!mRUcen}a*koEZ##u!AC^&`5I&8RL8#_PxovzuO8s*5JVJ_u1?k7e#{3h79sSPf?r{!MYlRgYNv5-R_ktTfcX|EfXk zWYVbV=vbJTe9iDmNtuD9wkmhQB~r3+mF<#~A#4~`-FHwc;=GEG-;%>(Xkzjmh%XM> z>nB((j%sIlwfpc}%y`<8E4u;oO8or!8UYor>)uj%xu9QILc%SH_i@gV8Oxa1*GI<3 zfl{afb751{)VhOdBCIzvjaP5nxWN%~+AT2kU07FJM+bs%sbe}PYTTR(&)hK|>*-B= zd)XNr91ICnfJs8+XjslqE6YqN`q5(J0Du1$h@toO@o6?HHhReFsWEjzIR_MukgzZn zC1qDEHv?>pSn_th=GR|-*GJcV4@_RZBqt}&=42ql8-0D5z6CuwVX$MGc0z(z$PWed9tC9CsEsY=G+_l5iI_@F<201DSgvM?Ji%m#?WTXm+N#f%h92=ve8yJ!!e|s=lPwD3D z{CcD)MfC{4BemKuJ?mKv=jkCB-|#9P%_H+sRPk5LT2V{8nBc4HP*41N|vH+?zYP-Q>xO{TXqz-@|AK4F4X+7?+UH`I?E5QS15h+}FBM z54nHx^YceVMRm<+f=7j;;|3(+QT=UJe9y|ds7sAVSY^ZPF zeu{0)(~>hi2^-NQ%!@|HPzV=*PkDJcz%MU5qrn@n1TIgpS5%a`lF~9A6d@u@d5QJm_L!_&xckC|ujOv0BiNCA8 zZ5ws<6SC~;Pvp$?P+AlO&%H|a02qf$RkeS5+Av(!Po2;D`9olgA&SJ%$jHddj1rPy z$nePjw`OFTpKQ%EK_neS(E+jv(J{9ln8-fA=aJxs*>nW;wIvY@mve@B@1 z4sYKMI>34K#fYH?Am)wKTkOj+^CVtC6E{EqkOLVNzx&Y^X literal 0 HcmV?d00001 diff --git a/software/doc/html/scheduler_8h.html b/software/doc/html/scheduler_8h.html new file mode 100644 index 0000000..c0a54bd --- /dev/null +++ b/software/doc/html/scheduler_8h.html @@ -0,0 +1,380 @@ + + + + + + + +EmbeddedEtcher: os/scheduler.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
scheduler.h File Reference
+
+
+ +

Scheduler of the operating system. +More...

+
#include <stdlib.h>
+#include <stdint.h>
+#include "ossettings.h"
+#include "ostypes.h"
+
+Include dependency graph for scheduler.h:
+
+
+ + + + +
+
+

Go to the source code of this file.

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

+Functions

uint32_t osSchedulerGetSysT (void)
 
uint8_t osTaskCreate (void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle)
 
void osTaskDelete (osTCB_t *iotask)
 
void osTaskDelay (uint8_t idelay)
 
void osTaskDelayUntil (uint32_t iwakeup_time, uint8_t idelay)
 
void osRunScheduler (void)
 
void osPrintTask (uint8_t iindex)
 
void osPrintAllTasks (void)
 
+

Detailed Description

+

Scheduler of the operating system.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Function Documentation

+ +

◆ osPrintAllTasks()

+ +
+
+ + + + + + + + +
void osPrintAllTasks (void )
+
+

Print all information about all tasks.

+ +
+
+ +

◆ osPrintTask()

+ +
+
+ + + + + + + + +
void osPrintTask (uint8_t iindex)
+
+

Print all information about one task.

+
Parameters
+ + +
iindexIndex in the TCB array.
+
+
+ +
+
+ +

◆ osRunScheduler()

+ +
+
+ + + + + + + + +
void osRunScheduler (void )
+
+

System core. Scheduler needs to be executed by a timer interrupt.

+ +
+
+ +

◆ osSchedulerGetSysT()

+ +
+
+ + + + + + + + +
uint32_t osSchedulerGetSysT (void )
+
+

Get the system time.

+
Return values
+ + +
Givesback the number of ticks since system has been initialized.
+
+
+ +
+
+ +

◆ osTaskCreate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osTaskCreate (void(*)(void *) ifnc_ptr,
char * itask_name,
void * iarguments,
uint8_t ipriority,
const osTCB_toTaskHandle 
)
+
+

Spawn a task.

+
Parameters
+ + + + + + +
ifnc_ptrPointer to the task function.
itask_nameInternal task name.
iargumentsEnables passing user-defined arguments to the task.
ipriorityA higher value means a higher priority of the task.
oTaskHandlePointer to TCB.
+
+
+
Return values
+ + +
1(task has been spawned) or 0 (FAILED)
+
+
+ +
+
+ +

◆ osTaskDelay()

+ +
+
+ + + + + + + + +
void osTaskDelay (uint8_t idelay)
+
+

Delay function. DO NOT USE FOR PERIODIC TASKS!

+
Parameters
+ + +
idelayDelay in system ticks.
+
+
+ +
+
+ +

◆ osTaskDelayUntil()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void osTaskDelayUntil (uint32_t iwakeup_time,
uint8_t idelay 
)
+
+

Delay until function. DO USE FOR PERIODIC TASKS!

+
Parameters
+ + + +
iwakeup_timeTime when the task execution started.
idelayNumber of system ticks until the task shall be executed again.
+
+
+ +
+
+ +

◆ osTaskDelete()

+ +
+
+ + + + + + + + +
void osTaskDelete (osTCB_tiotask)
+
+

Simply delete task by setting the function pointer to NULL.

+
Parameters
+ + +
iotaskPointer to TCB.
+
+
+ +
+
+
+
+ + + + diff --git a/software/doc/html/scheduler_8h.js b/software/doc/html/scheduler_8h.js new file mode 100644 index 0000000..d6ec7b7 --- /dev/null +++ b/software/doc/html/scheduler_8h.js @@ -0,0 +1,11 @@ +var scheduler_8h = +[ + [ "osPrintAllTasks", "scheduler_8h.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b", null ], + [ "osPrintTask", "scheduler_8h.html#acd27cd0dcb4e193125968decdd238ff9", null ], + [ "osRunScheduler", "scheduler_8h.html#ada28e10d8b44223004cab16b201df2d7", null ], + [ "osSchedulerGetSysT", "scheduler_8h.html#ac59673f226b3291f835a0faf010ad409", null ], + [ "osTaskCreate", "scheduler_8h.html#a76739fd1872ff1f867ea41e853131a21", null ], + [ "osTaskDelay", "scheduler_8h.html#ae1e7565174265c0107749d7cdf486c01", null ], + [ "osTaskDelayUntil", "scheduler_8h.html#ae4c7af5e41838a9299b00d455fb8f454", null ], + [ "osTaskDelete", "scheduler_8h.html#a790ca9c0d2362305790eb3c4002e3da9", null ] +]; \ No newline at end of file diff --git a/software/doc/html/scheduler_8h__dep__incl.map b/software/doc/html/scheduler_8h__dep__incl.map new file mode 100644 index 0000000..ad039e3 --- /dev/null +++ b/software/doc/html/scheduler_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/scheduler_8h__dep__incl.md5 b/software/doc/html/scheduler_8h__dep__incl.md5 new file mode 100644 index 0000000..42c3a85 --- /dev/null +++ b/software/doc/html/scheduler_8h__dep__incl.md5 @@ -0,0 +1 @@ +a65fa0b6e299876734bb8b0db68443f0 \ No newline at end of file diff --git a/software/doc/html/scheduler_8h__dep__incl.png b/software/doc/html/scheduler_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c72d221a7781d339ff8a7ae3d36bf140e12709b8 GIT binary patch literal 5637 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 bT;u*_7=F&BeRmV|bs;KB8j7Wer-A + + + diff --git a/software/doc/html/scheduler_8h__incl.md5 b/software/doc/html/scheduler_8h__incl.md5 new file mode 100644 index 0000000..ad4114c --- /dev/null +++ b/software/doc/html/scheduler_8h__incl.md5 @@ -0,0 +1 @@ +d53bac448bb666f66a667585507df371 \ No newline at end of file diff --git a/software/doc/html/scheduler_8h__incl.png b/software/doc/html/scheduler_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..4a97cd3ec7cb62f7a0df3c19e0a2d0e753078e83 GIT binary patch literal 12272 zcmZ{q1yI#tl(#Q}G?z{Z3F(wZO1isCLb|(4xBonvuUM)J0Y+{HY(njWL35V@Mz|ReFY&>!0^7sGkv(tnRV(WCiqf9K|m9Wc7 z%j?jjSFYOt1^?v2M5f+jCn1vvc;VF4)Ht}ioAcq65`td|*v(MowX8y^8F8K6-TP-g z_z$}fsIeQHn504jt>6y2b7>sJf}I2(6%{4g;rEaN4a&sT1?#G9gk*$=Dv2j{6rm zN{Awexp{ePu6t@e$DIh*=M#!2$E%_cG?u%xX4C}rc9*Oc_oJ@mWioV9ehU|WZAaCA z;@C-P3$>;wr)Ot1CjC&G*=m@RlauR%hGivf?FdfmX~UruHXfgAR%*q}XfpqM%ol+W zh{MCJ>-oU~J|u1Na<;~#(d&YKy6Qumd^#67B_%8-Cgz24qu&Fc+u>q_dYOjNa=R}r z6VpqGn7BAOJ3ID5gMEJzlkV}(7-eus$ZAgnHjl^gYr&fhY%wu0!@bFp**0(Ys8M~5 z8 ztFXYp_qP5iKVE_%^D^rEKuk(XdcL4s`@6&4rR_I zIU_?qU97gY*3ix_wzQO9Ov zce8mM8$y1bZVqB%V+Vl+OGrxk)V&%oy1hPMXN?xhJ}^H$I*M*&WF#do-}~KswAyqK zZ)0O)0Cze2eNeUYw!%kq^Yyv!=2~@DxX)&9HbekU*&4W+mY%+=LbsvXe3TUOWKG`N z)3Y*FrWqa^Yv*_q!|S|-YS8XOr@4sZJ%*Q*ru)MJv)*mZAZBH63LVkOB5Cz64`r!i^SoIdS0}-&p#KgoH#Kh4rQSg5D^uVbWDfEH? zIPCl(AIcIU)2uSERlaf6)m9ODx@T`~ZQav)j+rdU#e zNc)b5q+O-#GV7SjgS*_uYj-Isb*A~`LC(4?FFAS1 zfI-gp;=O2yaKDh5bR+xMJAeO{p)*yjkYqtpx0ooDe;v$v`$0Se(%IQ>Xm=PFPZ>rb z)KT4QDkhN`Ra!FTvOrkJ(^5ToU~^beeEwFRSyQxzOkPVTySA1{ z=-z?Iq~9(mFOS#QL`c+d07oe*gMPr}oZblW5r>1Cwt^ zLIQsi79ONrj~A7fw}8iGN1`llj#yLEIygkWI|OCW$lN^Ca^ey=VT{GL^qe0iDnr>w zvZ8d&>Tg{4HHZ*lmOQ%KZ(?9(=hKY$Cf#cs*Ll^{ev~_R6y!(j#|b3~ONIquQu=lN zo4Y&tm-ii*E~!G3VY zUw!7^9IT;5an$F}D9AA-ygq{Xfq_RWdsBvTnfFjGyL)U{`11anGjw$#gaQH%qndB@ zI_fGQhDn;5)-948x)KuY8K10?&o;0?cXvZ%!YeKN`fd@Sq=99cLSf0tB!voS-O+^J zpA*${Pqm7t^N^x?)y7Io8NiN$;pbRuo@pGA5nMz69Sm246?`d4E%fS@YH+ARXN}3( z=WpM_9v^0m*87}g2;JV(k;-c^=Kt1E*B?L8tjOr@U*9#nIn4==eME?eV8J2QA3Q(U zk4C}QFx*uUvRQD$6b-ZMI#{qAK9XXKq-IP~b}cKd^ndi6E*+6&9 z3$*-bDsT7AILUfC|Jm$XG-Y+Tyfe1c=yT&7O|%))8--3zOH1tOxe0E5R#!wO|7k7Y zPGLnwHU=!;iz(X0j;x69=47<_{Nij})BWf|(Y?REqJYJUdb&3!p`ds)<73?Gu;@}z z-TU(&OI@M9UiHz@`Fr0$ya6~m9AXp^UBA^6mfBhnz=#kM@V&yLaqx@a;h$+F>UqP61C9e|xbXDw`}Q znk5*U!n&&IbF+!WXBR~dUJT=Eqdw(&cggN@Uq0 zj=4D5uljm&Hi~_`V9(9!b*}Nz43CW@X*vff%4l!Cv{ZKK<(*FVP&tX&Fj0W*0&{I{ zoW+_LSx*n6q-!0bpWmz9Z(_J$XUX@LO21$s_cnTSi&`R~K(Njq{P!ErbeDtP4F{RBXKfMQX9BViK8W`%sb$mN%5G8gO86HJWfPv z6laz31O!Oi@9a>yY;OtTS}YLLMykMk-?@*k9@rv~kZcP6 zNB~9)?4QSrgY@Y!J#W&4F0HJLb0kwA836$$nzRkqd}Ps_k17TT%`Y`I>gqEY?{=N4 zmX|ch{I1~_7t3q>1kSMYbbt5sV8q9NXEo~5P2sc_;bWlhzI@S?Qe+8kXt2UciiIMSX`o38|5PYgN>#%X%!;bB7WxDRp-~kp zVP=Nucl(RXM=*K!4+p%h5gp8euDXi*VSW(C3l^4li6j#%i@CPTx-TXjYgfSGOe-%#|0t}OdeCj;m9ELH{ari2CFHD{386dYezShd~*;DREzL( zMG;`5Nm|fKN^a!BdaO8%>H?|jOY_GkP?Xiqzr^F=DY2*BugBdPc83bR#y}*Dc(2Uo z#?dvFcV=j6`iad%CD-u`CmWEyU&f6N(5TAV&T9 z)3Mja96xzpQ)9am6d1^Sd5|7x_m{78*&l%tJ<*gst$HJyse+y^M=3fC{rk#6Me~Vf zEy1gOlg>}?XWQ3Z9?#lnuNJh-bnB>CAJ?}ee zpE6je(Sl||hGwp9^-S-VO1{NRnJw5D1007rH2lin=(sZ9T*3 zB`Z$W?biPHj{MXL=SDnT({%J+5svHi?-`R;CQCwCIXR8_sOpO9n94Uc`1M+8y$y5g zL5OVj7s8g1@N#hZVaSIA`FXZ2Uj3cDyU97C(RrH?BFvZ+Fu3`emp5*1Wj@rZ(*nv76Y@h9r(QxrdE7y_sXn>f)GZ>z86)DYg$++ z$d_Hh!J}%$Ei_CBBL*s6cLe57O&L#D{5x(|$l!ZTVT?yA@Vl!kBus0DrpQVsxf+pN ztMwY=^z=6ba<)ZMuFs^BuB-0)hH8?Ek@_$2>Pu}iKm_xI_lj*rW-4Y@`^%|b9cI*+ zkGgylNDq)tpRFTJDYew^LPqb16ngT3W_K3YWj}9ZSKYtH zHE`)%4-s*K^Rb72->v>m9IXS<>taKitF%lU*^|mwHzkc|^?X;{jp%=miaYn#QtSLxlWKl}P{KvL5=UfZ@8q)G|4oR#&D zdKA>1l2U+}j{`+C)MMbE;<^Kml){L*;PSo_JxOa1JQo|1@qt>VP^vGOQ zA;qk%>{6K?@Yq7RtR*sXa+p73tCN@31qHYR7a=`dvdPfE@6I%gS{O(*DQzf(^k4b} zgGJ`;)z!{xmr4^kk&rPWsCH(@5Pk35y8Ry~NMPX`e@;&)bcUzW95`rRvLh~7{hQ@B zvatzJ6r4i=XMfKMv$j@-ZP4Y;5So$Z81>XOF*;4P7b98ZkaLba&Y=T>3!$d)n~S+0v5k@NY~19^H#zjG=Fy zc#y!bus4f;nSixGt*viJ3$sCP=)N@8UZa&KX&;iF&N*FiCw1uC?6M0iCbdPmb3HZ3 zq<@T-sV%s))I7R(jHtf8eqd=54R=)^Wr)1jkVNv66$!{oH; zLAbfg@Q(J^*Mm;h`x(gTho{E9F1OO5KqWExoDE9@17JW!b4|oa^-_HrL6&(#Dl`Hg z*8M(?lu1!5!3qu`P8g(nU}N5rAe#Wn27$zpnRkvqTpn=P!N&q2u6eau{!r;1eBv&gy=6hlt+s z>C-16hJ}t!Us|j+|xC1 zlA1pmoS2q|?CgAocVupC{ApD1P7VoEIp*eSnK--`tIpP_uAbDA9u`&~?&U={Q2xhz z>YNj+#R)3dNn#Z5jf@7fTFd}Wx!9j!Ag3s0Q_TD*`XTFS8CP&h(Rx3gI$f|$2soPIgu7I=?UdW#&XLATAE(?G{m6eqiGnFI&QaL<$ zb#Jm0wV(pV6a4inHX|b=n66%{*PA=$Uj?$sD{E_?pd@@N0N1GZ&{_THkNdu|W?b-v zvsy+*1_K8N&e_>{c77fxvP}#`E4lI|W3w?XgyFb8|Czbo=X{KT2ORGUNf(L5l0A#Kpy>qN9tL6zBn*FT9}OO+;)g zwYIkQ#!xDIPhVdsq`1M>p;p*2!k>ao6bZ+SeyT1d^I4%YOLda$eN5{fK15gmeLw|v$ULCxi1qRUmDN5 zcMZj)5n>eMz-XLK*2F~+$-6_*C;?!m3Fa{P03{QY`<9Ubp69YZ9Rs-7Ogla{wkW@V zKstYW`I()pfT~y*Met|ky!y{`->*13azZW6IEBNYBpCSkVY&@=ol8rkqG8b9gN25i zyou_a=x9_APtPgu;fV>=%60J2ipynYX6AvBqz4Zg>;1Hm^*-b5y}@B7(f99P>ggvg zuV$vFqts}j($Eym&w!zv+~1txO;Iu@M**x%!N*7R^5x4$ht(I<@@Z=J>CG3tQ&V+r zeimkC)aB*nR`@XIXJ?`StVPAL6hJR*#;M4@3EV+KLgv|ea)vv00Z&rX&{$jP3>p|7 z7FSZjxWB(wQc)Q{!JgyQ?ix@_FpI0IychzixI6Ts z>(^KJ6sS0-L5GBmJeh)+7@VVn!|Uee=APl<7(l$gV2Fe((NY1f*)uQ@j-ldQL577T zqNk@9o|8kq`?rNVA}Z=@8T$S}JY~0d)o@Ua4gg%QcoZlP&+O}z8dVRarS zpawlBJMHS+5(=rV47phHKFTRBE*`sLWMXJ){d%Fp0*cA|*4e7__2qxaQcI}F6&Mt7E=U8Mw2#bQcINGQ8h z^eo(%DUg-a(oJ948lK$ZHls_;I7BD2x~!{a950aI(6_TAl#wx@%MYpZJToJH=OzcE zY>Dnknmtcs-*FJ0&aDbTRgt-ov;NcdmWwMC1OV)s;+Fyf0w6TKB?%pW^JZ$1+{T)0 z`pX+xqM>!w!h{4UEsN$o`;C(`T6{)Db2_?yvr8xV7RSI2z?nwhJHj60h^|2m1T-D3 z+uK_QXJ-=%JeiP8!QqgS5=^iZ4JF?|`H7A;cdJ6%8JXMOpm$V=C8(+@N@VbHGnwH2 z{*2e>@dgX^74e;~c%Gy=P?VN7LLhtAiIjIo%*%V~oUbc7xtPgg1N1`X z-AEcI+1kUEJ|+%MEXaxqNF-Bvh@nefWeoCK31*(R2_(*lRRGbwk@f3t^@L@!p7xdz zzym7ZcHzb9#>a@CKlKL&8SMRNI46tZDA(34yK*_ijEr6)qcBVg8vSic4+J@h;Uukn zxelk?oBqj}ZIh=*!j-e86dpDlQ_~lT#G3H{ZhubJtc*w3DL|4%DafDHJ1lnYl93(k zpDbw^Yp7!9vd=6YpAwLlkHH}1MF|PPO<|)X7Rk{v?biq<6|mBXORS_WlLoX_gpSS= zWJ==OBP1!%0%efJ9bch`WMmMEh!zF(tNL=*fs{57mfi8lfEtfQ5Kd(FjFt)HCamn% zVg64ANKxYuI=UN>0tduG&#b?6RDy#7X2{AhDJs^(NI*pIHE%yzL;1YC@2g`94?jB_WToEVA^Ah1hC5LPO%^pqX?o#C4VHK3?|F% zgjSyH0k*KR`g(kMt$G3FjB{~xCX`^HasW61_2=NEl7%}u}tPmAB}2->AMTd~WN*QiLQdg@$ryNkz9`XT0lM{ayY(!{Tm0@FU%*4vj(E#$h_tM1Y#<CH2 zPvFpfzF0-|%*bvD+Sdm!7xqcD=+O9LZ(Xa+i|YPi*^H04soK)8BqoLqRDxzJwxHx^ z$w7{e(po=uFbWk8!kV0Y)0f}JRGa?CH3qGJ%8PcMCur4Y$d+DxxI7AqsH+5mi`dJ) z+@WJyI#Fmu&4Tw32zu&sF958pt&JSe@v}^C-o%YP0hIalp^J-YblhO2f&1jU_F<-Ur2WDNE~{Y^S5Tl6qZroq zO%Rk)kIFCD48rJ=BGd3}f&>P(bgnyslva*_aJPgX-jwj&rToW_IBR893fa!vP^<68 z&$ASxKmr8A(AKugg$Mb)u9gmn)MR><&j?@5YZ34p!2F-JNp9{|*J5jiOk5T69#6Ge zT7Ks^_tD3&1c2MyTOS7eKR^}0vhZmVdepD4%blNIrrk8Uc$Reke143EjQns=PL9)z zqyIh6tBIncP6V>^o~z|J)p^I+;N9mTNf0GggGwP&{Fg6rmHJExm*=VH=OS|72#^63 zvzhBUq~nh4+xV$sV&cp1TiVVb^8?4$$P&r4a$HGED=;7+qq_EOXQlwV8sA71Qwq`Z zTt!{$q)hu&xxgt2uB8^xR8un=&(HWQg$N~1iEumMF#jEs%f?o%27*~BJs2gP@-*L} zNDcug35XjQ5JJf^VL{r6%=BS`6gFYVP`Gf;J?RdPx zI6GJ3=0~Ah;`O{MWG`TBjg%R4qg@v}ZnmgK!0J_3TOJ=*D{D2)3n#+LS~DYY7KMm= zOLEF-r$U}l)YjI)%8DVpx3}|ROES#!t9AQ*CklmX-0g{h^UDUv7nx3VK?)%$_EiH( z6h2v3y=@?JQ;@FCEix8TNt^88wlilbdX(s-qpfD?)LZtbKSiVND^9KujPPDgGM41Q zzzSPQpskS<6q0}@=?92Esfl^2FUG&CzaQzSeP8eBB0RjK#%UAN=jlNUAeIkvMR_Nn z;DdotjqSXBYdlrDda=~vae`@V@|5UJXeol|b&e<@F20_e3J>oC#3*FNa4h$Iijcpd zZnq}yeAhT@eSM+DvH{uV<^@BAmfYt|gK)5~J$;WT@lrs%qnz*0REL~jJK_NXk3bq1 z1!5ALRRTWbH8nLRDBo85+$g1$(RMC2-6?BnK|v{WD6@_1EA@>bsK5N?e_5gGZfIGg(C2YZi_&rL zL>i27?4kE>0UyEsNZKip(<*`6ZrKlB__B5Ycms*JOBK0edI=UJ&Og8zS38@R55WWx zLlN#ShkpWHgto-MP$pJo@S$z`s57w66#;lO60oBX%x;ZM(hgec8=)UG+Xu56jb zybmJs|Lyc~BSwN$NBHwsRb+jA!JV0Or&cfZ7=RCz4VW!H+aQtyTJT1bH!100b#qF5 zYmzozsw*vQn(Mi-XtFFhW2lD$utBej0f{3iX(~AHOTChVV*iJ>=O8fu!vPU4%{g6< z1bCgEM#lwA{A9SA#?^vvT5=e8ZZEMSe3tR@Bs<8@V)IH$VBk?5ELB_OfNO%Cn@{87 z3l8j`2yAE&Sn{rt%)8TXJ||!?NO)m!k1ooX^qT7usV{DMDO)wmDx-y#a(Dx6* zR8~Ixc;s*_1~{NqgR1E_F>kGA-me%?2?Czz*yG>BcXRse+_buAy3~?djQ|vWf~4v}ku4JFdTXsm;+T(GqAFbo71r3Pu3@ z9M`=X_%uM>ASu*q9nJgr=BWi~Xx$N53pc2Pas?rNhms`SIBqB&-`IdEvNZmXD8^n9oJD@~vd_j`|VS*X~urajHueO?fa4U?3F- z9@{64#}}@>>Gt#7%?E?Y>Y(H5)y38iM;=c9*KTfRpsNabys~%)cO=W7 zR+E>^ZwHMu4i=z8KR;5yX{EHu%Rp}%ksM!!$p8lW`9I5r9j;)E;1K;#F_E9^yV;=T z^UVHy?lloneZrtvrifwPouJ;^=yret)G8{Va6qTNh65;$LX(hE((65Kf-u#WmG!u} zcbBEie4LURjJ_&3bG*lyU-% zjzLq>&{*7B-{0EW0TE)K}hHc_sf?^ zAe#SOl)hyj#CVk+Xw?19(5x_J(>(uK*?S)egd~+%0f<1rt>Bvp=~++h8W=#q#XZ4@ zVo3XI@L?H=7>b^l_*D9uub0p7o~JLCME8huzDwnW2qGYSD~C%Cm6?2L{Msj`TbrA! zW0aRZd4m*KQ|AX`N3K(A4m@=ocg+?EFaJklp+Q}mSRqA(mbkKiy83;7W* zEiHjgJlN@S?Foz2TD@i$B!H2g|I+?&soR@b4bMPF_Z|S9q2Xa8YwIWg?nGY~Yac63 zZ!a!-i{xN*c6L_R)qy0BZfiI_thBTg{y)c#NDkTrxflQb9c%aXMkQc{0MzY$&@SIQ zO;9jJB0{HUY)k?8S%UZ7>8VrK_L;PW1?{hq5$e^|)!_d1ctGpEBqWIK`N`?l+mM5H zKPrIPKAM`wvzw1#yn6NOMRsRBWZ?Q_UE0x+Z4SH%Mi?0xnaE~_0P?XX95cVQ^&6Pp zH^}Ron;WMrRnXLRvtQM*v1FhxE-ub_*W#rwEDRy!ad-`g6!|k#?CuT%swF0CYYN50FK8+)Bwf(vP73 z^5Rm+VI^QF_>DZ#6d-R41L@WO$seupJZZofowB~xQRE?e5N%22W{a?96?qiHMFacV`A1kphwybKq)Q@oxMrk*pSI z`9pKr`2*wV=-BAGj|X5Jo6C;UBEX>?in|poph?ug;3C=ko;fHVAY1F0*8j=w6wJYL60Di7oat8cXzh}6sY-t zMg;*Q&TFBmX^LOFihTaftMDQmhRqk0IhhD zcUMO<-b`$4%4T!6C9I|GB$Y^fu6uC66HHD{&d&g@Y-nOKv9Z0VM^as1FQKA>B{i&$ z85tGjxE|_L7S~=`!?(J!5)g*IU-kXs`osjnRFdbT{c#+m`{#x#^5n(1w4~KYHIk9kdQ`~U99$-t@Qb; z^ho&v*CKKJqy#;k`7m)ra?q#S)7crgv$u!E&CTs}x*-jyvPjP7>+5R_N=ix*Dfuj6 zDJev-hvcAakPkYLshF7+%*ZtUw!`j@Rwd6(*4O&k#nxXMVTwp8D`Teed%k63XQu>h zk{{=4O~qbgV2FJ59~o}b)Yg^;Xi^NUt(csg+yLlf2AJG4X!P_VYqJ6yDt<-2iTqW$jNeIvTSAC|*Oo2Cixn_GthU|<1_kdGzi zec|u#AM?Rr3(&Tm@d6Z}In?jwe|@Dnx!KN|F(4|%0%a*RH5_WW6s03qFKH=d94ss> z3<84ickYMJU7?MhXVmT2YbbK5Z$ozf?B$?bE8~QK^;-kqT_1O&$7f}sBOo9Es0svV zfn1mdy1W*Scwqnf>fKRC|JAbps0*!pZgMb=cn$pXH~-gXn`|*05S?Jo;W06$d^i%8 zU3y}qRa=T;*drmf`M|mFNV&gJN|u~rj}a`*v|_p~_5v;OahFEQIK4z1|Lv0>BAE*P fluIi^`h + + + + + + +EmbeddedEtcher: os/scheduler.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
scheduler.h
+
+
+Go to the documentation of this file.
1 
8 #ifndef OS_SCHEDULER_H
9 #define OS_SCHEDULER_H
10 
11 //--------------Include------------------
12 
13 #include<stdlib.h>
14 #include<stdint.h>
15 
16 #include "ossettings.h"
17 #include"ostypes.h"
18 
19 //--------------Functions----------------
20 
21 // TODO: Schedule round robin when two or more tasks have the same priority.
22 
27 uint32_t osSchedulerGetSysT(void);
28 
38 uint8_t osTaskCreate(void (*ifnc_ptr)(void*), char* itask_name, void* iarguments, uint8_t ipriority, const osTCB_t* oTaskHandle);
39 
44 void osTaskDelete(osTCB_t* iotask);
45 
50 void osTaskDelay(uint8_t idelay);
51 
57 void osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay);
58 
62 void osRunScheduler(void);
63 
68 void osPrintTask(uint8_t iindex);
69 
73 void osPrintAllTasks(void);
74 
75 #endif
void osRunScheduler(void)
Definition: scheduler.c:237
+
void osPrintAllTasks(void)
Definition: scheduler.c:316
+
Definition: ostypes.h:41
+
uint32_t osSchedulerGetSysT(void)
Definition: scheduler.c:29
+
void osPrintTask(uint8_t iindex)
Definition: scheduler.c:306
+
void osTaskDelete(osTCB_t *iotask)
Definition: scheduler.c:214
+
Different types the operating system uses are defined here.
+
void osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay)
Definition: scheduler.c:228
+
File where all settings take place.
+
uint8_t osTaskCreate(void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle)
Definition: scheduler.c:183
+
void osTaskDelay(uint8_t idelay)
Definition: scheduler.c:219
+
+
+ + + + diff --git a/software/doc/html/search/all_0.html b/software/doc/html/search/all_0.html new file mode 100644 index 0000000..f25360b --- /dev/null +++ b/software/doc/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_0.js b/software/doc/html/search/all_0.js new file mode 100644 index 0000000..d990a6f --- /dev/null +++ b/software/doc/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debug_5fmsg',['DEBUG_MSG',['../error_8h.html#ad43da790cc069011db9c6f0ef8fea11b',1,'error.h']]] +]; diff --git a/software/doc/html/search/all_1.html b/software/doc/html/search/all_1.html new file mode 100644 index 0000000..b13f0f7 --- /dev/null +++ b/software/doc/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_1.js b/software/doc/html/search/all_1.js new file mode 100644 index 0000000..0aaa5ec --- /dev/null +++ b/software/doc/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_2eh',['error.h',['../error_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_10.html b/software/doc/html/search/all_10.html new file mode 100644 index 0000000..d1345a1 --- /dev/null +++ b/software/doc/html/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_10.js b/software/doc/html/search/all_10.js new file mode 100644 index 0000000..39567e2 --- /dev/null +++ b/software/doc/html/search/all_10.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['usart_2ec',['usart.c',['../usart_8c.html',1,'']]], + ['usart_2eh',['usart.h',['../usart_8h.html',1,'']]], + ['usart2_5firqhandler',['USART2_IRQHandler',['../usart_8c.html#a0ca6fd0e6f77921dd1123539857ba0a8',1,'usart.c']]], + ['usart2getstring',['usart2GetString',['../usart_8c.html#ae9015c84b756436a139ad5cee89e781e',1,'usart2GetString(uint8_t *word, size_t buff_size, size_t *string_size): usart.c'],['../usart_8h.html#ae9015c84b756436a139ad5cee89e781e',1,'usart2GetString(uint8_t *word, size_t buff_size, size_t *string_size): usart.c']]], + ['usart2init',['usart2Init',['../usart_8c.html#a7d08f26cbf4b00f400972b2df19bc78b',1,'usart2Init(void): usart.c'],['../usart_8h.html#a7d08f26cbf4b00f400972b2df19bc78b',1,'usart2Init(void): usart.c']]], + ['usart2putstring',['usart2PutString',['../usart_8c.html#af67798b30466ae997de23584f384595e',1,'usart2PutString(uint8_t *word, size_t size): usart.c'],['../usart_8h.html#af67798b30466ae997de23584f384595e',1,'usart2PutString(uint8_t *word, size_t size): usart.c']]], + ['usart_5fqueue_5fsize',['USART_QUEUE_SIZE',['../usart_8h.html#adbc6489d5d90a63ca2cfd1948091aef3',1,'usart.h']]] +]; diff --git a/software/doc/html/search/all_11.html b/software/doc/html/search/all_11.html new file mode 100644 index 0000000..2be8b71 --- /dev/null +++ b/software/doc/html/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_11.js b/software/doc/html/search/all_11.js new file mode 100644 index 0000000..a9ad446 --- /dev/null +++ b/software/doc/html/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['varsize',['varsize',['../structos_q_u_e_u_e__t.html#a83564fccea0d26714ccba07901241089',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/search/all_12.html b/software/doc/html/search/all_12.html new file mode 100644 index 0000000..13c5263 --- /dev/null +++ b/software/doc/html/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_12.js b/software/doc/html/search/all_12.js new file mode 100644 index 0000000..716d4ca --- /dev/null +++ b/software/doc/html/search/all_12.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['w_5fsys_5ftimer_5foverflow',['W_SYS_TIMER_OVERFLOW',['../ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362a248cb11850829e0dee0a150d48fa36c7',1,'ostypes.h']]], + ['wake_5fup',['wake_up',['../structos_t_c_b__t.html#aabdd8be14846d97f622cacdbdaaa5925',1,'osTCB_t']]], + ['write_5fp',['write_p',['../structos_q_u_e_u_e__t.html#a418b6d1612eff43ba60ed8014917d7b1',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/search/all_2.html b/software/doc/html/search/all_2.html new file mode 100644 index 0000000..9543c57 --- /dev/null +++ b/software/doc/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_2.js b/software/doc/html/search/all_2.js new file mode 100644 index 0000000..4ba56c4 --- /dev/null +++ b/software/doc/html/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['heap_2eh',['heap.h',['../heap_8h.html',1,'']]], + ['helpers_2eh',['helpers.h',['../helpers_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_3.html b/software/doc/html/search/all_3.html new file mode 100644 index 0000000..03405c0 --- /dev/null +++ b/software/doc/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_3.js b/software/doc/html/search/all_3.js new file mode 100644 index 0000000..42b5fca --- /dev/null +++ b/software/doc/html/search/all_3.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['osdequeue',['osDequeue',['../queues_8h.html#a0037677933e9d9d089327009032edf2c',1,'queues.c']]], + ['osenqueue',['osEnqueue',['../queues_8h.html#a78b4d06b91514e747007d1cc03029b44',1,'queues.c']]], + ['oserror_5ft',['osError_t',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094f',1,'ostypes.h']]], + ['osexplainerror',['osExplainError',['../error_8h.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'error.c']]], + ['osexplainwarning',['osExplainWarning',['../error_8h.html#a29238a23e284dd0a6278434447be4682',1,'error.c']]], + ['osheapbuild',['osHeapBuild',['../heap_8h.html#aba6f21f0421450da6531c7ea9f6976b5',1,'heap.c']]], + ['osheapextractmaximum',['osHeapExtractMaximum',['../heap_8h.html#a31002fadb05f80382c9714462dfb092e',1,'heap.c']]], + ['osheapheapify',['osHeapHeapify',['../heap_8h.html#a5a51c0aca53767d5038681cc649d5fa8',1,'heap.c']]], + ['osheapinit',['osHeapInit',['../heap_8h.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'heap.c']]], + ['osheapinsert',['osHeapInsert',['../heap_8h.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'heap.c']]], + ['osheapisempty',['osHeapIsEmpty',['../heap_8h.html#a999a4beae27d4c7085278724feeabbc1',1,'heap.c']]], + ['osheapmaximum',['osHeapMaximum',['../heap_8h.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'heap.c']]], + ['osheapnode_5ft',['osHeapNode_t',['../ostypes_8h.html#a7b59ec4a57312624d7d832ba4a8e04be',1,'ostypes.h']]], + ['osheapprints',['osHeapPrintS',['../heap_8h.html#abfcd76f5650f218825578b0bd1652587',1,'heap.c']]], + ['ositoa',['osItoa',['../helpers_8h.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'helpers.c']]], + ['ospowint',['osPowInt',['../helpers_8h.html#a8f7c8ca9321d4fa5a07c09b42120cab9',1,'helpers.h']]], + ['osprintalltasks',['osPrintAllTasks',['../scheduler_8h.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'scheduler.c']]], + ['osprinterror',['osPrintError',['../error_8h.html#a540c46d0a32421cad29354147a02c4ea',1,'error.c']]], + ['osprintf',['osPrintf',['../printf_8h.html#ae2b707b3f94f0857c447e83c833b068a',1,'printf.c']]], + ['osprinttask',['osPrintTask',['../scheduler_8h.html#acd27cd0dcb4e193125968decdd238ff9',1,'scheduler.c']]], + ['osprintwarning',['osPrintWarning',['../error_8h.html#a8ea68ece7fa351c9c046006749706e26',1,'error.c']]], + ['osqinit',['osQInit',['../queues_8h.html#a164dd36f8a083fd39b238b6d05910320',1,'queues.c']]], + ['osqueue_5ft',['osQUEUE_t',['../structos_q_u_e_u_e__t.html',1,'']]], + ['osrunscheduler',['osRunScheduler',['../scheduler_8h.html#ada28e10d8b44223004cab16b201df2d7',1,'scheduler.c']]], + ['osschedulergetsyst',['osSchedulerGetSysT',['../scheduler_8h.html#ac59673f226b3291f835a0faf010ad409',1,'scheduler.c']]], + ['osschedulerstate_5ft',['osSchedulerState_t',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8c',1,'ostypes.h']]], + ['ossemaphorehandle_5ft',['osSemaphoreHandle_t',['../structos_semaphore_handle__t.html',1,'']]], + ['ossettings_2eh',['ossettings.h',['../ossettings_8h.html',1,'']]], + ['ostaskcreate',['osTaskCreate',['../scheduler_8h.html#a76739fd1872ff1f867ea41e853131a21',1,'scheduler.c']]], + ['ostaskdelay',['osTaskDelay',['../scheduler_8h.html#ae1e7565174265c0107749d7cdf486c01',1,'scheduler.c']]], + ['ostaskdelayuntil',['osTaskDelayUntil',['../scheduler_8h.html#ae4c7af5e41838a9299b00d455fb8f454',1,'scheduler.c']]], + ['ostaskdelete',['osTaskDelete',['../scheduler_8h.html#a790ca9c0d2362305790eb3c4002e3da9',1,'scheduler.c']]], + ['ostaskstate_5ft',['osTaskState_t',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55',1,'ostypes.h']]], + ['ostcb_5ft',['osTCB_t',['../structos_t_c_b__t.html',1,'']]], + ['ostypes_2eh',['ostypes.h',['../ostypes_8h.html',1,'']]], + ['oswarning_5ft',['osWarning_t',['../ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/all_4.html b/software/doc/html/search/all_4.html new file mode 100644 index 0000000..8e1f4b9 --- /dev/null +++ b/software/doc/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_4.js b/software/doc/html/search/all_4.js new file mode 100644 index 0000000..53815c2 --- /dev/null +++ b/software/doc/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['printf_2eh',['printf.h',['../printf_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_5.html b/software/doc/html/search/all_5.html new file mode 100644 index 0000000..89a879e --- /dev/null +++ b/software/doc/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_5.js b/software/doc/html/search/all_5.js new file mode 100644 index 0000000..a948a50 --- /dev/null +++ b/software/doc/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queues_2eh',['queues.h',['../queues_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_6.html b/software/doc/html/search/all_6.html new file mode 100644 index 0000000..6afac06 --- /dev/null +++ b/software/doc/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_6.js b/software/doc/html/search/all_6.js new file mode 100644 index 0000000..e5e54ca --- /dev/null +++ b/software/doc/html/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scheduler_2eh',['scheduler.h',['../scheduler_8h.html',1,'']]], + ['semaphore_2eh',['semaphore.h',['../semaphore_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_7.html b/software/doc/html/search/all_7.html new file mode 100644 index 0000000..de19107 --- /dev/null +++ b/software/doc/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_7.js b/software/doc/html/search/all_7.js new file mode 100644 index 0000000..9146238 --- /dev/null +++ b/software/doc/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['throw_5ferror',['THROW_ERROR',['../error_8h.html#a443fea42d93b53e3569d33e80c5de6c4',1,'error.h']]], + ['throw_5fwarning',['THROW_WARNING',['../error_8h.html#a22fc1f25f5e596198d4a773df7762c77',1,'error.h']]] +]; diff --git a/software/doc/html/search/all_8.html b/software/doc/html/search/all_8.html new file mode 100644 index 0000000..11e27cd --- /dev/null +++ b/software/doc/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_8.js b/software/doc/html/search/all_8.js new file mode 100644 index 0000000..be49696 --- /dev/null +++ b/software/doc/html/search/all_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['max_5flevel_5fint_5fnesting',['MAX_LEVEL_INT_NESTING',['../ossettings_8h.html#a6d0f30dbf0f5f658209bdfe01e400d40',1,'ossettings.h']]], + ['max_5fmessage_5fsize',['MAX_MESSAGE_SIZE',['../ossettings_8h.html#acb84a306ee37479f97cf0b476560f027',1,'ossettings.h']]], + ['max_5fnumber_5fof_5ftasks',['MAX_NUMBER_OF_TASKS',['../ossettings_8h.html#ae429fe1a9a03040b1a337048275f8540',1,'ossettings.h']]], + ['max_5fsize_5ftask_5fname',['MAX_SIZE_TASK_NAME',['../ossettings_8h.html#a63dde392f4d29d54ce7fefc32793be6e',1,'ossettings.h']]], + ['ms_5f2_5fticks',['MS_2_TICKS',['../ossettings_8h.html#a16ba2eeb8a3b183ecff5652270cf1f4d',1,'ossettings.h']]] +]; diff --git a/software/doc/html/search/all_9.html b/software/doc/html/search/all_9.html new file mode 100644 index 0000000..f8abbbe --- /dev/null +++ b/software/doc/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_9.js b/software/doc/html/search/all_9.js new file mode 100644 index 0000000..7badd0a --- /dev/null +++ b/software/doc/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['name',['name',['../structos_t_c_b__t.html#a053fb83c9604d11fa3b97113a1cee7c9',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/all_a.html b/software/doc/html/search/all_a.html new file mode 100644 index 0000000..9601fce --- /dev/null +++ b/software/doc/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_a.js b/software/doc/html/search/all_a.js new file mode 100644 index 0000000..798f234 --- /dev/null +++ b/software/doc/html/search/all_a.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['osdequeue',['osDequeue',['../queues_8c.html#a0037677933e9d9d089327009032edf2c',1,'osDequeue(osQUEUE_t *q, void *data): queues.c'],['../queues_8h.html#a0037677933e9d9d089327009032edf2c',1,'osDequeue(osQUEUE_t *q, void *data): queues.c']]], + ['osenqueue',['osEnqueue',['../queues_8c.html#a78b4d06b91514e747007d1cc03029b44',1,'osEnqueue(osQUEUE_t *q, void *data): queues.c'],['../queues_8h.html#a78b4d06b91514e747007d1cc03029b44',1,'osEnqueue(osQUEUE_t *q, void *data): queues.c']]], + ['oserror_5ft',['osError_t',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094f',1,'ostypes.h']]], + ['osexplainerror',['osExplainError',['../error_8c.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'osExplainError(const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage): error.c'],['../error_8h.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'osExplainError(const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage): error.c']]], + ['osexplainwarning',['osExplainWarning',['../error_8c.html#a29238a23e284dd0a6278434447be4682',1,'osExplainWarning(const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage): error.c'],['../error_8h.html#a29238a23e284dd0a6278434447be4682',1,'osExplainWarning(const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage): error.c']]], + ['osheapbuild',['osHeapBuild',['../heap_8c.html#aba6f21f0421450da6531c7ea9f6976b5',1,'osHeapBuild(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#aba6f21f0421450da6531c7ea9f6976b5',1,'osHeapBuild(osHeapNode_t *ioarray): heap.c']]], + ['osheapextractmaximum',['osHeapExtractMaximum',['../heap_8c.html#a31002fadb05f80382c9714462dfb092e',1,'osHeapExtractMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c'],['../heap_8h.html#a31002fadb05f80382c9714462dfb092e',1,'osHeapExtractMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c']]], + ['osheapheapify',['osHeapHeapify',['../heap_8c.html#a5a51c0aca53767d5038681cc649d5fa8',1,'osHeapHeapify(osHeapNode_t *ioarray, uint8_t iind): heap.c'],['../heap_8h.html#a5a51c0aca53767d5038681cc649d5fa8',1,'osHeapHeapify(osHeapNode_t *ioarray, uint8_t iind): heap.c']]], + ['osheapinit',['osHeapInit',['../heap_8c.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'osHeapInit(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'osHeapInit(osHeapNode_t *ioarray): heap.c']]], + ['osheapinsert',['osHeapInsert',['../heap_8c.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'osHeapInsert(osHeapNode_t *ioarray, osHeapNode_t x): heap.c'],['../heap_8h.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'osHeapInsert(osHeapNode_t *ioarray, osHeapNode_t x): heap.c']]], + ['osheapisempty',['osHeapIsEmpty',['../heap_8c.html#a999a4beae27d4c7085278724feeabbc1',1,'osHeapIsEmpty(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#a999a4beae27d4c7085278724feeabbc1',1,'osHeapIsEmpty(osHeapNode_t *ioarray): heap.c']]], + ['osheapmaximum',['osHeapMaximum',['../heap_8c.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'osHeapMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c'],['../heap_8h.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'osHeapMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c']]], + ['osheapnode_5ft',['osHeapNode_t',['../ostypes_8h.html#a7b59ec4a57312624d7d832ba4a8e04be',1,'ostypes.h']]], + ['osheapprints',['osHeapPrintS',['../heap_8c.html#abfcd76f5650f218825578b0bd1652587',1,'osHeapPrintS(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#abfcd76f5650f218825578b0bd1652587',1,'osHeapPrintS(osHeapNode_t *ioarray): heap.c']]], + ['ositoa',['osItoa',['../helpers_8c.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'osItoa(int iint, char *iochar, size_t ibuffsize, size_t *obuffsize): helpers.c'],['../helpers_8h.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'osItoa(int iint, char *iochar, size_t ibuffsize, size_t *obuffsize): helpers.c']]], + ['ospowint',['osPowInt',['../helpers_8h.html#a8f7c8ca9321d4fa5a07c09b42120cab9',1,'helpers.h']]], + ['osprintalltasks',['osPrintAllTasks',['../scheduler_8c.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'osPrintAllTasks(void): scheduler.c'],['../scheduler_8h.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'osPrintAllTasks(void): scheduler.c']]], + ['osprinterror',['osPrintError',['../error_8c.html#a540c46d0a32421cad29354147a02c4ea',1,'osPrintError(const char *ifile, const int iline, const osError_t ierror): error.c'],['../error_8h.html#a540c46d0a32421cad29354147a02c4ea',1,'osPrintError(const char *ifile, const int iline, const osError_t ierror): error.c']]], + ['osprintf',['osPrintf',['../printf_8c.html#ae2b707b3f94f0857c447e83c833b068a',1,'osPrintf(const char *iformat,...): printf.c'],['../printf_8h.html#ae2b707b3f94f0857c447e83c833b068a',1,'osPrintf(const char *iformat,...): printf.c']]], + ['osprinttask',['osPrintTask',['../scheduler_8c.html#acd27cd0dcb4e193125968decdd238ff9',1,'osPrintTask(uint8_t iindex): scheduler.c'],['../scheduler_8h.html#acd27cd0dcb4e193125968decdd238ff9',1,'osPrintTask(uint8_t iindex): scheduler.c']]], + ['osprintwarning',['osPrintWarning',['../error_8c.html#adeb03b63a59cac38dbdc0e3963d9d479',1,'osPrintWarning(const char *ifile, const int iline, const osWarning_t iwarning): error.c'],['../error_8h.html#a8ea68ece7fa351c9c046006749706e26',1,'osPrintWarning(const char *ifile, const int iline, const osWarning_t ierror): error.c']]], + ['osqinit',['osQInit',['../queues_8c.html#a164dd36f8a083fd39b238b6d05910320',1,'osQInit(osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart): queues.c'],['../queues_8h.html#a164dd36f8a083fd39b238b6d05910320',1,'osQInit(osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart): queues.c']]], + ['osqueue_5ft',['osQUEUE_t',['../structos_q_u_e_u_e__t.html',1,'']]], + ['osrunscheduler',['osRunScheduler',['../scheduler_8c.html#ada28e10d8b44223004cab16b201df2d7',1,'osRunScheduler(void): scheduler.c'],['../scheduler_8h.html#ada28e10d8b44223004cab16b201df2d7',1,'osRunScheduler(void): scheduler.c']]], + ['osschedulergetsyst',['osSchedulerGetSysT',['../scheduler_8c.html#ac59673f226b3291f835a0faf010ad409',1,'osSchedulerGetSysT(void): scheduler.c'],['../scheduler_8h.html#ac59673f226b3291f835a0faf010ad409',1,'osSchedulerGetSysT(void): scheduler.c']]], + ['osschedulerstate_5ft',['osSchedulerState_t',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8c',1,'ostypes.h']]], + ['ossemaphorebinary_5ft',['osSemaphoreBinary_t',['../ostypes_8h.html#ad68cf10efc310f9689628bde190fe714',1,'ostypes.h']]], + ['ossemaphorecreatebinary',['osSemaphoreCreateBinary',['../semaphore_8c.html#ace6c19a6c8803176ab54143941a6f53b',1,'semaphore.c']]], + ['ossemaphoregive',['osSemaphoreGive',['../semaphore_8c.html#a9e50e20add87bbd8724d789fa301fec9',1,'semaphore.c']]], + ['ossemaphorehandle_5ft',['osSemaphoreHandle_t',['../structos_semaphore_handle__t.html',1,'']]], + ['ossemaphoretake',['osSemaphoreTake',['../semaphore_8c.html#a753773d936c77e4dee7a7339fb2188e1',1,'semaphore.c']]], + ['ossemaphoretype_5ft',['osSemaphoreType_t',['../ostypes_8h.html#ab218649e29adcb54aefa674dc6f17acf',1,'ostypes.h']]], + ['ossettings_2eh',['ossettings.h',['../ossettings_8h.html',1,'']]], + ['ostaskcreate',['osTaskCreate',['../scheduler_8c.html#a76739fd1872ff1f867ea41e853131a21',1,'osTaskCreate(void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle): scheduler.c'],['../scheduler_8h.html#a76739fd1872ff1f867ea41e853131a21',1,'osTaskCreate(void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle): scheduler.c']]], + ['ostaskdelay',['osTaskDelay',['../scheduler_8c.html#ae1e7565174265c0107749d7cdf486c01',1,'osTaskDelay(uint8_t idelay): scheduler.c'],['../scheduler_8h.html#ae1e7565174265c0107749d7cdf486c01',1,'osTaskDelay(uint8_t idelay): scheduler.c']]], + ['ostaskdelayuntil',['osTaskDelayUntil',['../scheduler_8c.html#ae4c7af5e41838a9299b00d455fb8f454',1,'osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay): scheduler.c'],['../scheduler_8h.html#ae4c7af5e41838a9299b00d455fb8f454',1,'osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay): scheduler.c']]], + ['ostaskdelete',['osTaskDelete',['../scheduler_8c.html#a790ca9c0d2362305790eb3c4002e3da9',1,'osTaskDelete(osTCB_t *iotask): scheduler.c'],['../scheduler_8h.html#a790ca9c0d2362305790eb3c4002e3da9',1,'osTaskDelete(osTCB_t *iotask): scheduler.c']]], + ['ostaskstate_5ft',['osTaskState_t',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55',1,'ostypes.h']]], + ['ostcb_5ft',['osTCB_t',['../structos_t_c_b__t.html',1,'']]], + ['ostypes_2eh',['ostypes.h',['../ostypes_8h.html',1,'']]], + ['oswarning_5ft',['osWarning_t',['../ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/all_b.html b/software/doc/html/search/all_b.html new file mode 100644 index 0000000..0814e4e --- /dev/null +++ b/software/doc/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_b.js b/software/doc/html/search/all_b.js new file mode 100644 index 0000000..bcd4635 --- /dev/null +++ b/software/doc/html/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['printf_2ec',['printf.c',['../printf_8c.html',1,'']]], + ['printf_2eh',['printf.h',['../printf_8h.html',1,'']]], + ['priority',['priority',['../structos_t_c_b__t.html#a0ad043071ccc7a261d79a759dc9c6f0c',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/all_c.html b/software/doc/html/search/all_c.html new file mode 100644 index 0000000..da08c38 --- /dev/null +++ b/software/doc/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_c.js b/software/doc/html/search/all_c.js new file mode 100644 index 0000000..e2df83b --- /dev/null +++ b/software/doc/html/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['qsize',['qsize',['../structos_q_u_e_u_e__t.html#a26e55a22aa50bdfb7c20f344c19d4dd5',1,'osQUEUE_t']]], + ['queues_2ec',['queues.c',['../queues_8c.html',1,'']]], + ['queues_2eh',['queues.h',['../queues_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/all_d.html b/software/doc/html/search/all_d.html new file mode 100644 index 0000000..9986c9c --- /dev/null +++ b/software/doc/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_d.js b/software/doc/html/search/all_d.js new file mode 100644 index 0000000..de90a70 --- /dev/null +++ b/software/doc/html/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['read_5fp',['read_p',['../structos_q_u_e_u_e__t.html#a5c0e2590217d519484e519a510f4ff23',1,'osQUEUE_t']]], + ['ready',['READY',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a6564f2f3e15be06b670547bbcaaf0798',1,'ostypes.h']]], + ['running',['RUNNING',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1061be6c3fb88d32829cba6f6b2be304',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/all_e.html b/software/doc/html/search/all_e.html new file mode 100644 index 0000000..9fa42bb --- /dev/null +++ b/software/doc/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_e.js b/software/doc/html/search/all_e.js new file mode 100644 index 0000000..9ac1c13 --- /dev/null +++ b/software/doc/html/search/all_e.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['s_5fexecuting_5fno_5ftask',['S_EXECUTING_NO_TASK',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caa5cd19863f5591aa8aa45b4e1d09f2ae',1,'ostypes.h']]], + ['s_5fexecuting_5ftask',['S_EXECUTING_TASK',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8ca35eb5bdb3613bd35655abb940b143777',1,'ostypes.h']]], + ['s_5fideling',['S_IDELING',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8cade85fba74d53f436befd0d3e5fa72fa5',1,'ostypes.h']]], + ['s_5finit',['S_INIT',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caabb033d58518dadd28210bc74bef6051',1,'ostypes.h']]], + ['scheduler_2ec',['scheduler.c',['../scheduler_8c.html',1,'']]], + ['scheduler_2eh',['scheduler.h',['../scheduler_8h.html',1,'']]], + ['semaphore_2ec',['semaphore.c',['../semaphore_8c.html',1,'']]], + ['semaphore_2eh',['semaphore.h',['../semaphore_8h.html',1,'']]], + ['start',['start',['../structos_q_u_e_u_e__t.html#a53255b934b07b472175fbb8e847f9b5d',1,'osQUEUE_t']]], + ['state',['state',['../structos_t_c_b__t.html#a602c451f173294fef0097bb86d082602',1,'osTCB_t']]], + ['std_5fstring_5fbuffer_5fsize',['STD_STRING_BUFFER_SIZE',['../ossettings_8h.html#a0917779e7d7c2d5a3271b5653ad55df9',1,'ossettings.h']]], + ['suspended',['SUSPENDED',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1c2114335a42993ac5cc5dbf65f83d41',1,'ostypes.h']]], + ['sys_5ftick_5fms',['SYS_TICK_MS',['../ossettings_8h.html#aa494389e1ff9b4494ec3f6565b0fcde6',1,'ossettings.h']]], + ['sys_5ftick_5fperiod_5fms',['SYS_TICK_PERIOD_MS',['../ossettings_8h.html#a5ed26cf4f2ce5b422c9fd7a00d60ea2b',1,'ossettings.h']]], + ['system_5ftimer_2ec',['system_timer.c',['../system__timer_8c.html',1,'']]], + ['system_5ftimer_2eh',['system_timer.h',['../system__timer_8h.html',1,'']]], + ['systick_5fhandler',['SysTick_Handler',['../system__timer_8c.html#ab5e09814056d617c521549e542639b7e',1,'system_timer.c']]] +]; diff --git a/software/doc/html/search/all_f.html b/software/doc/html/search/all_f.html new file mode 100644 index 0000000..6ecfc0e --- /dev/null +++ b/software/doc/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/all_f.js b/software/doc/html/search/all_f.js new file mode 100644 index 0000000..ac62eb8 --- /dev/null +++ b/software/doc/html/search/all_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['taken',['TAKEN',['../ostypes_8h.html#ad68cf10efc310f9689628bde190fe714a372d5df31e888cad667bed8bbb87e500',1,'ostypes.h']]], + ['throw_5ferror',['THROW_ERROR',['../error_8h.html#a443fea42d93b53e3569d33e80c5de6c4',1,'error.h']]], + ['throw_5fwarning',['THROW_WARNING',['../error_8h.html#a22fc1f25f5e596198d4a773df7762c77',1,'error.h']]], + ['togglealiveled',['toggleAliveLED',['../system__timer_8c.html#af9e6109b87e10db9303be55cffb97498',1,'toggleAliveLED(void): system_timer.c'],['../system__timer_8h.html#af9e6109b87e10db9303be55cffb97498',1,'toggleAliveLED(void): system_timer.c']]], + ['type',['type',['../structos_semaphore_handle__t.html#a5a84f06656d71ab4080d24ca01c6507f',1,'osSemaphoreHandle_t']]] +]; diff --git a/software/doc/html/search/classes_0.html b/software/doc/html/search/classes_0.html new file mode 100644 index 0000000..1c3e406 --- /dev/null +++ b/software/doc/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/classes_0.js b/software/doc/html/search/classes_0.js new file mode 100644 index 0000000..b687fd1 --- /dev/null +++ b/software/doc/html/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['osqueue_5ft',['osQUEUE_t',['../structos_q_u_e_u_e__t.html',1,'']]], + ['ossemaphorehandle_5ft',['osSemaphoreHandle_t',['../structos_semaphore_handle__t.html',1,'']]], + ['ostcb_5ft',['osTCB_t',['../structos_t_c_b__t.html',1,'']]] +]; diff --git a/software/doc/html/search/close.png b/software/doc/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/software/doc/html/search/defines_0.html b/software/doc/html/search/defines_0.html new file mode 100644 index 0000000..5b25204 --- /dev/null +++ b/software/doc/html/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_0.js b/software/doc/html/search/defines_0.js new file mode 100644 index 0000000..d990a6f --- /dev/null +++ b/software/doc/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debug_5fmsg',['DEBUG_MSG',['../error_8h.html#ad43da790cc069011db9c6f0ef8fea11b',1,'error.h']]] +]; diff --git a/software/doc/html/search/defines_1.html b/software/doc/html/search/defines_1.html new file mode 100644 index 0000000..91488cb --- /dev/null +++ b/software/doc/html/search/defines_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_1.js b/software/doc/html/search/defines_1.js new file mode 100644 index 0000000..9146238 --- /dev/null +++ b/software/doc/html/search/defines_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['throw_5ferror',['THROW_ERROR',['../error_8h.html#a443fea42d93b53e3569d33e80c5de6c4',1,'error.h']]], + ['throw_5fwarning',['THROW_WARNING',['../error_8h.html#a22fc1f25f5e596198d4a773df7762c77',1,'error.h']]] +]; diff --git a/software/doc/html/search/defines_2.html b/software/doc/html/search/defines_2.html new file mode 100644 index 0000000..8655993 --- /dev/null +++ b/software/doc/html/search/defines_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_2.js b/software/doc/html/search/defines_2.js new file mode 100644 index 0000000..e75b45c --- /dev/null +++ b/software/doc/html/search/defines_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['debug_5fmode',['DEBUG_MODE',['../ossettings_8h.html#ac80a3592e72fd96b772ee47a7d8e0d0a',1,'ossettings.h']]], + ['debug_5fmsg',['DEBUG_MSG',['../error_8h.html#ad43da790cc069011db9c6f0ef8fea11b',1,'error.h']]] +]; diff --git a/software/doc/html/search/defines_3.html b/software/doc/html/search/defines_3.html new file mode 100644 index 0000000..a55d3ff --- /dev/null +++ b/software/doc/html/search/defines_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_3.js b/software/doc/html/search/defines_3.js new file mode 100644 index 0000000..1be4618 --- /dev/null +++ b/software/doc/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['heap_5fsize',['HEAP_SIZE',['../ossettings_8h.html#a1b45302695680930829cac31d65e41e1',1,'ossettings.h']]] +]; diff --git a/software/doc/html/search/defines_4.html b/software/doc/html/search/defines_4.html new file mode 100644 index 0000000..54da39a --- /dev/null +++ b/software/doc/html/search/defines_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_4.js b/software/doc/html/search/defines_4.js new file mode 100644 index 0000000..be49696 --- /dev/null +++ b/software/doc/html/search/defines_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['max_5flevel_5fint_5fnesting',['MAX_LEVEL_INT_NESTING',['../ossettings_8h.html#a6d0f30dbf0f5f658209bdfe01e400d40',1,'ossettings.h']]], + ['max_5fmessage_5fsize',['MAX_MESSAGE_SIZE',['../ossettings_8h.html#acb84a306ee37479f97cf0b476560f027',1,'ossettings.h']]], + ['max_5fnumber_5fof_5ftasks',['MAX_NUMBER_OF_TASKS',['../ossettings_8h.html#ae429fe1a9a03040b1a337048275f8540',1,'ossettings.h']]], + ['max_5fsize_5ftask_5fname',['MAX_SIZE_TASK_NAME',['../ossettings_8h.html#a63dde392f4d29d54ce7fefc32793be6e',1,'ossettings.h']]], + ['ms_5f2_5fticks',['MS_2_TICKS',['../ossettings_8h.html#a16ba2eeb8a3b183ecff5652270cf1f4d',1,'ossettings.h']]] +]; diff --git a/software/doc/html/search/defines_5.html b/software/doc/html/search/defines_5.html new file mode 100644 index 0000000..dd7bfdc --- /dev/null +++ b/software/doc/html/search/defines_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_5.js b/software/doc/html/search/defines_5.js new file mode 100644 index 0000000..b885495 --- /dev/null +++ b/software/doc/html/search/defines_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['std_5fstring_5fbuffer_5fsize',['STD_STRING_BUFFER_SIZE',['../ossettings_8h.html#a0917779e7d7c2d5a3271b5653ad55df9',1,'ossettings.h']]], + ['sys_5ftick_5fms',['SYS_TICK_MS',['../ossettings_8h.html#aa494389e1ff9b4494ec3f6565b0fcde6',1,'ossettings.h']]], + ['sys_5ftick_5fperiod_5fms',['SYS_TICK_PERIOD_MS',['../ossettings_8h.html#a5ed26cf4f2ce5b422c9fd7a00d60ea2b',1,'ossettings.h']]] +]; diff --git a/software/doc/html/search/defines_6.html b/software/doc/html/search/defines_6.html new file mode 100644 index 0000000..58d00e9 --- /dev/null +++ b/software/doc/html/search/defines_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_6.js b/software/doc/html/search/defines_6.js new file mode 100644 index 0000000..9146238 --- /dev/null +++ b/software/doc/html/search/defines_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['throw_5ferror',['THROW_ERROR',['../error_8h.html#a443fea42d93b53e3569d33e80c5de6c4',1,'error.h']]], + ['throw_5fwarning',['THROW_WARNING',['../error_8h.html#a22fc1f25f5e596198d4a773df7762c77',1,'error.h']]] +]; diff --git a/software/doc/html/search/defines_7.html b/software/doc/html/search/defines_7.html new file mode 100644 index 0000000..275e1b3 --- /dev/null +++ b/software/doc/html/search/defines_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/defines_7.js b/software/doc/html/search/defines_7.js new file mode 100644 index 0000000..1664019 --- /dev/null +++ b/software/doc/html/search/defines_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['usart_5fqueue_5fsize',['USART_QUEUE_SIZE',['../usart_8h.html#adbc6489d5d90a63ca2cfd1948091aef3',1,'usart.h']]] +]; diff --git a/software/doc/html/search/enums_0.html b/software/doc/html/search/enums_0.html new file mode 100644 index 0000000..ee343ac --- /dev/null +++ b/software/doc/html/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enums_0.js b/software/doc/html/search/enums_0.js new file mode 100644 index 0000000..6a6292a --- /dev/null +++ b/software/doc/html/search/enums_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['oserror_5ft',['osError_t',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094f',1,'ostypes.h']]], + ['osschedulerstate_5ft',['osSchedulerState_t',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8c',1,'ostypes.h']]], + ['ostaskstate_5ft',['osTaskState_t',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55',1,'ostypes.h']]], + ['oswarning_5ft',['osWarning_t',['../ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_0.html b/software/doc/html/search/enumvalues_0.html new file mode 100644 index 0000000..9387b6a --- /dev/null +++ b/software/doc/html/search/enumvalues_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_0.js b/software/doc/html/search/enumvalues_0.js new file mode 100644 index 0000000..835c12a --- /dev/null +++ b/software/doc/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['available',['AVAILABLE',['../ostypes_8h.html#ad68cf10efc310f9689628bde190fe714a1e229ccb8b53a57de4ebb11c2d15272e',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_1.html b/software/doc/html/search/enumvalues_1.html new file mode 100644 index 0000000..f622aba --- /dev/null +++ b/software/doc/html/search/enumvalues_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_1.js b/software/doc/html/search/enumvalues_1.js new file mode 100644 index 0000000..81c072f --- /dev/null +++ b/software/doc/html/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['binary',['BINARY',['../ostypes_8h.html#ab218649e29adcb54aefa674dc6f17acfaecafbc1299672a8c1521cc0d5f1ae986',1,'ostypes.h']]], + ['blocked',['BLOCKED',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a376c1b6a3f75d283a2efacf737438d61',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_2.html b/software/doc/html/search/enumvalues_2.html new file mode 100644 index 0000000..d499078 --- /dev/null +++ b/software/doc/html/search/enumvalues_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_2.js b/software/doc/html/search/enumvalues_2.js new file mode 100644 index 0000000..8c79bdf --- /dev/null +++ b/software/doc/html/search/enumvalues_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['e_5fbuffer_5foverflow',['E_BUFFER_OVERFLOW',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae536d157197aef88abbe6c97c1d4b20d',1,'ostypes.h']]], + ['e_5fheap_5foverlfow',['E_HEAP_OVERLFOW',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094face45ae8032a0d0bd1df51e97013d296d',1,'ostypes.h']]], + ['e_5fmax_5flevel_5fint_5fnesting',['E_MAX_LEVEL_INT_NESTING',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa46a4a81211207fa1fb7a78c2c9e392b3',1,'ostypes.h']]], + ['e_5fmax_5fnumber_5fof_5ftasks',['E_MAX_NUMBER_OF_TASKS',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa5077eda051eb91ad02bdecca89b94696',1,'ostypes.h']]], + ['e_5fnull_5fforbidden',['E_NULL_FORBIDDEN',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae4194956a8d68929ebfb61be58420d79',1,'ostypes.h']]], + ['e_5fprintf_5fwent_5fwrong',['E_PRINTF_WENT_WRONG',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa32d8b2d1b7c1aad2c711b49d86362255',1,'ostypes.h']]], + ['e_5fusart_5frx_5fbuffer_5foverlow',['E_USART_RX_BUFFER_OVERLOW',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa54988e5b26b00fb0ac6690ea9b38ddee',1,'ostypes.h']]], + ['e_5fusart_5ftx_5fbuffer_5foverlow',['E_USART_TX_BUFFER_OVERLOW',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fae40b50252e0cd0a31c301b24386b86a9',1,'ostypes.h']]], + ['e_5fwrong_5fusage_5fof_5fprintf',['E_WRONG_USAGE_OF_PRINTF',['../ostypes_8h.html#acd9f76a1fbd8bc9084ff34add637094fa16a500ed7c06729f78c0c0b543fc0628',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_3.html b/software/doc/html/search/enumvalues_3.html new file mode 100644 index 0000000..b4fc3ee --- /dev/null +++ b/software/doc/html/search/enumvalues_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_3.js b/software/doc/html/search/enumvalues_3.js new file mode 100644 index 0000000..8f587e8 --- /dev/null +++ b/software/doc/html/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ready',['READY',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a6564f2f3e15be06b670547bbcaaf0798',1,'ostypes.h']]], + ['running',['RUNNING',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1061be6c3fb88d32829cba6f6b2be304',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_4.html b/software/doc/html/search/enumvalues_4.html new file mode 100644 index 0000000..d6f69ac --- /dev/null +++ b/software/doc/html/search/enumvalues_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_4.js b/software/doc/html/search/enumvalues_4.js new file mode 100644 index 0000000..2c42c7e --- /dev/null +++ b/software/doc/html/search/enumvalues_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['s_5fexecuting_5fno_5ftask',['S_EXECUTING_NO_TASK',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caa5cd19863f5591aa8aa45b4e1d09f2ae',1,'ostypes.h']]], + ['s_5fexecuting_5ftask',['S_EXECUTING_TASK',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8ca35eb5bdb3613bd35655abb940b143777',1,'ostypes.h']]], + ['s_5fideling',['S_IDELING',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8cade85fba74d53f436befd0d3e5fa72fa5',1,'ostypes.h']]], + ['s_5finit',['S_INIT',['../ostypes_8h.html#ac9a3dac1250976eb655c7a46fceedb8caabb033d58518dadd28210bc74bef6051',1,'ostypes.h']]], + ['suspended',['SUSPENDED',['../ostypes_8h.html#ae410cf8fbf1704d3cedf2e2648b94a55a1c2114335a42993ac5cc5dbf65f83d41',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_5.html b/software/doc/html/search/enumvalues_5.html new file mode 100644 index 0000000..43a28d1 --- /dev/null +++ b/software/doc/html/search/enumvalues_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_5.js b/software/doc/html/search/enumvalues_5.js new file mode 100644 index 0000000..759f68b --- /dev/null +++ b/software/doc/html/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['taken',['TAKEN',['../ostypes_8h.html#ad68cf10efc310f9689628bde190fe714a372d5df31e888cad667bed8bbb87e500',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/enumvalues_6.html b/software/doc/html/search/enumvalues_6.html new file mode 100644 index 0000000..7439ee1 --- /dev/null +++ b/software/doc/html/search/enumvalues_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/enumvalues_6.js b/software/doc/html/search/enumvalues_6.js new file mode 100644 index 0000000..8ed33a1 --- /dev/null +++ b/software/doc/html/search/enumvalues_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['w_5fsys_5ftimer_5foverflow',['W_SYS_TIMER_OVERFLOW',['../ostypes_8h.html#a5c976ef3f21f800d03382e5cc640c362a248cb11850829e0dee0a150d48fa36c7',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/files_0.html b/software/doc/html/search/files_0.html new file mode 100644 index 0000000..4f272b8 --- /dev/null +++ b/software/doc/html/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_0.js b/software/doc/html/search/files_0.js new file mode 100644 index 0000000..0aaa5ec --- /dev/null +++ b/software/doc/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_2eh',['error.h',['../error_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_1.html b/software/doc/html/search/files_1.html new file mode 100644 index 0000000..dcce422 --- /dev/null +++ b/software/doc/html/search/files_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_1.js b/software/doc/html/search/files_1.js new file mode 100644 index 0000000..4ba56c4 --- /dev/null +++ b/software/doc/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['heap_2eh',['heap.h',['../heap_8h.html',1,'']]], + ['helpers_2eh',['helpers.h',['../helpers_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_2.html b/software/doc/html/search/files_2.html new file mode 100644 index 0000000..d5c6c3b --- /dev/null +++ b/software/doc/html/search/files_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_2.js b/software/doc/html/search/files_2.js new file mode 100644 index 0000000..7fef8a3 --- /dev/null +++ b/software/doc/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ossettings_2eh',['ossettings.h',['../ossettings_8h.html',1,'']]], + ['ostypes_2eh',['ostypes.h',['../ostypes_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_3.html b/software/doc/html/search/files_3.html new file mode 100644 index 0000000..d5a9528 --- /dev/null +++ b/software/doc/html/search/files_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_3.js b/software/doc/html/search/files_3.js new file mode 100644 index 0000000..53815c2 --- /dev/null +++ b/software/doc/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['printf_2eh',['printf.h',['../printf_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_4.html b/software/doc/html/search/files_4.html new file mode 100644 index 0000000..7b4c42a --- /dev/null +++ b/software/doc/html/search/files_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_4.js b/software/doc/html/search/files_4.js new file mode 100644 index 0000000..a948a50 --- /dev/null +++ b/software/doc/html/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queues_2eh',['queues.h',['../queues_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_5.html b/software/doc/html/search/files_5.html new file mode 100644 index 0000000..1f77bb1 --- /dev/null +++ b/software/doc/html/search/files_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_5.js b/software/doc/html/search/files_5.js new file mode 100644 index 0000000..e5e54ca --- /dev/null +++ b/software/doc/html/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scheduler_2eh',['scheduler.h',['../scheduler_8h.html',1,'']]], + ['semaphore_2eh',['semaphore.h',['../semaphore_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/files_6.html b/software/doc/html/search/files_6.html new file mode 100644 index 0000000..7573254 --- /dev/null +++ b/software/doc/html/search/files_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/files_6.js b/software/doc/html/search/files_6.js new file mode 100644 index 0000000..2ffb75b --- /dev/null +++ b/software/doc/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['usart_2ec',['usart.c',['../usart_8c.html',1,'']]], + ['usart_2eh',['usart.h',['../usart_8h.html',1,'']]] +]; diff --git a/software/doc/html/search/functions_0.html b/software/doc/html/search/functions_0.html new file mode 100644 index 0000000..4e6d87d --- /dev/null +++ b/software/doc/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/functions_0.js b/software/doc/html/search/functions_0.js new file mode 100644 index 0000000..9a988a9 --- /dev/null +++ b/software/doc/html/search/functions_0.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['osdequeue',['osDequeue',['../queues_8h.html#a0037677933e9d9d089327009032edf2c',1,'queues.c']]], + ['osenqueue',['osEnqueue',['../queues_8h.html#a78b4d06b91514e747007d1cc03029b44',1,'queues.c']]], + ['osexplainerror',['osExplainError',['../error_8h.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'error.c']]], + ['osexplainwarning',['osExplainWarning',['../error_8h.html#a29238a23e284dd0a6278434447be4682',1,'error.c']]], + ['osheapbuild',['osHeapBuild',['../heap_8h.html#aba6f21f0421450da6531c7ea9f6976b5',1,'heap.c']]], + ['osheapextractmaximum',['osHeapExtractMaximum',['../heap_8h.html#a31002fadb05f80382c9714462dfb092e',1,'heap.c']]], + ['osheapheapify',['osHeapHeapify',['../heap_8h.html#a5a51c0aca53767d5038681cc649d5fa8',1,'heap.c']]], + ['osheapinit',['osHeapInit',['../heap_8h.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'heap.c']]], + ['osheapinsert',['osHeapInsert',['../heap_8h.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'heap.c']]], + ['osheapisempty',['osHeapIsEmpty',['../heap_8h.html#a999a4beae27d4c7085278724feeabbc1',1,'heap.c']]], + ['osheapmaximum',['osHeapMaximum',['../heap_8h.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'heap.c']]], + ['osheapprints',['osHeapPrintS',['../heap_8h.html#abfcd76f5650f218825578b0bd1652587',1,'heap.c']]], + ['ositoa',['osItoa',['../helpers_8h.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'helpers.c']]], + ['ospowint',['osPowInt',['../helpers_8h.html#a8f7c8ca9321d4fa5a07c09b42120cab9',1,'helpers.h']]], + ['osprintalltasks',['osPrintAllTasks',['../scheduler_8h.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'scheduler.c']]], + ['osprinterror',['osPrintError',['../error_8h.html#a540c46d0a32421cad29354147a02c4ea',1,'error.c']]], + ['osprintf',['osPrintf',['../printf_8h.html#ae2b707b3f94f0857c447e83c833b068a',1,'printf.c']]], + ['osprinttask',['osPrintTask',['../scheduler_8h.html#acd27cd0dcb4e193125968decdd238ff9',1,'scheduler.c']]], + ['osprintwarning',['osPrintWarning',['../error_8h.html#a8ea68ece7fa351c9c046006749706e26',1,'error.c']]], + ['osqinit',['osQInit',['../queues_8h.html#a164dd36f8a083fd39b238b6d05910320',1,'queues.c']]], + ['osrunscheduler',['osRunScheduler',['../scheduler_8h.html#ada28e10d8b44223004cab16b201df2d7',1,'scheduler.c']]], + ['osschedulergetsyst',['osSchedulerGetSysT',['../scheduler_8h.html#ac59673f226b3291f835a0faf010ad409',1,'scheduler.c']]], + ['ostaskcreate',['osTaskCreate',['../scheduler_8h.html#a76739fd1872ff1f867ea41e853131a21',1,'scheduler.c']]], + ['ostaskdelay',['osTaskDelay',['../scheduler_8h.html#ae1e7565174265c0107749d7cdf486c01',1,'scheduler.c']]], + ['ostaskdelayuntil',['osTaskDelayUntil',['../scheduler_8h.html#ae4c7af5e41838a9299b00d455fb8f454',1,'scheduler.c']]], + ['ostaskdelete',['osTaskDelete',['../scheduler_8h.html#a790ca9c0d2362305790eb3c4002e3da9',1,'scheduler.c']]] +]; diff --git a/software/doc/html/search/functions_1.html b/software/doc/html/search/functions_1.html new file mode 100644 index 0000000..b343e2d --- /dev/null +++ b/software/doc/html/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/functions_1.js b/software/doc/html/search/functions_1.js new file mode 100644 index 0000000..5da7a32 --- /dev/null +++ b/software/doc/html/search/functions_1.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['osdequeue',['osDequeue',['../queues_8c.html#a0037677933e9d9d089327009032edf2c',1,'osDequeue(osQUEUE_t *q, void *data): queues.c'],['../queues_8h.html#a0037677933e9d9d089327009032edf2c',1,'osDequeue(osQUEUE_t *q, void *data): queues.c']]], + ['osenqueue',['osEnqueue',['../queues_8c.html#a78b4d06b91514e747007d1cc03029b44',1,'osEnqueue(osQUEUE_t *q, void *data): queues.c'],['../queues_8h.html#a78b4d06b91514e747007d1cc03029b44',1,'osEnqueue(osQUEUE_t *q, void *data): queues.c']]], + ['osexplainerror',['osExplainError',['../error_8c.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'osExplainError(const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage): error.c'],['../error_8h.html#af770cfb23cba6e7aa7c69aad1bbf968c',1,'osExplainError(const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage): error.c']]], + ['osexplainwarning',['osExplainWarning',['../error_8c.html#a29238a23e284dd0a6278434447be4682',1,'osExplainWarning(const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage): error.c'],['../error_8h.html#a29238a23e284dd0a6278434447be4682',1,'osExplainWarning(const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage): error.c']]], + ['osheapbuild',['osHeapBuild',['../heap_8c.html#aba6f21f0421450da6531c7ea9f6976b5',1,'osHeapBuild(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#aba6f21f0421450da6531c7ea9f6976b5',1,'osHeapBuild(osHeapNode_t *ioarray): heap.c']]], + ['osheapextractmaximum',['osHeapExtractMaximum',['../heap_8c.html#a31002fadb05f80382c9714462dfb092e',1,'osHeapExtractMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c'],['../heap_8h.html#a31002fadb05f80382c9714462dfb092e',1,'osHeapExtractMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c']]], + ['osheapheapify',['osHeapHeapify',['../heap_8c.html#a5a51c0aca53767d5038681cc649d5fa8',1,'osHeapHeapify(osHeapNode_t *ioarray, uint8_t iind): heap.c'],['../heap_8h.html#a5a51c0aca53767d5038681cc649d5fa8',1,'osHeapHeapify(osHeapNode_t *ioarray, uint8_t iind): heap.c']]], + ['osheapinit',['osHeapInit',['../heap_8c.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'osHeapInit(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#ae4c24d26f4411ab5492a2cc8dd5a4e7c',1,'osHeapInit(osHeapNode_t *ioarray): heap.c']]], + ['osheapinsert',['osHeapInsert',['../heap_8c.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'osHeapInsert(osHeapNode_t *ioarray, osHeapNode_t x): heap.c'],['../heap_8h.html#ab5c1d9c908e7d618bd5869f6e0ed16c5',1,'osHeapInsert(osHeapNode_t *ioarray, osHeapNode_t x): heap.c']]], + ['osheapisempty',['osHeapIsEmpty',['../heap_8c.html#a999a4beae27d4c7085278724feeabbc1',1,'osHeapIsEmpty(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#a999a4beae27d4c7085278724feeabbc1',1,'osHeapIsEmpty(osHeapNode_t *ioarray): heap.c']]], + ['osheapmaximum',['osHeapMaximum',['../heap_8c.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'osHeapMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c'],['../heap_8h.html#a2a73414cf2e4e1d2cebb4597a36bc018',1,'osHeapMaximum(osHeapNode_t *ioarray, osHeapNode_t *iomax): heap.c']]], + ['osheapprints',['osHeapPrintS',['../heap_8c.html#abfcd76f5650f218825578b0bd1652587',1,'osHeapPrintS(osHeapNode_t *ioarray): heap.c'],['../heap_8h.html#abfcd76f5650f218825578b0bd1652587',1,'osHeapPrintS(osHeapNode_t *ioarray): heap.c']]], + ['ositoa',['osItoa',['../helpers_8c.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'osItoa(int iint, char *iochar, size_t ibuffsize, size_t *obuffsize): helpers.c'],['../helpers_8h.html#a47defb2893c0a5e4427dd9daf6d5057d',1,'osItoa(int iint, char *iochar, size_t ibuffsize, size_t *obuffsize): helpers.c']]], + ['ospowint',['osPowInt',['../helpers_8h.html#a8f7c8ca9321d4fa5a07c09b42120cab9',1,'helpers.h']]], + ['osprintalltasks',['osPrintAllTasks',['../scheduler_8c.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'osPrintAllTasks(void): scheduler.c'],['../scheduler_8h.html#ad4967a4ccbd9e8901a1d79a9ee3ca79b',1,'osPrintAllTasks(void): scheduler.c']]], + ['osprinterror',['osPrintError',['../error_8c.html#a540c46d0a32421cad29354147a02c4ea',1,'osPrintError(const char *ifile, const int iline, const osError_t ierror): error.c'],['../error_8h.html#a540c46d0a32421cad29354147a02c4ea',1,'osPrintError(const char *ifile, const int iline, const osError_t ierror): error.c']]], + ['osprintf',['osPrintf',['../printf_8c.html#ae2b707b3f94f0857c447e83c833b068a',1,'osPrintf(const char *iformat,...): printf.c'],['../printf_8h.html#ae2b707b3f94f0857c447e83c833b068a',1,'osPrintf(const char *iformat,...): printf.c']]], + ['osprinttask',['osPrintTask',['../scheduler_8c.html#acd27cd0dcb4e193125968decdd238ff9',1,'osPrintTask(uint8_t iindex): scheduler.c'],['../scheduler_8h.html#acd27cd0dcb4e193125968decdd238ff9',1,'osPrintTask(uint8_t iindex): scheduler.c']]], + ['osprintwarning',['osPrintWarning',['../error_8c.html#adeb03b63a59cac38dbdc0e3963d9d479',1,'osPrintWarning(const char *ifile, const int iline, const osWarning_t iwarning): error.c'],['../error_8h.html#a8ea68ece7fa351c9c046006749706e26',1,'osPrintWarning(const char *ifile, const int iline, const osWarning_t ierror): error.c']]], + ['osqinit',['osQInit',['../queues_8c.html#a164dd36f8a083fd39b238b6d05910320',1,'osQInit(osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart): queues.c'],['../queues_8h.html#a164dd36f8a083fd39b238b6d05910320',1,'osQInit(osQUEUE_t *q, size_t ivarsize, uint16_t iqsize, void *istart): queues.c']]], + ['osrunscheduler',['osRunScheduler',['../scheduler_8c.html#ada28e10d8b44223004cab16b201df2d7',1,'osRunScheduler(void): scheduler.c'],['../scheduler_8h.html#ada28e10d8b44223004cab16b201df2d7',1,'osRunScheduler(void): scheduler.c']]], + ['osschedulergetsyst',['osSchedulerGetSysT',['../scheduler_8c.html#ac59673f226b3291f835a0faf010ad409',1,'osSchedulerGetSysT(void): scheduler.c'],['../scheduler_8h.html#ac59673f226b3291f835a0faf010ad409',1,'osSchedulerGetSysT(void): scheduler.c']]], + ['ossemaphorecreatebinary',['osSemaphoreCreateBinary',['../semaphore_8c.html#ace6c19a6c8803176ab54143941a6f53b',1,'semaphore.c']]], + ['ossemaphoregive',['osSemaphoreGive',['../semaphore_8c.html#a9e50e20add87bbd8724d789fa301fec9',1,'semaphore.c']]], + ['ossemaphoretake',['osSemaphoreTake',['../semaphore_8c.html#a753773d936c77e4dee7a7339fb2188e1',1,'semaphore.c']]], + ['ostaskcreate',['osTaskCreate',['../scheduler_8c.html#a76739fd1872ff1f867ea41e853131a21',1,'osTaskCreate(void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle): scheduler.c'],['../scheduler_8h.html#a76739fd1872ff1f867ea41e853131a21',1,'osTaskCreate(void(*ifnc_ptr)(void *), char *itask_name, void *iarguments, uint8_t ipriority, const osTCB_t *oTaskHandle): scheduler.c']]], + ['ostaskdelay',['osTaskDelay',['../scheduler_8c.html#ae1e7565174265c0107749d7cdf486c01',1,'osTaskDelay(uint8_t idelay): scheduler.c'],['../scheduler_8h.html#ae1e7565174265c0107749d7cdf486c01',1,'osTaskDelay(uint8_t idelay): scheduler.c']]], + ['ostaskdelayuntil',['osTaskDelayUntil',['../scheduler_8c.html#ae4c7af5e41838a9299b00d455fb8f454',1,'osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay): scheduler.c'],['../scheduler_8h.html#ae4c7af5e41838a9299b00d455fb8f454',1,'osTaskDelayUntil(uint32_t iwakeup_time, uint8_t idelay): scheduler.c']]], + ['ostaskdelete',['osTaskDelete',['../scheduler_8c.html#a790ca9c0d2362305790eb3c4002e3da9',1,'osTaskDelete(osTCB_t *iotask): scheduler.c'],['../scheduler_8h.html#a790ca9c0d2362305790eb3c4002e3da9',1,'osTaskDelete(osTCB_t *iotask): scheduler.c']]] +]; diff --git a/software/doc/html/search/functions_2.html b/software/doc/html/search/functions_2.html new file mode 100644 index 0000000..ecce2f3 --- /dev/null +++ b/software/doc/html/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/functions_2.js b/software/doc/html/search/functions_2.js new file mode 100644 index 0000000..69bb78e --- /dev/null +++ b/software/doc/html/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['systick_5fhandler',['SysTick_Handler',['../system__timer_8c.html#ab5e09814056d617c521549e542639b7e',1,'system_timer.c']]] +]; diff --git a/software/doc/html/search/functions_3.html b/software/doc/html/search/functions_3.html new file mode 100644 index 0000000..15f06ab --- /dev/null +++ b/software/doc/html/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/functions_3.js b/software/doc/html/search/functions_3.js new file mode 100644 index 0000000..b0a9839 --- /dev/null +++ b/software/doc/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['togglealiveled',['toggleAliveLED',['../system__timer_8c.html#af9e6109b87e10db9303be55cffb97498',1,'toggleAliveLED(void): system_timer.c'],['../system__timer_8h.html#af9e6109b87e10db9303be55cffb97498',1,'toggleAliveLED(void): system_timer.c']]] +]; diff --git a/software/doc/html/search/functions_4.html b/software/doc/html/search/functions_4.html new file mode 100644 index 0000000..8985ff2 --- /dev/null +++ b/software/doc/html/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/functions_4.js b/software/doc/html/search/functions_4.js new file mode 100644 index 0000000..75705f3 --- /dev/null +++ b/software/doc/html/search/functions_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['usart2_5firqhandler',['USART2_IRQHandler',['../usart_8c.html#a0ca6fd0e6f77921dd1123539857ba0a8',1,'usart.c']]], + ['usart2getstring',['usart2GetString',['../usart_8c.html#ae9015c84b756436a139ad5cee89e781e',1,'usart2GetString(uint8_t *word, size_t buff_size, size_t *string_size): usart.c'],['../usart_8h.html#ae9015c84b756436a139ad5cee89e781e',1,'usart2GetString(uint8_t *word, size_t buff_size, size_t *string_size): usart.c']]], + ['usart2init',['usart2Init',['../usart_8c.html#a7d08f26cbf4b00f400972b2df19bc78b',1,'usart2Init(void): usart.c'],['../usart_8h.html#a7d08f26cbf4b00f400972b2df19bc78b',1,'usart2Init(void): usart.c']]], + ['usart2putstring',['usart2PutString',['../usart_8c.html#af67798b30466ae997de23584f384595e',1,'usart2PutString(uint8_t *word, size_t size): usart.c'],['../usart_8h.html#af67798b30466ae997de23584f384595e',1,'usart2PutString(uint8_t *word, size_t size): usart.c']]] +]; diff --git a/software/doc/html/search/mag_sel.png b/software/doc/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/software/doc/html/search/nomatches.html b/software/doc/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/software/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/software/doc/html/search/search.css b/software/doc/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/software/doc/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 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 { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/software/doc/html/search/search.js b/software/doc/html/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/software/doc/html/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/software/doc/html/search/search_r.png b/software/doc/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/typedefs_0.js b/software/doc/html/search/typedefs_0.js new file mode 100644 index 0000000..2f711c4 --- /dev/null +++ b/software/doc/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['osheapnode_5ft',['osHeapNode_t',['../ostypes_8h.html#a7b59ec4a57312624d7d832ba4a8e04be',1,'ostypes.h']]] +]; diff --git a/software/doc/html/search/variables_0.html b/software/doc/html/search/variables_0.html new file mode 100644 index 0000000..74ce807 --- /dev/null +++ b/software/doc/html/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_0.js b/software/doc/html/search/variables_0.js new file mode 100644 index 0000000..eed867d --- /dev/null +++ b/software/doc/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['arguments',['arguments',['../structos_t_c_b__t.html#ab019aab8795fa409075f1956083bfd62',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/variables_1.html b/software/doc/html/search/variables_1.html new file mode 100644 index 0000000..84237b6 --- /dev/null +++ b/software/doc/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_1.js b/software/doc/html/search/variables_1.js new file mode 100644 index 0000000..9ea209e --- /dev/null +++ b/software/doc/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data',['data',['../structos_semaphore_handle__t.html#a325819a8e492ac69542e8b31705af6e9',1,'osSemaphoreHandle_t']]] +]; diff --git a/software/doc/html/search/variables_2.html b/software/doc/html/search/variables_2.html new file mode 100644 index 0000000..5c9de1a --- /dev/null +++ b/software/doc/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_2.js b/software/doc/html/search/variables_2.js new file mode 100644 index 0000000..526aa00 --- /dev/null +++ b/software/doc/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fnc_5fptr',['fnc_ptr',['../structos_t_c_b__t.html#aa99c587c00df01f56baf5c6e46c46361',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/variables_3.html b/software/doc/html/search/variables_3.html new file mode 100644 index 0000000..f95e34c --- /dev/null +++ b/software/doc/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_3.js b/software/doc/html/search/variables_3.js new file mode 100644 index 0000000..7badd0a --- /dev/null +++ b/software/doc/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['name',['name',['../structos_t_c_b__t.html#a053fb83c9604d11fa3b97113a1cee7c9',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/variables_4.html b/software/doc/html/search/variables_4.html new file mode 100644 index 0000000..d7db285 --- /dev/null +++ b/software/doc/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_4.js b/software/doc/html/search/variables_4.js new file mode 100644 index 0000000..c25d331 --- /dev/null +++ b/software/doc/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['priority',['priority',['../structos_t_c_b__t.html#a0ad043071ccc7a261d79a759dc9c6f0c',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/variables_5.html b/software/doc/html/search/variables_5.html new file mode 100644 index 0000000..7bbceeb --- /dev/null +++ b/software/doc/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_5.js b/software/doc/html/search/variables_5.js new file mode 100644 index 0000000..3987299 --- /dev/null +++ b/software/doc/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['qsize',['qsize',['../structos_q_u_e_u_e__t.html#a26e55a22aa50bdfb7c20f344c19d4dd5',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/search/variables_6.html b/software/doc/html/search/variables_6.html new file mode 100644 index 0000000..4eb162d --- /dev/null +++ b/software/doc/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_6.js b/software/doc/html/search/variables_6.js new file mode 100644 index 0000000..ac4472f --- /dev/null +++ b/software/doc/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5fp',['read_p',['../structos_q_u_e_u_e__t.html#a5c0e2590217d519484e519a510f4ff23',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/search/variables_7.html b/software/doc/html/search/variables_7.html new file mode 100644 index 0000000..0408829 --- /dev/null +++ b/software/doc/html/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_7.js b/software/doc/html/search/variables_7.js new file mode 100644 index 0000000..347a27b --- /dev/null +++ b/software/doc/html/search/variables_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['start',['start',['../structos_q_u_e_u_e__t.html#a53255b934b07b472175fbb8e847f9b5d',1,'osQUEUE_t']]], + ['state',['state',['../structos_t_c_b__t.html#a602c451f173294fef0097bb86d082602',1,'osTCB_t']]] +]; diff --git a/software/doc/html/search/variables_8.html b/software/doc/html/search/variables_8.html new file mode 100644 index 0000000..d54d096 --- /dev/null +++ b/software/doc/html/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_8.js b/software/doc/html/search/variables_8.js new file mode 100644 index 0000000..28966f1 --- /dev/null +++ b/software/doc/html/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['type',['type',['../structos_semaphore_handle__t.html#a5a84f06656d71ab4080d24ca01c6507f',1,'osSemaphoreHandle_t']]] +]; diff --git a/software/doc/html/search/variables_9.html b/software/doc/html/search/variables_9.html new file mode 100644 index 0000000..234dc60 --- /dev/null +++ b/software/doc/html/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_9.js b/software/doc/html/search/variables_9.js new file mode 100644 index 0000000..a9ad446 --- /dev/null +++ b/software/doc/html/search/variables_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['varsize',['varsize',['../structos_q_u_e_u_e__t.html#a83564fccea0d26714ccba07901241089',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/search/variables_a.html b/software/doc/html/search/variables_a.html new file mode 100644 index 0000000..0892488 --- /dev/null +++ b/software/doc/html/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/software/doc/html/search/variables_a.js b/software/doc/html/search/variables_a.js new file mode 100644 index 0000000..24f0979 --- /dev/null +++ b/software/doc/html/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wake_5fup',['wake_up',['../structos_t_c_b__t.html#aabdd8be14846d97f622cacdbdaaa5925',1,'osTCB_t']]], + ['write_5fp',['write_p',['../structos_q_u_e_u_e__t.html#a418b6d1612eff43ba60ed8014917d7b1',1,'osQUEUE_t']]] +]; diff --git a/software/doc/html/semaphore_8c.html b/software/doc/html/semaphore_8c.html new file mode 100644 index 0000000..04129be --- /dev/null +++ b/software/doc/html/semaphore_8c.html @@ -0,0 +1,153 @@ + + + + + + + +EmbeddedEtcher: os/semaphore.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
semaphore.c File Reference
+
+
+
#include "ostypes.h"
+
+Include dependency graph for semaphore.c:
+
+
+ + + + +
+
+ + + + + + + +

+Functions

osSemaphoreHandle_t osSemaphoreCreateBinary (void)
 
uint8_t osSemaphoreTake (osSemaphore_t *isemaphore)
 
void osSemaphoreGive ()
 
+

Function Documentation

+ +

◆ osSemaphoreCreateBinary()

+ +
+
+ + + + + + + + +
osSemaphoreHandle_t osSemaphoreCreateBinary (void )
+
+ +
+
+ +

◆ osSemaphoreGive()

+ +
+
+ + + + + + + +
void osSemaphoreGive ()
+
+ +
+
+ +

◆ osSemaphoreTake()

+ +
+
+ + + + + + + + +
uint8_t osSemaphoreTake (osSemaphore_t * isemaphore)
+
+ +
+
+
+ + + + diff --git a/software/doc/html/semaphore_8c__incl.map b/software/doc/html/semaphore_8c__incl.map new file mode 100644 index 0000000..128a0d7 --- /dev/null +++ b/software/doc/html/semaphore_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/semaphore_8c__incl.md5 b/software/doc/html/semaphore_8c__incl.md5 new file mode 100644 index 0000000..96a0e15 --- /dev/null +++ b/software/doc/html/semaphore_8c__incl.md5 @@ -0,0 +1 @@ +85d6d653c57da6413c9b042a06ae79b3 \ No newline at end of file diff --git a/software/doc/html/semaphore_8c__incl.png b/software/doc/html/semaphore_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..97a887c9ed56d2a30814b3e64c3d2986c76dd3ac GIT binary patch literal 6912 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/semaphore_8h.html b/software/doc/html/semaphore_8h.html new file mode 100644 index 0000000..7e404d8 --- /dev/null +++ b/software/doc/html/semaphore_8h.html @@ -0,0 +1,107 @@ + + + + + + + +EmbeddedEtcher: os/semaphore.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
semaphore.h File Reference
+
+
+ +

Mechanisms to prevent race conditions for the operating system. +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Mechanisms to prevent race conditions for the operating system.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+
+
+ + + + diff --git a/software/doc/html/semaphore_8h_source.html b/software/doc/html/semaphore_8h_source.html new file mode 100644 index 0000000..45c9b0a --- /dev/null +++ b/software/doc/html/semaphore_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +EmbeddedEtcher: os/semaphore.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
semaphore.h
+
+
+Go to the documentation of this file.
1 
9 #ifndef OS_SEMAPHORE_H_
10 #define OS_SEMAPHORE_H_
11 
12 
13 
14 #endif /* OS_SEMAPHORE_H_ */
+
+ + + + diff --git a/software/doc/html/splitbar.png b/software/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/software/doc/html/structos_q_u_e_u_e__t-members.html b/software/doc/html/structos_q_u_e_u_e__t-members.html new file mode 100644 index 0000000..9ea01ea --- /dev/null +++ b/software/doc/html/structos_q_u_e_u_e__t-members.html @@ -0,0 +1,81 @@ + + + + + + + +EmbeddedEtcher: Member List + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
osQUEUE_t Member List
+
+
+ +

This is the complete list of members for osQUEUE_t, including all inherited members.

+ + + + + + +
qsize (defined in osQUEUE_t)osQUEUE_t
read_p (defined in osQUEUE_t)osQUEUE_t
start (defined in osQUEUE_t)osQUEUE_t
varsize (defined in osQUEUE_t)osQUEUE_t
write_p (defined in osQUEUE_t)osQUEUE_t
+ + + + diff --git a/software/doc/html/structos_q_u_e_u_e__t.html b/software/doc/html/structos_q_u_e_u_e__t.html new file mode 100644 index 0000000..9eb630d --- /dev/null +++ b/software/doc/html/structos_q_u_e_u_e__t.html @@ -0,0 +1,126 @@ + + + + + + + +EmbeddedEtcher: osQUEUE_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
osQUEUE_t Struct Reference
+
+
+ +

#include <ostypes.h>

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

+Data Fields

+uint8_t write_p
 
+uint8_t read_p
 
+size_t varsize
 
+uint16_t qsize
 
+void * start
 
+

Detailed Description

+

Data type holds a void pointer to an array to be able to use the queues for many data types.

+

The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/software/doc/html/structos_q_u_e_u_e__t.js b/software/doc/html/structos_q_u_e_u_e__t.js new file mode 100644 index 0000000..3585300 --- /dev/null +++ b/software/doc/html/structos_q_u_e_u_e__t.js @@ -0,0 +1,8 @@ +var structos_q_u_e_u_e__t = +[ + [ "qsize", "structos_q_u_e_u_e__t.html#a26e55a22aa50bdfb7c20f344c19d4dd5", null ], + [ "read_p", "structos_q_u_e_u_e__t.html#a5c0e2590217d519484e519a510f4ff23", null ], + [ "start", "structos_q_u_e_u_e__t.html#a53255b934b07b472175fbb8e847f9b5d", null ], + [ "varsize", "structos_q_u_e_u_e__t.html#a83564fccea0d26714ccba07901241089", null ], + [ "write_p", "structos_q_u_e_u_e__t.html#a418b6d1612eff43ba60ed8014917d7b1", null ] +]; \ No newline at end of file diff --git a/software/doc/html/structos_semaphore_handle__t-members.html b/software/doc/html/structos_semaphore_handle__t-members.html new file mode 100644 index 0000000..3aabae7 --- /dev/null +++ b/software/doc/html/structos_semaphore_handle__t-members.html @@ -0,0 +1,78 @@ + + + + + + + +EmbeddedEtcher: Member List + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
osSemaphoreHandle_t Member List
+
+
+ +

This is the complete list of members for osSemaphoreHandle_t, including all inherited members.

+ + + +
data (defined in osSemaphoreHandle_t)osSemaphoreHandle_t
type (defined in osSemaphoreHandle_t)osSemaphoreHandle_t
+ + + + diff --git a/software/doc/html/structos_semaphore_handle__t.html b/software/doc/html/structos_semaphore_handle__t.html new file mode 100644 index 0000000..9002647 --- /dev/null +++ b/software/doc/html/structos_semaphore_handle__t.html @@ -0,0 +1,113 @@ + + + + + + + +EmbeddedEtcher: osSemaphoreHandle_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
osSemaphoreHandle_t Struct Reference
+
+
+ + + + + + +

+Data Fields

+osSemaphoreType_t type
 
+uint8_t data
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/software/doc/html/structos_semaphore_handle__t.js b/software/doc/html/structos_semaphore_handle__t.js new file mode 100644 index 0000000..956d6cf --- /dev/null +++ b/software/doc/html/structos_semaphore_handle__t.js @@ -0,0 +1,5 @@ +var structos_semaphore_handle__t = +[ + [ "data", "structos_semaphore_handle__t.html#a325819a8e492ac69542e8b31705af6e9", null ], + [ "type", "structos_semaphore_handle__t.html#a5a84f06656d71ab4080d24ca01c6507f", null ] +]; \ No newline at end of file diff --git a/software/doc/html/structos_t_c_b__t-members.html b/software/doc/html/structos_t_c_b__t-members.html new file mode 100644 index 0000000..f5d6c41 --- /dev/null +++ b/software/doc/html/structos_t_c_b__t-members.html @@ -0,0 +1,82 @@ + + + + + + + +EmbeddedEtcher: Member List + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
osTCB_t Member List
+
+
+ +

This is the complete list of members for osTCB_t, including all inherited members.

+ + + + + + + +
arguments (defined in osTCB_t)osTCB_t
fnc_ptr (defined in osTCB_t)osTCB_t
name (defined in osTCB_t)osTCB_t
priority (defined in osTCB_t)osTCB_t
state (defined in osTCB_t)osTCB_t
wake_up (defined in osTCB_t)osTCB_t
+ + + + diff --git a/software/doc/html/structos_t_c_b__t.html b/software/doc/html/structos_t_c_b__t.html new file mode 100644 index 0000000..9d0f613 --- /dev/null +++ b/software/doc/html/structos_t_c_b__t.html @@ -0,0 +1,129 @@ + + + + + + + +EmbeddedEtcher: osTCB_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
osTCB_t Struct Reference
+
+
+ +

#include <ostypes.h>

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

+Data Fields

+void(* fnc_ptr )(void *)
 
+char name [MAX_SIZE_TASK_NAME]
 
+void * arguments
 
+uint8_t priority
 
+osTaskState_t state
 
+uint32_t wake_up
 
+

Detailed Description

+

Struct representing the task control block.

+

The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/software/doc/html/structos_t_c_b__t.js b/software/doc/html/structos_t_c_b__t.js new file mode 100644 index 0000000..dd105a8 --- /dev/null +++ b/software/doc/html/structos_t_c_b__t.js @@ -0,0 +1,9 @@ +var structos_t_c_b__t = +[ + [ "arguments", "structos_t_c_b__t.html#ab019aab8795fa409075f1956083bfd62", null ], + [ "fnc_ptr", "structos_t_c_b__t.html#aa99c587c00df01f56baf5c6e46c46361", null ], + [ "name", "structos_t_c_b__t.html#a053fb83c9604d11fa3b97113a1cee7c9", null ], + [ "priority", "structos_t_c_b__t.html#a0ad043071ccc7a261d79a759dc9c6f0c", null ], + [ "state", "structos_t_c_b__t.html#a602c451f173294fef0097bb86d082602", null ], + [ "wake_up", "structos_t_c_b__t.html#aabdd8be14846d97f622cacdbdaaa5925", null ] +]; \ No newline at end of file diff --git a/software/doc/html/sync_off.png b/software/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/software/doc/html/sync_on.png b/software/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/software/doc/html/system__timer_8c.html b/software/doc/html/system__timer_8c.html new file mode 100644 index 0000000..6805c86 --- /dev/null +++ b/software/doc/html/system__timer_8c.html @@ -0,0 +1,179 @@ + + + + + + + +EmbeddedEtcher: platform/system_timer.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
system_timer.c File Reference
+
+
+
#include <stm32f10x.h>
+#include <stm32f10x_flash.h>
+#include <stm32f10x_rcc.h>
+#include "../os/scheduler.h"
+#include "../os/ossettings.h"
+
+Include dependency graph for system_timer.c:
+
+
+ + + + + +
+
+ + + + + + + + + +

+Functions

void initAliveLED (void)
 
void toggleAliveLED (void)
 
void initClock (void)
 
void SysTick_Handler (void)
 
+

Function Documentation

+ +

◆ initAliveLED()

+ +
+
+ + + + + + + + +
void initAliveLED (void )
+
+ +
+
+ +

◆ initClock()

+ +
+
+ + + + + + + + +
void initClock (void )
+
+ +
+
+ +

◆ SysTick_Handler()

+ +
+
+ + + + + + + + +
void SysTick_Handler (void )
+
+ +
+
+ +

◆ toggleAliveLED()

+ +
+
+ + + + + + + + +
void toggleAliveLED (void )
+
+ +
+
+
+ + + + diff --git a/software/doc/html/system__timer_8c__incl.map b/software/doc/html/system__timer_8c__incl.map new file mode 100644 index 0000000..e5833df --- /dev/null +++ b/software/doc/html/system__timer_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/software/doc/html/system__timer_8c__incl.md5 b/software/doc/html/system__timer_8c__incl.md5 new file mode 100644 index 0000000..e34249a --- /dev/null +++ b/software/doc/html/system__timer_8c__incl.md5 @@ -0,0 +1 @@ +88bf0c7a1e52b7ec8fcbf14aa3d03361 \ No newline at end of file diff --git a/software/doc/html/system__timer_8c__incl.png b/software/doc/html/system__timer_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc2d67eb230e8b9834a202fbebbbe6dfde65778 GIT binary patch literal 25951 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�H=M6TUg;1oTh) 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 R_>U + + + + + + +EmbeddedEtcher: platform/system_timer.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
system_timer.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

void initAliveLED (void)
 
void toggleAliveLED (void)
 
void initClock (void)
 
+

Function Documentation

+ +

◆ initAliveLED()

+ +
+
+ + + + + + + + +
void initAliveLED (void )
+
+ +
+
+ +

◆ initClock()

+ +
+
+ + + + + + + + +
void initClock (void )
+
+ +
+
+ +

◆ toggleAliveLED()

+ +
+
+ + + + + + + + +
void toggleAliveLED (void )
+
+ +
+
+
+ + + + diff --git a/software/doc/html/system__timer_8h__dep__incl.map b/software/doc/html/system__timer_8h__dep__incl.map new file mode 100644 index 0000000..c6fa960 --- /dev/null +++ b/software/doc/html/system__timer_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/software/doc/html/system__timer_8h__dep__incl.md5 b/software/doc/html/system__timer_8h__dep__incl.md5 new file mode 100644 index 0000000..da6f039 --- /dev/null +++ b/software/doc/html/system__timer_8h__dep__incl.md5 @@ -0,0 +1 @@ +f979dec846f1cc50a17ad3dce088a854 \ No newline at end of file diff --git a/software/doc/html/system__timer_8h__dep__incl.png b/software/doc/html/system__timer_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..eacb95ad97ea67e6f1aea499c6dd51b987678a29 GIT binary patch literal 3498 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 EKSYGMK>z>% literal 0 HcmV?d00001 diff --git a/software/doc/html/system__timer_8h_source.html b/software/doc/html/system__timer_8h_source.html new file mode 100644 index 0000000..a38a5a1 --- /dev/null +++ b/software/doc/html/system__timer_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +EmbeddedEtcher: platform/system_timer.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
system_timer.h
+
+
+
1 /*
2  * system_timer.h
3  *
4  * Created on: Dec 6, 2017
5  * Author: maximilian
6  */
7 
8 #ifndef PLATFORM_SYSTEM_TIMER_H_
9 #define PLATFORM_SYSTEM_TIMER_H_
10 
11 void initAliveLED(void);
12 void toggleAliveLED(void);
13 void initClock(void);
14 
15 #endif /* PLATFORM_SYSTEM_TIMER_H_ */
+
+ + + + diff --git a/software/doc/html/tab_a.png b/software/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/software/doc/html/tab_b.png b/software/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=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/software/doc/html/tabs.css b/software/doc/html/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/software/doc/html/tabs.css @@ -0,0 +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}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.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:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.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:rgba(162,162,162,0.1)}.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:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;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:url("tab_b.png");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:#283a5d 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:url("tab_s.png");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:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white 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 #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-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 #555;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:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;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 #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 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:url("tab_b.png")}.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:#fff}} \ No newline at end of file diff --git a/software/doc/html/usart_8c.html b/software/doc/html/usart_8c.html new file mode 100644 index 0000000..339ec30 --- /dev/null +++ b/software/doc/html/usart_8c.html @@ -0,0 +1,207 @@ + + + + + + + +EmbeddedEtcher: platform/usart.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
usart.c File Reference
+
+
+
#include "usart.h"
+#include "../os/queues.h"
+#include "stm32f10x_gpio.h"
+#include "stm32f10x_usart.h"
+#include "../os/error.h"
+
+Include dependency graph for usart.c:
+
+
+ + + + + + + +
+
+ + + + + + + + + +

+Functions

void usart2Init (void)
 
void USART2_IRQHandler (void)
 
uint8_t usart2PutString (uint8_t *word, size_t size)
 
uint8_t usart2GetString (uint8_t *word, size_t buff_size, size_t *string_size)
 
+

Function Documentation

+ +

◆ USART2_IRQHandler()

+ +
+
+ + + + + + + + +
void USART2_IRQHandler (void )
+
+ +
+
+ +

◆ usart2GetString()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t usart2GetString (uint8_t * word,
size_t buff_size,
size_t * string_size 
)
+
+ +
+
+ +

◆ usart2Init()

+ +
+
+ + + + + + + + +
void usart2Init (void )
+
+ +
+
+ +

◆ usart2PutString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t usart2PutString (uint8_t * word,
size_t size 
)
+
+ +
+
+
+ + + + diff --git a/software/doc/html/usart_8c__incl.map b/software/doc/html/usart_8c__incl.map new file mode 100644 index 0000000..af2a14e --- /dev/null +++ b/software/doc/html/usart_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/software/doc/html/usart_8c__incl.md5 b/software/doc/html/usart_8c__incl.md5 new file mode 100644 index 0000000..5fa7e6b --- /dev/null +++ b/software/doc/html/usart_8c__incl.md5 @@ -0,0 +1 @@ +b497ab9782b6d8de053acffabac5219c \ No newline at end of file diff --git a/software/doc/html/usart_8c__incl.png b/software/doc/html/usart_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..45e504c3d6ed72410d0bb5e3f1ac0b1c9dab220f GIT binary patch literal 25451 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 + + + + + + +EmbeddedEtcher: platform/usart.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
usart.h File Reference
+
+
+
#include "stm32f10x.h"
+#include <stdlib.h>
+
+Include dependency graph for usart.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define USART_QUEUE_SIZE   1024
 
+ + + + + + + +

+Functions

void usart2Init (void)
 
uint8_t usart2PutString (uint8_t *word, size_t size)
 
uint8_t usart2GetString (uint8_t *word, size_t buff_size, size_t *string_size)
 
+

Macro Definition Documentation

+ +

◆ USART_QUEUE_SIZE

+ +
+
+ + + + +
#define USART_QUEUE_SIZE   1024
+
+ +
+
+

Function Documentation

+ +

◆ usart2GetString()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t usart2GetString (uint8_t * word,
size_t buff_size,
size_t * string_size 
)
+
+ +
+
+ +

◆ usart2Init()

+ +
+
+ + + + + + + + +
void usart2Init (void )
+
+ +
+
+ +

◆ usart2PutString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint8_t usart2PutString (uint8_t * word,
size_t size 
)
+
+ +
+
+
+ + + + diff --git a/software/doc/html/usart_8h__dep__incl.map b/software/doc/html/usart_8h__dep__incl.map new file mode 100644 index 0000000..3403d15 --- /dev/null +++ b/software/doc/html/usart_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/software/doc/html/usart_8h__dep__incl.md5 b/software/doc/html/usart_8h__dep__incl.md5 new file mode 100644 index 0000000..1e01a5f --- /dev/null +++ b/software/doc/html/usart_8h__dep__incl.md5 @@ -0,0 +1 @@ +5e15b36d329ad1e080244de4d6e6d8fc \ No newline at end of file diff --git a/software/doc/html/usart_8h__dep__incl.png b/software/doc/html/usart_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..50f0e88b81135320d3c2bf48b390820913ce78ec GIT binary patch literal 5350 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 JRLGeH{SRQhT8RJv literal 0 HcmV?d00001 diff --git a/software/doc/html/usart_8h__incl.map b/software/doc/html/usart_8h__incl.map new file mode 100644 index 0000000..64ea2a6 --- /dev/null +++ b/software/doc/html/usart_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/software/doc/html/usart_8h__incl.md5 b/software/doc/html/usart_8h__incl.md5 new file mode 100644 index 0000000..af5baa1 --- /dev/null +++ b/software/doc/html/usart_8h__incl.md5 @@ -0,0 +1 @@ +5468794ba0c9ded0f98f0504d80e9910 \ No newline at end of file diff --git a/software/doc/html/usart_8h__incl.png b/software/doc/html/usart_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf97056a85afcb2282b0938b7b31b6f114d5572 GIT binary patch literal 4939 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 literal 0 HcmV?d00001 diff --git a/software/doc/html/usart_8h_source.html b/software/doc/html/usart_8h_source.html new file mode 100644 index 0000000..cf0bb8d --- /dev/null +++ b/software/doc/html/usart_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +EmbeddedEtcher: platform/usart.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
EmbeddedEtcher +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
usart.h
+
+
+
1 /*
2  * usart.h
3  *
4  * Created on: Dec 6, 2017
5  * Author: maximilian
6  */
7 
8 #ifndef PLATFORM_USART_H_
9 #define PLATFORM_USART_H_
10 
11 #include "stm32f10x.h"
12 #include <stdlib.h>
13 
14 #define USART_QUEUE_SIZE 1024
15 
16 void usart2Init(void);
17 uint8_t usart2PutString(uint8_t* word, size_t size);
18 uint8_t usart2GetString(uint8_t* word, size_t buff_size, size_t *string_size);
19 
20 #endif /* PLATFORM_USART_H_ */
+
+ + + + diff --git a/software/doc/latex/Makefile b/software/doc/latex/Makefile new file mode 100644 index 0000000..8cc3866 --- /dev/null +++ b/software/doc/latex/Makefile @@ -0,0 +1,21 @@ +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + pdflatex refman + makeindex refman.idx + pdflatex refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + pdflatex refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/software/doc/latex/annotated.tex b/software/doc/latex/annotated.tex new file mode 100644 index 0000000..da8154f --- /dev/null +++ b/software/doc/latex/annotated.tex @@ -0,0 +1,6 @@ +\section{Data Structures} +Here are the data structures with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} }{\pageref{structos_q_u_e_u_e__t}}{} +\item\contentsline{section}{\hyperlink{structos_semaphore_handle__t}{os\+Semaphore\+Handle\+\_\+t} }{\pageref{structos_semaphore_handle__t}}{} +\item\contentsline{section}{\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} }{\pageref{structos_t_c_b__t}}{} +\end{DoxyCompactList} diff --git a/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d.tex b/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d.tex new file mode 100644 index 0000000..28412e0 --- /dev/null +++ b/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d.tex @@ -0,0 +1,23 @@ +\hypertarget{dir_8b7cb6c889a10e2a101a7e90c854ca4d}{}\section{os Directory Reference} +\label{dir_8b7cb6c889a10e2a101a7e90c854ca4d}\index{os Directory Reference@{os Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{error_8h}{error.\+h} +\begin{DoxyCompactList}\small\item\em Error logging functionalities of the operating system. \end{DoxyCompactList}\item +file \hyperlink{heap_8h}{heap.\+h} +\begin{DoxyCompactList}\small\item\em Heap implementation for the tasks of the operating system. \end{DoxyCompactList}\item +file \hyperlink{helpers_8h}{helpers.\+h} +\begin{DoxyCompactList}\small\item\em Functions, which one needs here and there for the operating system. \end{DoxyCompactList}\item +file \hyperlink{ossettings_8h}{ossettings.\+h} +\begin{DoxyCompactList}\small\item\em File where all settings take place. \end{DoxyCompactList}\item +file \hyperlink{ostypes_8h}{ostypes.\+h} +\begin{DoxyCompactList}\small\item\em Different types the operating system uses are defined here. \end{DoxyCompactList}\item +file \hyperlink{printf_8h}{printf.\+h} +\begin{DoxyCompactList}\small\item\em Lightweight version of G\+NU printf. \end{DoxyCompactList}\item +file \hyperlink{queues_8h}{queues.\+h} +\begin{DoxyCompactList}\small\item\em Implementation for queues. \end{DoxyCompactList}\item +file \hyperlink{scheduler_8h}{scheduler.\+h} +\begin{DoxyCompactList}\small\item\em Scheduler of the operating system. \end{DoxyCompactList}\item +file \hyperlink{semaphore_8h}{semaphore.\+h} +\begin{DoxyCompactList}\small\item\em Mechanisms to prevent race conditions for the operating system. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 b/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 new file mode 100644 index 0000000..6842b14 --- /dev/null +++ b/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.md5 @@ -0,0 +1 @@ +b6395b64cedf3741a0ff9a0a684b593b \ No newline at end of file diff --git a/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.pdf b/software/doc/latex/dir_8b7cb6c889a10e2a101a7e90c854ca4d_dep.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0ef1f35db8e58878d4d9b2c199f4590d0fb8aa34 GIT binary patch literal 11659 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\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
 ... 
+\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}{% + \par% + \scriptsize% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}{% + \DoxyCode% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
    ...
) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
    ...
) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
...
) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{list}{}{% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \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} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \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} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \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} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \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} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/software/doc/latex/error_8c.tex b/software/doc/latex/error_8c.tex new file mode 100644 index 0000000..90d97ad --- /dev/null +++ b/software/doc/latex/error_8c.tex @@ -0,0 +1,122 @@ +\hypertarget{error_8c}{}\section{os/error.c File Reference} +\label{error_8c}\index{os/error.\+c@{os/error.\+c}} +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include $<$stdint.\+h$>$}\newline +{\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}helpers.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline +Include dependency graph for error.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{error_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \hyperlink{error_8c_af770cfb23cba6e7aa7c69aad1bbf968c}{os\+Explain\+Error} (const char $\ast$ifile, const uint8\+\_\+t iline, const \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t} ierror, char $\ast$iomessage) +\item +uint8\+\_\+t \hyperlink{error_8c_a540c46d0a32421cad29354147a02c4ea}{os\+Print\+Error} (const char $\ast$ifile, const int iline, const \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t} ierror) +\item +uint8\+\_\+t \hyperlink{error_8c_a29238a23e284dd0a6278434447be4682}{os\+Explain\+Warning} (const char $\ast$ifile, const uint8\+\_\+t iline, const \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t} ierror, char $\ast$iomessage) +\item +uint8\+\_\+t \hyperlink{error_8c_adeb03b63a59cac38dbdc0e3963d9d479}{os\+Print\+Warning} (const char $\ast$ifile, const int iline, const \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t} iwarning) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{error_8c_af770cfb23cba6e7aa7c69aad1bbf968c}\label{error_8c_af770cfb23cba6e7aa7c69aad1bbf968c}} +\index{error.\+c@{error.\+c}!os\+Explain\+Error@{os\+Explain\+Error}} +\index{os\+Explain\+Error@{os\+Explain\+Error}!error.\+c@{error.\+c}} +\subsubsection{\texorpdfstring{os\+Explain\+Error()}{osExplainError()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Explain\+Error (\begin{DoxyParamCaption}\item[{const char $\ast$}]{ifile, }\item[{const uint8\+\_\+t}]{iline, }\item[{const \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t}}]{ierror, }\item[{char $\ast$}]{iomessage }\end{DoxyParamCaption})} + +Creating a error message string from inter alia an error code. + + +\begin{DoxyParams}{Parameters} +{\em ifile} & Filename where error occurs. \\ +\hline +{\em iline} & Line where error occurs. \\ +\hline +{\em ierror} & Error code. \\ +\hline +{\em message} & Message related to the error. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{error_8c_a29238a23e284dd0a6278434447be4682}\label{error_8c_a29238a23e284dd0a6278434447be4682}} +\index{error.\+c@{error.\+c}!os\+Explain\+Warning@{os\+Explain\+Warning}} +\index{os\+Explain\+Warning@{os\+Explain\+Warning}!error.\+c@{error.\+c}} +\subsubsection{\texorpdfstring{os\+Explain\+Warning()}{osExplainWarning()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Explain\+Warning (\begin{DoxyParamCaption}\item[{const char $\ast$}]{ifile, }\item[{const uint8\+\_\+t}]{iline, }\item[{const \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t}}]{ierror, }\item[{char $\ast$}]{iomessage }\end{DoxyParamCaption})} + +Creating a warning message string from inter alia a warning code. + + +\begin{DoxyParams}{Parameters} +{\em ifile} & Filename where warning occurs. \\ +\hline +{\em iline} & Line where warning occurs. \\ +\hline +{\em ierror} & Warning code. \\ +\hline +{\em message} & Message related to the warning. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{error_8c_a540c46d0a32421cad29354147a02c4ea}\label{error_8c_a540c46d0a32421cad29354147a02c4ea}} +\index{error.\+c@{error.\+c}!os\+Print\+Error@{os\+Print\+Error}} +\index{os\+Print\+Error@{os\+Print\+Error}!error.\+c@{error.\+c}} +\subsubsection{\texorpdfstring{os\+Print\+Error()}{osPrintError()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Print\+Error (\begin{DoxyParamCaption}\item[{const char $\ast$}]{ifile, }\item[{const int}]{iline, }\item[{const \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t}}]{ierror }\end{DoxyParamCaption})} + +Print error. This is where the error output can be redirected (later). + + +\begin{DoxyParams}{Parameters} +{\em ifile} & Filename where error occurs. \\ +\hline +{\em iline} & Line where error occurs. \\ +\hline +{\em ierror} & Error code. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{error_8c_adeb03b63a59cac38dbdc0e3963d9d479}\label{error_8c_adeb03b63a59cac38dbdc0e3963d9d479}} +\index{error.\+c@{error.\+c}!os\+Print\+Warning@{os\+Print\+Warning}} +\index{os\+Print\+Warning@{os\+Print\+Warning}!error.\+c@{error.\+c}} +\subsubsection{\texorpdfstring{os\+Print\+Warning()}{osPrintWarning()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Print\+Warning (\begin{DoxyParamCaption}\item[{const char $\ast$}]{ifile, }\item[{const int}]{iline, }\item[{const \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t}}]{ierror }\end{DoxyParamCaption})} + +Print warning. This is where the warning output can be redirected (later). + + +\begin{DoxyParams}{Parameters} +{\em ifile} & Filename where warning occurs. \\ +\hline +{\em iline} & Line where warning occurs. \\ +\hline +{\em ierror} & Warning code. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} diff --git a/software/doc/latex/error_8c__incl.md5 b/software/doc/latex/error_8c__incl.md5 new file mode 100644 index 0000000..27fe506 --- /dev/null +++ b/software/doc/latex/error_8c__incl.md5 @@ -0,0 +1 @@ +f26ede4cb78e1ab89ea1cb3912fb0b90 \ No newline at end of file diff --git a/software/doc/latex/error_8c__incl.pdf b/software/doc/latex/error_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97cb64bfe586c7909a2f724ebcc0bca0ffaa5d47 GIT binary patch literal 15242 zcmb_@WmH|uvMvrGxD#w8!JWXu-JRg>?(Xgo+&u&f?(XjH?(XjPAbTIX=Z-htk2hh? zNq?)PyQ-UlG3q1w&M!zsM-7A}sy;4xgrx`20xWe*VAD#=$&9v?G`So=z_4HvmIbm(>Z1lCwVVzQol?E-A1d*C9DRxNl7=E7o+?D4> zYU4(bgxJ!$TbqkdYqNwFzPQalP&SU6Cf9)V1F;dY4p>%~od!Ntuz%FVDCCjgvtWt0 z`kWO|YS~e`zWK%5Q*$+dghtls@%YYnR_q5=ME3ewsCWOX#|!f0Q+4(kn(RwCyQjC1 zj8n5PEEnYdhsu0LT(RA%)N7k0KDyrR>2DiYS#bxo7Btz8;juoO(}COl*8&Z~PLtEu z7f(l%_5Jg;mmjGNrL3kZnVQb8m(1`vmo)@mZwoIm6{QjgN^V5BVlgVDbs@V}QxB69 zffPc-Y#5htw^9+iz|F_!CmqavxQk_p$h_6PeyFU4*8ygcYmn|tg(m82qiTOd(z328 zU|*YU&S!sQU^Sq=H{(Z}U{N*nIIa->y8PYt>*@yjgCv^3W*%wo45=`_G+KzcVmH*Ri_F|ll-!*P9C-%jvzP{#r#KE6wYp$xxx z-6RJ>rj6&4ao!eMQ^O&5KOVU)s{n3{vn>_rcYw+^s4y1s~6j<^x~vHr8k3e8bd4%h#wej8Y%c1(A!ciI#J)Tnd%Ot_tIJvP>cyEsIe(6;<-dIa?Gyh z>B5YW)o)W3y0CorXggg&&R4$ie7gOK9P!0Bc8d_{u1|f?O4A>em2d-N62^4fkXc*$ zPC^C}A#l`kvqF@Cm5Dh&b68!$dgGiO2kK?p!18vFK{>F~3w-9p%U_Fia^NEymm<8w zXLJzJ9H8%I+5VboIQIQ_onAo{G1+kz-9lOIk1l0(T?mRw{C;$5EAAzEou7pvircMB zr|>9^wqW-`q4SW>noKf)mM6@>r;v{CH9XmuVCTQud{-LFB@hkPjM^BiM%%3h8JYsY zBS9!Xg9$ywEQilnh4f8B!ZVI@_jd+Al0SUgJ5nGMZpSEbmatEb^pV+67xroRfLoSU z!2qVv7FM@{W0!2sG-VKt=Tr0hvf5$b#A%7P zjO+oEq81#JOe4h_(*q-1fBvIe@sXx`=asl(L1T#HpeH_uHLCo>i)&|rC1L#x`YO&+ zq!Z24F*42)<*m)<}Jfrj-U1ju)}26PnhQ(p>G3_5IMKQx@wfAV6pq_ zc2&=Nu8ZOhVmOle9rT5E<8ebo91H9{aVs)z3mvWLJZwOT@qS@-`6yfAba3igo%D0{ z2f02-q<+3N8UefH`1HkVeeKBANQ-MtJD+vzg)XJ<**f=Jp!X+@l9K5aMe+LJpep!% zA|fyGQ(KNB!=Rrg{Enz?0=4b~sDq2C)p=W2z*mj+K&E!VT#T9J1E!*ll^%^2tk^}k z*Kf?gBdf9P3$uI77;xPV0Xw z*6(iqs_JwAIwm@nKTG-x_y(Y({l)_PH-!Fe>A?S}@5e6ka%zh;R3}Ib%xDmfh#0s& zVph3cV6eHQly#<7foms7?931eYZyx?FeebsdZ(@YX8-??KgYaZ6w0_CSy! zl(=!l$Bl^aa5(^4Vib9Rwbcj^sA0#2(4iqpPXT5~2ndkh_^&!3G62J}91gD&0YXyIE?2e)LSQ32XLEY2NkpqiVa^Y0UxMp$4nhNs83+Q639uFeBO+6B3FeDAoC4igrGs)fMl3ntDJujN|RI+flD z2;nM6L4pNs1ixaL``P8>(l_xxFr z1jJ#M%N<_p?$}hYjq7?o4)2#1{aB^`i@7*Bf=0NZ6z3}Qt5D~Q?`y63>uBnOs@O&C zgeJyw1o}YT+`F6{uR18wdab?23ESspc~#4NY4N>Y1Ax_lajJ z2nbtBGx*g#x>wf6DV#Gmg>er{HberiWn>6Yw#3))S8Nw}Eyo&2R@GgkP@%Fqb3Hgf~mNpIy;`eqbk2z zd8k1eyH^2BUdtDjk6^bor5`RlL$bU*U*S1t?eB2hN)GRs?$lr| z-X4ATmS@fdW37PM%8JL;waSWKf-?eD;~g+>c7i}I$*oJy*N>`R>CX^g^}a)67T^)u zG9D+*p9jL zO&Nyfvhw}tgYbq8pUEQt;C(q$kw8_owG#);b5Dd(>7|j*-pD7e`^rn{F{YIe-#xs8 z+8GPm`I7BZAx?fh&%V78s>>u$6jOzdmcCfxjK*v$avQR6-YiqW1Nl>d_7m7Lig2X? zkQ3*YPh{u;C4N9^r4GiGUP!3j!u-L%_f8k%cS|SU(L+RX{)yLZ6p`eD}A&YZ-@)4v^-mnO{FS{02VA%oT|ka_3}665hH* zGnD5O#cFapaoFNOT0qxk&57vWPMKAVP`Dt8x?%3Z5|N+EiVuzIO4W}Ska_7H{XR3o z&{X7kNMo3*_*Er66eUitQy+#6UTF3yaHe0AO;MT?o6U|j*V3=f;k=VQIPrQFe1n6< zzC|ibN%&Y3I(k0!=`Qvs1$DE~wS)nU2bnGn;XKXn3-Q!bhYy{I9)7!qw!q5U2zv|o z&6*A-Z8UjEECcU;-$`K9%@Ey6TUlwc?K$i;5S5cD?W)VBK^xesIzmDCNCw3GtO*Q* zkPs5NUyF66xD+PP{HCC0)zd3CbxLz1-6U<+mfRqd@~NEaUd5HNwl28ULbY>F@QXrV zU!Ujn%{11H#LU(@(u0Y&MS4-+Y=5m1u8@%hm*;*{C3#%L(dn7NoVSlrdGi=QvM2U= z(JnIg8JkiJEUtoUO%Xv*WXDMw?Z#nKyS-FYEck3k<*7KHBj+Jj1MlTD#^T4;YUCN+ zfxVUv45GlrmKgRs$FDE`<)n^Ssr4FZJdxd1A?@beZMch8-G(#zxkA zIvT1E0qV^a+}CzMw}TLRMRuOG=bi*YDMW)N5KL#Q&aRE&LKQZ_pSjDK7Pr{Njpvn^ z^fj_PZzv{Ib*RWZYUQ+&b=HoLg+owU9WuR$m7mj0Gq zpNklBS=&^68l-mpgy{GAv^%~AX0}79&dKDXq^${F2ZAP)gzn4W0P;COkZZ9AoG;s1vYliMfF*6ZKL^v$bohY za{Bv9d(F?;x^0i>$v+_w?eI;-diCW}ut-Q>rG;`+Xp*V)VCJf_;}0}!i-Pmo<>I0L z2yhTBSh-Y?z!_qNsBuUYki%XQZ64FxJ9~;*K8WRlKfIM(caJaA9f z=q$B=G^mcm@(eZm;22%N^(1=rWFCg=Zk8(`DMa}0Zb83oh4}Eqszh6OMw3+PJPpMo z;6vAu;3SDCJ`1nQo%Cy@cQ~eB;w6g}XTkT*WM#Dzf7a?mItAorbykh2?*|D(8MwiK zATi1VrO(o<3(R3lzi*GNAk%+7D~R|rgl_|6lzxa1bcn_A+c>$KUWkF``^L#AqvuR~ zqUpLy)9WZXMR1g)>OPx7PyeKyYQ;CHXCXfuXFik-VRD2lwk+~3L`Cp~T3XbJDWM>s z3Ny@hjcl@38HU7w!t=gSC4JxBd0P@Kr5n(y4j5BY3<|1W@SbnMW9k>vid88|3pkTs z=*&Iawn<{h%E9Nt-{P4NdcFagqQCZ!j}C({4K%Oxt8=Z9!l#5{;S20SAU0G56;0Ps zQbpfBYsET#pPmVJ$5RtY7Mf?HlwT?%$ozi8g9F`PJPH}Tx44&=1UyKFsl`AoK*Y{L zY@(~@xmV6Y6di{eXnv51ic3m3&V7iqJD<&IgW<^6KSe87`#LniQ|A(ZU8GF+!#O4! zRAUKQ_9H?JDQU}^y0uUlhHN*q=X{6yU2#vSl@JbG#URh~w3Hq5l%A6sYg4IC_}1K( z^nwR>IqGAN3*zoZOQj4&gX-QF9ZQ7J@Gq8Y(CXzbRzV{N7N={tN;QneX<1~~T!7~t|BTvcSjkAh zm7sJdogTB)t$bl4>d5!x8+l`g{-J>Iq9c)mHA;~Unc;2~0jD>Zs5Fs#O{rC~IIqNm z+9vo+U>t2Z@UQ}I{YG)EcQqr~UmUQL%?0Rl`D zR@n=1He>>`u`kRsn+%Hizfx;Q9fqyp!$R>MO2vJ280H*Bw%fBE${{pSM~*2dP~Wpd zL5zaS$%X#91LNS9g*@<4e_hb52cBYtQ6sd9<;1&^%gRy+r54=){rmzi91fiQsK=-+>Sk0 z)6n?bmorodRZF`lspt+tB%=8=T%?HFkhYi_?X5U<$AoT})eUOxqv=GiQe%$rn=lDA zp(njv5z;LdnT0(fe;4mB$Dr1WSI0?A9eG+*3ik9L9ror&m4$L!j7QibEplN3nJ_4n zUCdtG*^5!q;(u%72%^!b72prye~AlXxIP-+%d^(G{-}dQNtFyC9_E9a!{Qm5pw$wn zE25q2ijZAgoo;r&HB*LH>U?eClodI6T)xJ@25@z2@R-7n90#xJPu$h}kQSlxt*-_< zU{W4F-%Rb3iAm)!{)__{NsCd?MTAqac^#gRM0aE|6xe+%10{`$uY1Xd>-VYW_mw7rv;EtqqG04tG+rL|^i!txNeat;`qbzHCf;w%}QmvFG znP#gwQMkVSK^(;)-9D*pjyY$-O2S8Pw7|O!clQF5GDzbt^*y)SSu2xx5dF4$qak(& zK_g!^sUZUC>z8`}wrMmG@m%M)oNsg=p_i+2+%O5Rj>{kmLC=Ir2GtENuaWXEh(Se9 zEM{GzNNEzr8tobcX{=NrP=tjRh;uQMG;#I!+a~I#sZ(&)6qA70*A}ya0ar|hSpTid&c4qlap@ENE}2lr#aLvq{@fXE}2V;H#X*x8jWUSDKhlS zENG>}vFxro$#wlvfVQW;eWs9}AeWw^ei~Y6dk57X5rYbPvS#)6@t31X`i{$)jTG`O z>LGLF3oT$M#B2EuJHkjxiOiFJ`IqGmDA zRFSa6TCa~8tH4-N%PPYYbvS45^oDbiKK-j*60`d-Q8`IYtfzj9%q$3HMt_xIuHQRbC-qMFRz;oT%gXkAC$b|0JCqgem;CP~=r> zJN>na!LlSEOG5xN7;?-w8A*T*(}^hw2BrNN?}8|n@fg>o!xnji(6wx6f<8r;KQASR z-%mr(qwDw2<-(oxB}OxI#8MH~zKPF|FIkwaeqK;=TAx{E)kIR4(9aXu({zmP%jE6P z$5`>UpUxqTo5Mxb0(?9mWR!JMe$^Q(1CRWIPh)M4ewft-YK-`H-Rwmqb5es=4wvN^ zXxpTYS*Y055`Fu~ELoAF6P2(Qf$=TvH>yH<{2g%ER~kXJX~cUV=57l@de!m>IZVg- zBoNB2mS)qqKhWJv1g=3v0|C>~8v_25RKax=SKI`-b$)Vyt>H?qaOUSxJ=1k!OtCuo znyW|w@*PP>SY;G|dQ7jM#G~EpnbmbwoOR>DjY(@U3m}^pLz?lvorIoy>9_c6&boEH z`T|chK&J%#y0-!kYCTQt(UmJNe+0;XtY4b4No+6J;CI#h2Pl&XNbFR^PUnV+9L0+vwMB;daS=oeWrP(g7M|~<7^X3;L$Att5 zQ4M)R85&9bQE0Bxh%uz?Gw0GNWX|cwkp>keYTFoU$$I^hThG;nX`LG-w?-URNhxgb zT%$9XrDzO%ta#27OSnXpA6S}Xg7wfq6?3Rl4bdugJC+O(wMUPZ4t4Y_nGep&pi^1k zwS(IJqYjfJ_QTCLy^V=CM74qk8F+d3C!qFi^yj>?!sf}h17bdX*c7FEsojY5L5*2( zCpt~ac~og|_}7yN4^fXX(a4P5Lxm?-SPaS`s{wHetYM)oLaEOIx-3roFm_1QIx;lo z`*3_t)>(|Qg+gOw!LDh+%#Dbejaz|VZ=ICMoSpWZ*6YNMUn3ji?T01(y3X?zfQ9Ry zC!J6I+-2otl?h-s%`xl*Oy$Nn z%iFUnwJi`ewDnJ)tHnQvBXMRFZS43^0AktegK*GGlj&RKrSuX`&XPq2Y{?h4O1>v_aS}fV@_M&+mX@9=hRPn9abclWn#x^p zC!z{+3u}yo^b~VZDQUF&c6ELe;`Na!q@d+mWzJj5 zX)`KPt#+{gw(3w2J}Gqms9!pAFw0mL zqa1&nlKDujY+L!7lDnH&8T&5gWGhZ>CMuJ)L{KuCvw~8w)7DYX6rXji7a%-R)EXv0 zl4H>rnHbdWwLau#xHqPRmRrbO5sj#^Fh}wAB3uv$Wy?^^4_di-dTT@yphG&++#csU zO=?=K(M|l#^V*D$O?|r)EymQj*m$zJby$3fBy7)9gARE0-(kxnpRb_F8?SkEV76u&pSFwY|qmb0hmC+oaD^y zqm>Q}+v!a49{@=iRo}xVXw?|{jJ_Z9D*-nShKnaGZyr}K8~OU%q7>$)_)P8F|BIDT zLIRNdpQp*17XlEr2nelxzd$EO$YwpaE_R00@hs3^vA2+kU4?{;L$Huy*W^ycb_rPpRSu? zRF4InYbuBWOP`6g7t{2=cKkkzbgHv(VEb`v#0ilw$XJKZ@@@Ho>_KxBfs~5M>eKL< zk#KQD_i1YZCXy{N93O(Ael`_3lHESy3(ub(est%jZ;W9mk8$Zz6)Dj9pmRt5YQp5=gsMOPku z=|I%=^dZemGVs+j%2!QqpQ7{E!!te-R*VZ-?so;2_(GDN{*dnSHtjX5I zDPd7O*)SJvVb|->DY6T&^!kb@?E_J}Ki6&@Aw3B(5p!@H)rIW{b!y*k;(5S@v^Jdf zgdFoQ(gnkSjV3tRs@AMVvlrhaS)nhc{Ln$94;nr(tdp)K_z2(Tq2l&1>u9{3@YK z8z)Vd*R0LR2OS&fGU%L<+e9k`%h=YkhrHtkacwWslKSF0WK@4jN|rX}o?xb%u@lT`ZFH4bhid!NKjs0PRkWAHs?APkvqwPNj{ za^ie(W5-6%Fe&-bZeG8<`s9*2ez+IA3#C|`4(s-O_Ct0_ef_(C`P@l>c1*eg=b8)ed}Bc znjdn7$}i1C2ED2uPEQxzE!~NzP`Vzf)~NVS+0!50#;TKDPKh2{7tvtDm0W7V;Hk{U z1TifBlZ|$U#FL*<@r7E(a;?r$6E63PLP67QGGdbZ%Khc*mwqFNlH_Cnvh7%2&Nwdw zq97noWxJW2EE&!nl{Ggo)*A6a-;{Lq>LmCOcki;AvsTtECty=&5>U}_)sydA48Wh3 za`LCnCIF!nzP@7Gn|2~GrdVgJ^-#6=r8W&2LScK=bIz@AsJw*y)KoH#Ump$KUo9w0 zm}LN_5!<3HOkcPcVQu-ysHb{<9a+5%Go=h%ilV8_KamL34TJA6AZNmwHh%EEoowts zP^PS_J}DOdQPmfLI5fS6D0r&diIS0IR7`(*&^=v!ZWWo6u9162{`>mArL+b;zTLq0 z+wlt+_}UIV!Z>Xdn$WSxW#x2rR!f9ZO+CkFZceB2PjZ zfz9sh1dmJ^9j-Vf3!1fRWQzWU5FOQoH4d}WQ>r#u{H$=61u6Xmd&K1(LR3LVEMFai>gVsnEy73)emTf@30GuCwL#~o9uglz^y z!YO#4A}plaxK8`1;0IeIljV3X2qI6%IIqyEKC8nJaBTZ2%~+wYdx26vKy;{uW9czV zz~uXWjbZixQcnA9yUYOPRkY9n`+MfxAb+s^%L308 zW5UzOoy8rLPC4mT$cuRssdv*0p!rs)c5hJYeJm_aDCbrasuZJk51+@qjsB z*Ua=u*q^)UVLe0#wp*)S+xfE?JRK+&4#+F$q`UsQj=ggArgKh1Ltb%r{@XUu6 zjjnK{`UA~|@Db9|#hUZ@bYp!9xSPqOTBVbupI6(ga0%qon|^-PD!3zr1l!a2=z zubAFf$nn)=bmNh;7(Ts35i4OMzUd)bR|eL~>DW+-R@9(J&e)#o#Hqfr1SMnJ9tnjL z7kDg_4o+(LkS?F8WjZI!CjX;!df(2Lp6<2bn%xuSr&97~A2buLX0d{ZNm3O~e9L`C zeUaO(OCHC0Jjh{~b^e6TbRCS0@P$v{TpC4u-#>6*m9(X_SKdxK%0&=+lz{0nxI}Vp z*>VgDu@;t_K%M}gYz<-C)nq3=p;Vuws~=)HYpM4YDA~cA&9`sVQyrbB&RYH65OW|A zP{mY|{HTnA8qX$3)Qa`77ixx^3%y<{hX>)ujFv^^;QYAw_l2xPB>8UI9jP7l;@XOH zxQBSFfk*NXi#E;Hl9q1;*DS&(nKQTQestd9BfQIqd-y{VCMWOxYI%kI;XkUV% z_v7$jhTV0GViLRWAO_o81>L;?P$P0M^<1VeIi#WfmQ?sYwo4VyQD2qOt-j>!Z~6Cy z>)mH42)WX7hOYIM7^z6F_yvCku*u`BCzN)Q%#u7Pb)|577Jd4JqMfuLI}t^sk+_&q zRYDR-9Z)lhy@0XqGwhui-q~kowe$?aKMWkSY2UuYzbcx0gz0zcmZ4#(cY>BIk&Wf7i7c9rc7(3H8)MP~V-$aW{X^_&GHDO$IcX(p_F(l8+* z1rh_CxtzH2BFd22iLIeJ6$Ku?dA5MeC|IW8H&p-dX4)z|`#4rY>$b%z9DR-qIYzWY z(@sYwy3Z^%{?%t8^&=r2$z=a;fV}awcjV#ZOF&ctMWf4Ix0Lhm{gOdyn~g-55O#MH zn)}|saC4SLZK)P!+MgGIP4=5Cb1b?Dh0w3v`^PvvmBl(_(!xtz<%ufzOPQfZ>JRC_ z5*)sgk5SYrHM)_pN>)ZwW|XqkB3(fGk!Trj{aWWw6Suyqm7w=5ZtXnRO+SKQ(|&|X zRs%TtG97adqgfO%|BL~FZ z8F-R6}$0!wdu}^{x$}}`Qi+`u_QiR z67h79W=kLpRR!#NN9->~xnveWP$Mn_Jzfi9=By4;vhw)e05C7=MjZVzM0DJ^0kFiB*E_=rTLimmTl;kZ(zwgk!Mn{t9mEt705n&Y`7iGP%^npzYg zZ~DS1YT$O4vRvRrL?gBAHL*vzP{hH?^$k^zuzt!L>`r7IaC*h}uF;~5z#0}~biBqY zRJ;dION5H0rmETzM<o41YrxmQn}3zP8^LAx_yTZc;RG9$K&U zWaZ04)s9GS3?2Q@=b8oZ-znYxPB)AF`Y%}LXm+Q|dEGSpnsR(dUo3f}Dt-F(9s}#C z$Q2cF>`vO{9MMe>W!SR1As_c6gQxmgjx*=VhQ%{<3``X`tKC^j;g^u@H+j$+kVo?) z6tb1Q>qf4>Hhd?&Y`E~sG!0Pe7~&8038}7#@1JBay6;CageM55eE50%Vx=I4kf=y8*YaSuol!30-H+ic*1CDpJtaW0?Oi^)I@W|U~-EnIVcIy~+9MBi6hnZb< z_I$sb8u1Z_o_Z$PJ@Dz9tm4x0MLP1#oK>|O&K*DG6I4#&w)o6;BosWu0QlX9BIM|x zA58~3I={nUzK3YFQ|jA=>Vb8X9ZkVbqzG%^R`w!Ev0$HJUZ5@Hgq!Y=;#2kOW9W(hdOOGm`i$$g{cw8 zII|uEw6vv*ho&Yl23v)s>w%dD6_dX8dpD1kqWpv)Y3qqrO~y67c$Ku@4LpWi9JMMnIth#4zalL8XFUN`}J z_A+}|Zg?mqr}YT_cNThi(N=Sr zO^47h9!L5z6(mcVdCI4Fk_?=L*)o{UqkVfjht#shyX<(hpid`n) zY`b0*F8DM#jdeTtMwpzUTC~9R!YP<|;;$RaL9TsJ%t93Sm&5llPPvb=?j2_llWD@u zV`CQdqd+4hD`yyhQIl4md6FP9SGoq2Eq~i-x)7tS;~pKUrY4Y8m^YjLYIf*HFXuvr zk-?Z1GH?Lg-GeOvLLyR;&DX~W73@a;&1IPr6fPS_#SQw5*{UPG{Te0OuUz$om zty-9)f`yP|zgwC4!i(1q1R7ED8MO&JJf$8sj%&s63ynsBkpfK7_uzc)bC>z}nyqs3aJi?-78|%PUx0|0$uePl zJ*F&t{AD4z-?Z+A^5^U=$HIARMHb63f}6g1A6PbIRTHhC8lJOhWd%WY@p|K(#ugBbUQ!L-tSAd>l6Lk`-* z$4cXmg0`lV)i$5UJr9J2FOF+MQ~REIKXw5hj!uOGV0hb5_PhCzJ`BkkouMWkNTj*F z(tn^C@9ny&vcj;Cs<_>GB0)e+h{6-Kypr;t4ZAw<>%9vr96n3!`!(xqWl3pdtQ@&` zDkMO)@7B69G#J;mH*~#%RAF~2E@|2F6Lu$(lMViKleprJR|B7*ee^D?#*(Xqh}hS> zEg7Nc!>x~DL8VPgt=-PkNd6Yc%V(&q_>gca#{ly_UOD?R6`8|(?)&D#$lk-XkYSQ+ z+aG0X1A$I7omO;;ndM-gP{iexVklQ&Y0C&V_xe1BGY@4zP(`7IMLKY`9SS)kh4-YD znH;~H{Vd5*KmXYs9-^mo8FH>IxQN>%t!kz~SI+>O(ZL0iR1oPQfF!k6&Y{d5#)`cm z&pa;Nv5YZt?&+NI?CJeV0x@L9!woaljsR26bLr=mnt>3x>S-jz_o(Uq?9ubzUF7eL z&Hv~kr=w^3XB#=ofA>Jsy|-=uzcH57Wd<#LX_1;9DQ*(+zrYa^MEUs>cUu8r;&Af3@JdR4}ML{09JhO zsBkoIgMU?ho2kGTD~gRNt*GB&jcniU#?!P=X&{yC1B5h=1PXt;A-_;yn>h+HEJES@ z#)-m7%Zapu8)rk_gRVWSB>Q_yT%<`y19>z_et=;pB}nW?6;vxDz`r#&Tf^#ddK_U57SL0#F9ar9k&{&WmZG2-BuYNv?!o9VLKJV$j)AlD9 zf9H*!p6MU`_;l~>_Wx*I|EppCy_=t3-&WVg*vih*=1(8`J0z)X{?@H8Dj+T{E>9t8 zY_4N(E30iGP9>vnX#baxnYN)VfZ?ACynnUsQ_(Ro0I1%`3GaRF-vBH?`oBB)MeMZA zjCFY|49)Zbw12dCY<1rm0B<6HhVPSjAHOUA0r<47g!PRLjs7JfYo~9n0AT)0{e2+( zkHPzt-#YL00q?!}|K6+r&P(|31^=-xYp-MXhm-Ig2)aKIuePoJyQ%;C%8hMo?f8te zZ2%Y(7+gqaFJ-xq~>EHMZ|28vP z0R21irunY%*L>bb@An^S#~Ve%Qr^P&ozw_;|E2Qp$@}l!`c5CQ{SzxOW4-rCy)#T? z{z($Ce@h+RzcDrF{>65ABYM2iCEvCdrFrAIyn%)` z+Ezx!y0+AoHil$mfBby6vDCBIeWPFgzpMR=|3dfgyw1PQ8=v;uL9jIZ%l7+f{-(hE zOUcPb-vE{tK*s<}`_Bu&2n5mt0S17-FggatZ*ReRzW^40W3+UPz_;E1pBODI-P;NH zPmGR{{*4>-9~d129rORhXz7?3-=g~;a>qM=Hrj7z-R2KlR@T@>|25{YyQNno58B`Z5rfY>;E7HGFr}u2 z^&l~zA+BR*1yO{M#otrW*D&rM-4^wK)1IT}4Kfg9*$jQ(7ZZ`SOvA@jiJ_eRK97+# zLH4Kmb<(LW`2(N+)CB4Hui-Ig8Emg%y!X}uIoS7SR}#mUJ4S%S7i;ji8>DLmnL?eJ1J8ZvPUMPG~IiIPyR$m;00J1%?0 ze%hXs^*Cb7{^Z^^cx$z=>S?$p#z+zN0mn{Jh-RO9njb$bSeuft8;#tdxHso_@jD8V z9|5T?d5Q@3K4tCeRtn_~=q?xGy$xdw?{(Bygv8_4TU znw|#j{B%l_J`9KP7*3Dqc#Liq_V&g0>DA_=iSk?WnU4z74K2#NZ@itSHrF}I?d!r5 zuZO3gV_)KKoi|SHu)wFbHS%z+@U_N|vCLv@a5S81J}a!ry=~}f)?o3-XnFZTf_zA} zS?HOQK>G>x)KMrs~ZG?Rn9` z-XX$iV(x*{=_e@T1%M&EiH-5!De(IAmOO76^LBsD84h-)xA$))=6|NvpJWnqbCOVY zdQBt%FYlZ1dN3L=y%qqBB0>NlfYHd{_4=A#uP^?(GK$;UIQ^ToDLoTC6M*d>>G^8( z`un#t_J2A9FsiuQnE)6S49raaI94!lFnMhU_>X#wA5Dxw2Ew*(0PR=lwLwl+0FaFx zp!>&KOVT7{OZ-gz{b(;&6kn;KV&I@lY{f0 zuXyXN$g7p8i3`ZcL`g#U&E)THDw#OiIy)GdI0D{6ru1*U;&?6pkJX9upP%)=txj)l z{#wR>03bUP=btY9B`^cHn3;h8Ca?h5SlRw#Jv;GGRnb{$peORTw4+}3Zxyi%fx3l& zr_T2)?e*^V#haU&y(QN6`11GT{U=(Vw@f*knz>wu3LupNDNjqQ?&wK}c{)I@D)!CAsie$Z5cyj*6Oo zq?n*cWJrH>eC^4>gc!LNvGZLacE;#RPv^yZ5gFACCG^%e(E2;-(b^=KB?mTxF6{ga zQvQcqGv@Do3(%h+odQ3Dt;T%l*RP|8MMhoU-ND+}h4#|{2guX$RIbf9x9JG_#`1Rd z2!_^I-FC8hb+Km;;0JRc?ju8d&#?jMpLL?Yh~n__f>~B$5`2QIffiwUR`Nv*uzK!2 z6y(G>hGW{@^&+71d$`?OlP`=Rs&)zH^mt0D1b2b}Z!-S;srZUGb9;CFIl}9rdjWlY zw2Q14WqlnJ3+&wP>JmZ}>Ni-&3o68;JT^=U7V4w^(nDH4b8kN`;L;2`X6vC!4ov6N z_a5*2<`F(&xw-HYwga~9XH#^ht$g3b^3 z#5^i?j!ut8$sc?@;Lgn{aRiahm*k=a_kDLEGrmXbz4U~?{Fr|C& zsy*O~g!dgfn8uG!Xjbb}Q__m>mtXS2*oH{{-2Nm0dNZ8gw`VYZ0TOmB7D*hXreM2a6eaw|zGN2WDq4 zoW2nw1IA!ur~iFRv+wuQ;vF=&4g-LCe&OEr@nk6KmN_e!~~G=ig$d^ketFp>DrDUahSg zk)(8X4G53FU8-L%l^ebRF;C4;;4eUJIu7dVi7a1&xPh)0ge5;>eJ0p#xSH-JAIH$x zYomxuRso=?_;Cs?gk!)gjXmd~E}YoA9z+(XfNUR-@q*oof1CKx)RS^dRzEi4Lxy@j z-)^8*0!FcwLesuNUzvAZ7Bz$my7A4j^%fYn0Q+WPoTF1S=b~aqC~BH6Oj~#Ee2Eov zps;-}aozcz(IFo)%9r0{ZokmVwm&}H6-CqOaWU!L>CsRLc{qm@ecyVorkpLoD|VkK zSL@E0zFbP>)A3uf`{Q!TlQ+iZy_TSx6TrphQpW!|dUq!(V^gK20YYdF85(0DtJRvC z*+soi%Npif3O{0t4rYiJfDo*^a0N;?lg=}vObtq+WYZz3s~lg3(WOM!a-M-Q$pMC= z{EEuyCfzIp;qObPL0R8be$^gOGg9S0d)P4M_;zYHxk*%yvY@FWrS5^rH9lQI?z8eZ z%xqp&hHS>24h-juw^rh=WvI9PqP$n+z1etUa&6(b=b|xmi+YP}5cp22Y*kw@og=1e z?00t5^6C!0bV%OHVWKSVo%Nzv&`HzX^hs>5-~J>zZr71}IoP()GcnT6aYt*J7xylG z^LvA76D|!k+xHJtw4@}*6CK~HZCj@7OLs8yeAG`yjE8~^Fhh>2DK6Xd!)s%0TTFA4 zMKJs&@m2~nF>Zfq$c(vd=E_*y?0OVaOk3FZGu92fBSh#>C8GUVfmXq-R^1RQqn=X( zuV3fIB9SOb{BVcq$Td(cA$7TwN{W079y}1E55sr@uS)8<e6H+?MA z>{ZBRj}9c*+o^PZ;8Cip)>bcXqSd#X5h4G$R`7dTMkZy{6jIsMt>H$;^3)JP3aP=L zgf9~VbFv|QDg=i-HbnL1YG0M4;Q__%P?SWEEzLS~7`s;$jz!lLkv-MQjSjOuYK-uh z?kd7FaXb zrI)&qC&XlPC}*7QK7I+sj*_@wl7wBz_Lp-u+`q69e={-{hu_9Xs4QwF&rb(aPZScb zj*jXeu(p#sbHFcShjb)o>QiaL5pVBQjc`5d91z@GEiA$DO0W-%g=V2+GOGXJx(dPb z@VppYDvaX|ufYQqJHYn>xmbsDeJX;&?}}Vcl5=x$>Nl_0zP84GJ*6PbLl2M^48$Ff zge`?#Yt-H6TR6Vd&z0zmz{8F!?@*Xc>Ry)hHritx_z~{eHg;BEpi#a`)$g>dmTP*L zU%A7>LWw0UlRq~3eZjZ{Q7eluYEJ^YUL9~Q=pe`zE4>VBOQzXI6NH3Yq&ePkea(IF z7`r43FK5ZKG6j(SPV%$fHZzph*WwFNPFU@w3d!CtA|e=%Y?lqKO^uUC-QK-J=|%mE z3PwJGiIq#a;iCI^B=84X6dOWjA`^MZWkbUodSRZ*qcI*c5Kg9KYE47^MGIA!2e8}^FZ&iX zR1Tc*Kuuu5f(pDYb-sgkOSecz7q*09jKyq|Wm164)SyFU*5|5QojI_ZWOz-LSctV! zVUb+rHs0d9qvbW+ZF^3#mUiU45H^c>rue6-zR``uE2HmSpWsKO>;A}&tdJy; zhk=Q<$Klj^l`y%KGtLRcO(y^!Yz;?ZQ~JB^pKCOj7u*we31-kT4ZE^NI_IhRxEn|= zRKY;d<~sP|ip{7lE#-#x^v_XS(_9DV;{}sMd;JNiw5@F*PXX#~7=^FY!~I>KcCq%z z)P~MvW)d3A4%^z%=l4QnKRkrOcsr~Gv^3(yP=;7WQB;2P->B?SIy}e(Nq;>I!sIWe zNed$<7Pt9XQUT*{MD!OkmP2@lIgYpVz#hb)W&lPXsX?ell?SB=0fxGG5w+OghrM zqwz_x!*+N!2B0blP23)?w`q;hqGnlU4duzP=oH*q@3E*4~DfJk7ksK)WG=~fhsF6u)g$vWz48umnKs)-5 zQIX7MF)hvNU=)Md>X}V9uXk}8w_t^}6J|;G?4Qa$dv6l%<~y;3Z$DxgIYnkC8pwJYDKKQkx4gHAFhj=cP&ONZu|qaKKW(A0LYq zo4nheCoCY5*`5JN5Lg0Hj$|H}t6=Kpyn5>})7$sE6k2sqbZ-k&dR3l1*|ZF+6RZ(u zo1`;uq?xAF5Kmq?_bGN3V-&j%PNjKbNjCmE4GmE=Lf}aJhcV;4;CiZ`OM7v&p8B(< zc~g@AR5Begi%|JFr^7{SI2EqiBh8bi3yrtn6zV%)1lchSe&BkfTMa9;Nzezgk*M2p z+u+@y7_8`$(SXsr$1k&iPG1BC;#0)Ktq37jzD4CL53R&esWMt6*nSy4h{`Uc+l$cK zssA>pzoS`0nCn$|oKHH2mNlJ9va)j>G)rK)ZKcU3kKTyuC{N`*-U`SYpX6sTr+Scn zW}~3M`BiJaL>i!>w(rP44dY+^h*+!XF4wTPqtpzwPfU;#`deE6EzOXu))g#oPd1 z0E<7hUfsda`JkfkJfQSLN*T-HhB%Si2r#m=Zflp9*aUb(0G>MvgJF2hJ26J!zVE~00lmYRo9B6)6 z-##K*gANOHI9u4QDXcU)aDQhGAK7O)rlTbSnH5=}!1G3K@-i_6hwBqq{LQeQ?_eJJ*MaxF zx=V6qfN`-o5s4(GJ0m6kJqAVXw}{Sm3#mmkiVIsuC`-st7{-W|!kQ=rP;EchVJ1RkRkXrP41Q4@L^c_SBQ?5C4)9bI2be%tbzf3#S0!*<>jOXdJO^i7rX&5 zt^S(MIq%;K_^NsiQKOs8be4VjiTIN& z!bjbO*htLFNTp;*K#mpNd>ktHPUJ64Dua%`@;gX_X`b6*lG=p#W-7u_uFd_uU*7 z$x#G=-y1_~S~3=d)gT4AadcKi3$xaS!YggBE%q^2K#x5V%qvukb0u@(}6B_uWoG%c=8;Po(4X<^>YwK2Y}3TrpHn zLN6s-bXkdf#3indnF+Fp%d{>bh$9Gu6t&{AVNGsF(hC|9@c42W4Y1gC`?t{$#Ztky z>-@7>Q~D)qh;*IIo-nR<9)dT9dRQg5ODN5n(sz@@W^+$Lzk)^40-c{$CNfIOhy9G@ zb81rwx17Javb*j>Xby!hg;eGXZxnn{5cTXsWB?!hc7p6WYZ;F((G8{E^? zwL{B(u)Zfyh0S@kmiJTBYR1gU%ZRxM3{6AuNRv}{qm15B>D&g-!8oghZ6)o$2J{_V z3W>vnMSP~dzjdD!l5N4tKQrL!_=T05FS#TDy@hbZ;p;(m6~9j9!Ix!d+SniNW|D+~ z=0S7^7h_}5s^ezWQ&+;)Mrt6i;^$!2m{#nU3Z7_0#`Z;DI(Z(=K8rKX*ut|>&&6eq z6%G0!P)5-x8#k@gg5a~-b&i-ye@!ug{dBjl4wPKe(?lTbNig0_G}Z@qvcH z-Ar>c^q{b)6+upeoWrJ~3UWOeCPm@IY=wxy@_QA1%3fyCK)Ux2eyH7ARObzmdnVX} z1-!4J2wJ}K=%k0P%Ov8MbGMsu?lP5iis3G|^JiyVXgf1Sobt_(%z_w6 z-a~TRb}>nE4{7S}a3uv0?ip0$c&C5MH!sc6pDT_;dFG$|IxV+7_~toEV-pn3G$l$_ z@?{xvZl~`7W*f!x$iIJ&Og#B=!dA%H#j;C#j}h;TTW13NluuwEF1Y~2CX$&17M1$F zVu*7?IU{n4a7y@dpc(qJ%8j{hq&Fsyo}HO60x{yu_C0P^IaF~?bANo7)G}B^B$dYt zR&uYE$%e+cg5UGf$_O!Qd8m{czv@6p_BZKVtn`>5ba|%6L1ywMZ2xzCf)9!^SZtRK zOi=N)bSHz-WScIU{==-(C4AdMcVJ#S4_8VHSpvFaIt}{}XUyu8jLni0O=WcTla^dedpnlrm5vz@&XyB(qfI75ZJ3>eH!m2G>TGi6rIO2;y;d zhDMuO%P%Ah@|C=dB}Rs;%JVmn z<1!4x^Xa{&W~Lg<%6noyd&7Cv9vg#d4=`0`6{M`xVCo{y6fklKNK};1i-vQi8q*=J1$MI}4|J=PrERMfWD3c0F055beW)b_=i` zpw#WruK=tcd!#=n>)#yJsPoSFDxkSI`5ebgxvH(dDXDehf1;8yXO_yfpr|O>I23_$ zXZbmo#qRRnbhav9RPM926(Vt4Xn^0ukQgrT>x9^JdoBVvD5089TeCtmzSV`&3KWdT zTPn(sro4`rM>W(kR*K~xc}h)tTJa>Uo=BM5C0W?rP*%Q|g$IOm6GAkvu%}#@$HbL#}280PLsr3mi&(vCpEiNl8Nd z>pww*@Z{ot(F+(pxhB(EHh5k4#O!Cv4_;sL?T*`4vzl|(KvQIiS5FfT6D$Hd_Gw3LLd5#8&|kEoLCxcjfPyZ%N+uRo(8 zX*l+YK?^&NGg((wufSF^;AXH_%;??3#BhS6Tl1zB2rD_#=Jz(hSdZnU!xba|$@n4N zrJLP%`6X;*^jd*pMI7Im9v0b}O_{s*Z>K`PgWg23W8s!FgLYTRtDD_w)`*yi`t)l% zl1fC0RB8M&-^N?ntkksz%9iY59wi~q1FAKD`gp;q>n=-yf2nE9Og+7v4e=9aWrxG} zIQb&oc)y=mr9Q4Yv0yvxN-M&R2q{OY(KR~q&!I)k?YQ@l>ZN2LQ8U9)a>$Iska;!Y zpfU?_og#+8p-5FD9_dZi&30i~1MmxEWmGE}2q?{G$a(&RxW z4j-^8W|Ezxf)GdCjnKWnHQ3Io|K^#)JXPOjkf4y|^Hs5Brcs_bPWg0(@|gwPvGlWe zN7zR>k;fz48psrIqtFVbg3xMvVOF2jvWkXB>tNTeKI!_?cMMi@{uZB8l)VqHYI#i) z9=RRLdh9)~*+?gu;;X4P2+AYfxpHmV4L)~^XF4jw5GX0dndF#|`*6tx1nrR5>6wFl zzK^Jj^et=L93}yhT|309%3Wp_|ug!MgX*ot2O1S2nA{ zm*b~7xrNkV?rTeF9`|x2HS;CujJ1GbTVgnu;-@rM&lWbm^?egO^){oovx9fAnP~iSdG-*_irCw%N7KW$WTZE6Eqdlj$qGJU znE&X ze1VY|`7J?)vDHQFe=1vsU1ZfwoXlCMWkv>m(JZux>Y&uYkBNsdd((O&nN~K=SWSSE z%UV?+xZ3R2mkG)Y(fUmb;1}tsv+y0puP_j{iCwA>luf=Rtk?xq7mclvU)=XEyoLtq-;|qyhF4RRtyp%FTBm;hOq0kfi9{S_I6axusyXw> zQ!10Hz0#mOPZ6v3x?Xwr5VkU{Hk+C%%W+FM;f2!rh;6BDi2$ELm)q&h2i`oGKIxrH zj60!Tm0R(top`{5^gX-hoO5Usy7+XA18;nG>tjW=O~X_3krdBS5#IG{UKiHPuHViK z^?1sD(Sq=*x=jvruf|N$aEtt$^`P0BuG}Mij)^7%A0;^s{Mug7?yrYPzu!uck z^9^{Uu4bQ<+3aP(0&)YF046RmPo4sWNmefvDq{_7Wjkqm+;3He$~z3+*-3P^BW6sXw2cN`1YT zt@qf<5zV!mu{=P)x7mgFLr$su%p$~Or+W~3sUP*Dh2BOh0uHac0y@TtBeJ547AB{W z)xaGh4+}<9oA@E}Q=#E?Sh(1;MObtF_A*|L=^Lo zDTAJ?m1SVwl#^PCiYs7@zs^M6+C%yFbHr?uq%rR5BBHjd$OtvYP3S~F6wpznbU<+< zJd=iLUGz0;BT~{3;*zv15(u+3l1iDQk1W9Fu0KaEk~{vUZ$wDk$9KU?6e-eR`d-jA zc-3sE#SW}C;u2gu?iHhzJZRsRkpH!`kpb=Qtb40MV``$_!MU#{-3;j=xlO;Q+xHkD zz4t>^5%S=1O0m^+**xB>>p*OA{yjkm9+LI04LX!&en!K^)_X-+7Y)TQK%T!;m$|5% zC=s3ZJt+)&P59t)jCrwWmrIu{Jc3YyYf`+ahrXou3u#n<-tQIj=KfDPWN1)A!Iyj@ zP|lcrB8zs2;c)U8n2~$)AlCG+Fb~%U$~2 zEeSbc?(*Hrd>_};<}!%uleZNN=$rN)FtBGTeR45>i18kD%GtU(HJjMnDZ{kTX`EH{ zrPSKy`vy)mb_yV#xd%AcM=M|&7K(84F`bK4No9h|iC9ca@!>3_iq&u-ctU!Jkp$;4`=vt)a}Xm(|KY=73FsS1OK z(r`Bccah@RjqS{d3I>HK&D2b*J+Gx(&Mk?oWS_6_dB?@cx%U1So?20TQT5po<8yEP zXI*9(Gs5fbZtWGg;_QG&yk_f@6QQmf1Levu+U5Knn)52@(=eSUIA~KWVUCeRUt)9x z>~zn|As*MvcFJ?FHNQ%op3-k+u+XEAh}(CnY;!}?#%C9gk7SDbUKQ>Pw2Z)yHOZx- zTzw$w-$Ny2*Iu9`5P-%+!LFa+FTU+Rn(QodNb_}fYUWNL6dyda4@#de)1HiC(q3$) z;xn-v9{H+O$#1GNlSGhlj$jmm)HCCE&@42g(wzZ-CADypqx3GBLvr`04JQS&r^R+#%&-pLAi7y>*nJLQf*N zvbz(AQnMU}dS;-kp@&2v&rZ1I2uo*Vj#i&+vm*tAqk%Tg8&QSuye|rU;+K4oTQji zHR5F%uLOs?acC#RuhS z)SJSZ>b1da*;R#iv5tikjwTqaY-+zugoRYm<1Cy@wwcs?G_AVoh}EC?HD0}3 zeI{lKJQB5vrr?aI<&WsIcCo4<2=-Fu?U}lxn7CP=vh^@Ilf;h~N4uER@$GFqNh(AM zG*~OS)3bAM+SD=TEQT;EwSn)r8l*0F_mN(hwkr$tb)WP4FzOBA@5Y-bw);*<|27)I zLH?JjNE6ESiPd|G_NYY(?kb?lvl2JWN9ol*ml2OAOcX78$@xeCeI=8^4w;2&4M8ev z4wtELa55%i?Zfl2F%5lFWWMH!>1qDGA0fdk2QRoLa7*wpcEU-d9!b(`%GjM*s;sbo zMr4wrYCM)`royMLSUO_oSgM2ssJQNrXQoVrKyLQ?nVb(eljOkMMd${ZM@rvu=8UKQ zghzA7I{eMJ&@wvzsr*SjV|E2HQbOB3v|i&xE>~4#=OOHTj$K)b;7GL=Rh-tnQx=aT zFC_J9$?|qYRR`vTo3~ig%KRY(n+4V_OZj@ur^AnWp@k-aDBH+#{S!HUprKM*{{&Fk zNS%jQb|#GMP;gyo?Z$H^d}g1IIchc8bT*!oCC!VmeOvIN98o$Nv`{pwW%sE+b#l9; z7t>MSmWHB~6C%8RQM@gmi%5iY;$86dls(7>1woD~u{PZ_ztiSN9T;hJK94t3D zV3<*hvZZxsV?9ul_&>L$HpkR#&nJe9cR38`D%gaWa(Zt zqT9kwGLIj}bfOc@>4yfa$}_^`>A5X= zmkZv(J;b+E7wM2Q4_m?J5_0i9-fYpyObG9?|Kt$)!H`hW8*G>S1U+bQm=Qz@nT=v> zminRMgT99JIZm`l%~o>BacjpXvVsrdC`^XZbK^#r!; zzSDLu`g%Ao`s*)n;B*qGsPL{X5W<8^Z8-p(W!(FR&Kw+^7lh(LwX*-lIo}Y&zj00= z6Eh3&AB-i}f76J-H-Pg04VKnb9JUEyLT!7XyGbP?Mf@mBswt`Ju`wPZ{Q%ypr<8B_ zVT<7RgGaj}?JqE*pJS1;t$iilHY+$eZYZ?}Ox;Y}_;z2ax&Y}H%-o7@!r~aXZU8tDpJW31bU|7lKEK zgnJ%5SqhL~EVNl$m&VwyP%dR{I{t!H?MPXU|3c5u!GYu9DwI=TC5R$IHoo9nfB8N6 z>Ql!9pbjryWylFuSHLtKIfrhSZgVD+&2v(vyhJjfTxgO&!x1pT74D!i*hF4sTt&Xh zWD84-OAO~&m^b6~>>C99-yQzbzOu8S(;oo%Ef9b4 zuEGY6CT~ss-+K;naC8zeH*f&3F#l;t*5L0l5XkXI_|KRE{zUz+xi4n(x;Fr1WA^F* zWFutb2>OTcr=B{<*vZ`SZ`$}RVg9!tW)4ok+xfq}`~R!4y|T`))HBoT`TF#B{^j@2 z)9c{Ad1HRPbF#b=!hc)5-I)L^Z^~=EH~Tl`4>A2pKHI9=fZjGo0Nz%Je;=m*o|kV_ zw&S0u$bgLBV)E9m(m&a2=hs03{u=-d{1-(2%1^&;yLg?<0BR!xkb^A%$N*$z-~>>c zJ2}~LGrr>EucDcQft@+X$dSR;!HkCHj~@jGTVrRV*KHjC@74Z=l>`5Mf5=~%C1UV8 zf0O0^s^sQiVhYa$0J6d}{qq2@v$3(T0ZajZX+UQ7*A)8m7GU$Y#>B+= znq>b|V* m|03_DY)oIr`E3sTnN^NX1`bYtq6=i^3eTu*!pN&78~u zoKKP}G5`Qzm9(&S0z;lYtwBy;aj>zS2^d*e7}?PY0tVS2yM8TJSFj=$MQs`>9UT+a zCXCpW(-NbHbC1d4-NjV6Fj>T@t)Zy1M~PD;wQyVr&hczt*oC| z0>s^=gs74@{g_F0hGJPda6@qiG}yQ+HFxcWe6&wnjmiq=>?;g9B|3!*oq5w1Ml?*7 z&LkKrab`FhAU$h(&g{QN(gfp6w+IS<9Gg}%UlY2uy;_AQ5P;Lyh{^XT^CC}vBsp4| z_o~*PgAR(+iLzW=Jb2qJwrg&`KM%Jow>pEf&>kx)4x^t`h@@j?6(Rn)m`-O?Thz3F zo@UJK=J-gck=BDvdyOuYy}Sz#F=|hN4bGu(BH=?h_ z2`2ulO~_nFhl$h~t?a8?aP#PFiU-f*$j9kJ8w6I}oDQqBB@2A+!F=ey1Pv*GayhNOI--{VkoF+K*Nb+L6khxA*5j`m7 zIEP5Hr1&vY#GZ+;)T8q0-V0F_bA;`Ag;aoKkKqmR+a0oBBHO1=MYThZn{||r&QKfM zHD1|g>Kn7qV@QtL4Y{$E5tpH2BEExd$`#xs4y#zb!rI|?>@AKA&W6Er{^qRijEk3p zE^|&HPr~_qjXIRwa{G&(luQOyR#;Zfw2V}P=zu-GH#D7vG7U1=*5t1$diwTUf6qnt z{P|RNTs*+%`_C=*e^ux2dX#W=l2UVeszrdH;Ir^_u!7j08UR)?Q2-FYY7Bb1K2_+` zjXzgbNjqDoe^{F`voW&)xc;v2C!?qLUz2hFYcc?9Et^VzZ z+S9BMkgcQr^IXPmf6FoeCy4X!RXlqu_GBdves5t6R+W15Z1R_zs$fSuXNWP_5%3%` z)qi-!^VI$y8=UuF%lh9o`13S>o&-Pukc*4$w@ZHnb^tFI7so#Y4geP?*MB?`4&1@& zBzrZ?nDbn`7EIdqztYLhSH8Mw=EPBj}??JN^2ig z=MZBjBh>Qh^75lrCXP7bJ9r0nsk{UTrSwolA{Bo*sfQMpc7L9M=a`L?d z2>3G1knQj9ucN<l=|hD$>Y(F8b_y7 z`}3QqGQ63w)9;+E<3maMb6ESUFJclNI0%>b*HO!0em3|+87MK`7*=s1A}?<&uVSt* z!}#h!0TKhzZjZiOx$y@)0Qh`@{UYOq4IZbCq2KzY+HM<^h`3-vAv?fcyWXc<(Z1PQ zhtu|FPKR=g=9)lld&uhZhZmr{eV~b~{PI&3C zh^;K}aAIE{j;RqCdknL)vvE+DyZZY^VBc+EFT>kI>>Z%t-0Gl(A2DI>lo0qEh%oOA zH|`Zw7svXM09R%NN^7^JictH9J~u?IS98v$erWKWfs)iAIlr!F6fIDJX?8Bl`!m?m45QIa3o_tHMpWYHiRVZ4Vc z;H&fZd9;Pn=5ynF6es}0)|5HI)zu4MUt^%Jn_rJiR}Ap#^6L1L7DMYbdO`uSrdO3B$p1!?S95R*zV?gNi6Ywib!a9-9ky&ILk%;9#Gdh@ALQ{rm z0vYlBmhys{iL?%@JqEjp+ib$MDXeB01uG3N2OT$Jc5qylvovbNU{m9Ogs?)ZeH^*f zx(c`HCiqP!C^-jId6;R6%8tu?9f^IhHrD@m712N4Me08gK)KoC(DDC8$?c%s|<-$7#UynpGC#e za&iYFBZd`amu68~FT3E@=i8=ghflluy!4G(?5-D+k@fhD4RM@_Ep`5O3Lxi+b*n-t zWdL}w=vosh-_XTNZx&3?qLJSw%v7OU$9D54C|fC{@azBZ4ytuQY8498IbVQYZREYE zp$#g^b}3y{nIS!z$OX&wTB|%pFND3ls>O?0C)f98XmhFb-FdVQF>5J^=`u45d^=FZ zY{(h@jS}O>s{VMZiAFY+ToneJwY8({s{UIP_%woUbZ$*_m_G8SOQueevn;j$tLt3r~%Bc8`eq zmES-OP|bBL{3M|CrJUPM6U4}P&900OeN5=mXUAd&mr?xE`HIa}MD)CNaeGy|Mc!2t z5(4-@S`_N0D7Ro$^NYF{wgh7|Rg z22ftxGZJj&ld~cy-5r}EONDxh-}gdLmnBb+RbF_1(Fq;b6kt0Mw8i%fQrMY~{JJVX z%Lp-yJW3I?x~n-jzQmF(8e}Lz0F)!lb@k2HT5uVRugI9H#vi7H(>YZ!vooTp0Y(Iy z)6$w&Y{mc%Jcu(mevMvDWs;2~!kt}eDK0S@2e|K#1JKIb?ce4||U9nd) zBq!79LG_oCQ9MKGZ=}RR)tn5=H!RF(_aXlsin_-OxvyFP_ehDY}US z^ObUbgxO5@Wu-#K3(ND{d?eBGpK@+C4&f0|N7i@QJ4yD6Q?7y<=W?HK0}WH1;^+wl z=nAg~BT<4?aTqwb%c~Oy0;V=4*W8o?t-&WknETP^ov~9L0wF&0@eSz2xydS4t%6Fg zY1hBU`2G+Wey@RuQ{H!K^Oly1b##z}QoTH3%;aqGa5XdQMLt34tBC25pW-Hynre?> zcGJFInRRPlK4nNylN#oBRx5mz2}zClSvlBNI>`gTR9%i%RSyuxHt3#XDgapKTW!Y= z+E*%2?_xGVGCJy6e0785#b>cGs|l0BCGvZmmpnF@y#rohWf$9)v>Yhp-e75p!;iY5 ziqHgypVOt;zQ>0B8D7N2SUW|h*&I9(kDu7Q&OIt51Tv|O(ek0)p~8P-o3OT(i9(C3 zb@!7_{Wc7OS;H6Bev)3AJAp;zIWq*M>)O^Zw`uCq9lz_t8yG6_BE6lJ`a2-Ekw`vw zbq^b5*)Rit$*C}cF=~AkVw{4ig52na+Wcz&C1h7iDo>WiRsa;aBV?kxa$C}csUWp1 z>n7VSP{i%;l&nvuKGeuEwRaao3Pn##tE)QvuC-=D5&7EWMp`cKkly)Dc!|ZaqhpFF^4iixi}dZR$70S zt21JdUED%RmcsIgw`}WSc^rr@i5=UPUzSQcqaGXep?bn^vYAX^Sk5Fy^;>cn@2j<) z|d!zErEc8VUk@rj_Z=6@_u#9CfmlCouDJ*l7tQzr2x25{QgYk)w zozr_|+wSA0Qv|BdWMVtLr{^Cpam1v*!1(~#+C^>}luq}oaf()=Yma@lH8giXHGDRdDBrpe3)kA&BGTGdjl>t~DU(1OQjx$pe zv6=H*eRb}=$CntoV49=iud_q7QgVrbk#$FnT5oc(j+r)PxYRmVX=^dTCq_;<)dm#C z7T+#1JG5r{G-qVCY&q|E&`#juDoq9x?4dTLcuQ)fbAejgU_^DOyk*BL$pq;>J4Hfv z0U=Jx5^@&O5Z0D=A}_rj$F*VhxRAB3LU!nO#szmI+MXqGTi>#yZlee;gyw?fadV;x zZR=$mnFWB=#pB6iVhE7lL~tM#DQZ|Kh$XoaOlsnz8i#%*@};1J@A^pr1)HK^1{#fPQW>{{zlJr z6R?6`fu77Vk9t)OgEJz#q?KW!dz_87|1W`xnXoqjl6YT57MS_o(k> zFS(eRU((CvuOXz^D{eE|X1}^CYnPAZBjn!H`n-C5m5+28ZEA>cPi5|5GTwU^Gq|7c zA<7%b17T82d|&dpP{|?q&=c3IYty-E#pGwAjg=xB%DY@rKj$Gizj(3V_MXVKY1CFF|g5@uK>g|JuY$gS4Oa#MJn zl}Ao8r}fi(H-Kgy7S{?RT;I%GsRdsYcCXA*SG!zH=~rHgzB?_SqsUE)5sC0j5v~QW z&c)%ppVhf4Vva4#6-yO$xh6Wl%fvhvBRE(AhrvNw^!R)`#$F@rl$8lSvndcFl=AUZ z0HhOL6E7Tg)Wg$#0H+}LJ>d0Oogmq%B0DUH)T_N9QfTr9zxU*3e1?I;lFTo`KhY?+ z3j^bLm^^K)D@RBsoS|u#C#2xTkN1d5d&ZSHax;J_|>;he=ChsB(d5RglkkL91Ms2vZ?{L% z-Ai9>@y3jIMPk51n+7X-YjcTD0KwrteshHm+8hd1(aExhJID{1t-^dX>{g8B-(+{Y z$MG|uG<(7^uBPHT+T0d2zm=mFgyb5Ckc%-PQ+MKQ{88n_PM&6Aw$OSynYz)r0bvS+uE<@tTa=C-vhY zH$TH%8xtMlGO?Fm_BV#(?esFH)z$0+TJNdMR+OQ37Vj-*)~g1QLPa*bnkleESdb!5 zbm|&QoqruR5Xm)+yoqL1k*h(MkQJ*Hw8;N3ONgO^`8{%?J9tPq(9Y#{BE_<%h9u%8 zt7LR?llg7&_o<|I=(ZNJq!?N2DWU!O1p6ZN!;Zp`puozIbL2AyL z#Rsso?2aV5R~CZ+G(RtgIlxi3FKj$_aI;p??$A;MK}xqXiLDIIGZNaP#!`jI#Op{s?zGG5>K+4PhU`v|ySf2L<+rV%X-Z)$Rz`QZv0ySDDn(TtaOoAQdNb z4AmP}%GWF7@^%`?;ibgitAe#?4#C?h)<@@<_*i3pr$wE4$OAI5^^{~WuVN#LkER)h zkKVq@(tEuUJ-t)V?XAukF2W*XjuXSiTJV9K>nvG0R3{GQ7iVvMf*$!|!R`ijl{VU2 zbL@;xlzVxlopKRSV5^LSKHVkBU7u{t56_9*_o5@P3UXKzvS*%hT_aI3uzLQJqb z9Dh|W+1*n{rb0#u5_|JY*AAS#ZzJ;!_Ed^lAclO^Bx&^yY#zHdRk-~9>bdCNsu|f* zZjL+>*{YW&d1YK!r+8qene3x22C|aF8f;sad$I){4Uf(VIwJ;C0ndv2Y#Rnt!(H;+ zS@75F5K2?s(f7>)@35EZt6MIDzwGIYPNe;EG2snOSO9afyVNpo9E9_C{}AsGwe zi}_kgiNa5XabD9(b>B&tt7U%;z}6|-enWcEy$QY70ZZH%e#$vV80^EH2UrYwc~g8S zkyYW+RlqqMIzKD2*N;gmgP%5Hgmz+_vQ*Vz)8S%!dW{ryzR-M7tw4%Da?O*RL50ei zi4_-4=4-`Hc^|+o<%Q;lgMvl%F)-gH{YCQR@(@bj<}C|>y06EPF!RH>mE~mg7FZ-8 zVfnq={_)PpIfp*S9W>lltan^Z@51@L#$2j0Eewa9Q&(KK&e2!#kj8@k%tecNKo%UT z^E(_hr;>VCLDv~W9&=icM|d31ia?j4J}mRbFJ))~)vnm^#veJ=;?_KlquI<^Eys!! zyMN+EUft<>ef#N~uZH}{Kx*OsOXtG>b?RM*MBPN2-&x(+D}`3COGr1K01~^DO|`D% zy;uF-6!7+2ZA};j?r;y~cFZDmsaNJZ){i(I(19rUoS@Rz%nbH}{six^%WGFlO%yGb zQkgG$v8+v1ZqO9d#C^x+%Xro&ZX>>UmyPAwT^!MI``1lztKl*e8A0^)&GLAV_=`yL zbT~3rV}(lSzojUEA4+|kelQ6$lr`Chw5ZcDD;YcCij^zgVliO~Lfy0)I-f6WiZ(H3 zHDpjEeV0k%V{KIv_E+hi{x+Rb6oXiw0jd0a~XK5MfqQN(}#OgUfh3mG)by+u)NmL>5vQ3 zpJg_LDxQh?Flk|J`#zTsRzq}M=@15jBJ*Pdp{#Oq4l{e}sIR^krtEM~V(a^;3BIB* zX!RS>jcU|zm&5Zc`qYJ1!tkrOJrBb+Azo)991P0&N%qA~&ly_R%?OfGI)f<&_DQG=9XcIj#vfY1H^IK>ruA@2nIiA1JY`J7EuD}w(neh#&*`W2t>~+%S8sEGr?0|1|j=~vQZQQNvJFA%SaNpmoD>pe^9EKP3kZN^G!mitgw{BM#*t!Ig@FMzLOpNPnCt>yZ3EtlCGDjyoN-5J=O?s# zg!gmR>=RM#D{`u-Iw&$(G|+*+z87Mo{gnGqkmIyA&HPr@)taIdPF@eLV}n*_{7BGI=QxEI}Eij6=jtt3yZ~aDEwktzG%~ z;@w7^d>qI@)Ik~yi7F|_+3=vhOYilL&x*@8Xts5rd24E8ze3x|#OTsE|LwQmx6k-{Z2^|-C1>s7G?xGu|yCU!$xmpd7perBF z!k}LW%P^yN2wEkn253F39UqiHus}F)y@Gnv$)tgAosI(JHg*>O8USwsKqnAH{7j-au9FOSB5Nde z1TK5R_t;wf_*;iMaX2-|u0aOFyMo>_#*z^(IKBJ~vLj)N=!z!bkJdv!#WAfS$O>3V z@!N1Iltf3-GvvL-`pN=HAab`9w#RG61E|+c^9i{JG21!Ww^bBVa02$iWRF_e;#mv9 z{rcw_i1MV^6JFd*lks*DQb`smpM#?r?`=fNym_YAB=hdqr$#S>Jx7Yg3DxXw9LdOR z)~|cH4u{{qK8m$kVX^i@;`$`SXE0v98$p3_!4e*7jRlQ!SthndEF#@x=tl1RzImC7 zrO?tY;Vpg6>-QHbOEw+}mQWS+mpY*!f2D9vTWo=lTgOmO9867?N>io4p!NCi(mow*9}h+e zFUPx)5xb|@Qa6JSP%m-Gqg#wjtR9{1#q!`7C}k5>+!R}CG*=5Iz3+`GbAI&Vz|YZp zMNRxj<;FV3x^P5fLVF)xY1hpuC8DA@@W$!WiskD{kxt7fi%v&scR$B!Fk#+9SV zO&hRfsmQAX@LnTt7i$gwkYYn>G|$>D{-s3nMr~66W~REra~Xe0Cq}bxtesi2Mai-A zP(KS(wh*(;p5es?=KgqEdf1NTc~w0Rb!Nfk;?RqUQ=OJ>y6i7nScjGq=<2TA@uF_I zwiAK;OGyDP>vxtT>MThKa=+wQ#Rf_!w}R4}Opf`+5cK6y7hwC~t}?s_dAhsX$`FiB z>oN_#uvA*AVf%@vmW#W-g0c7>M$@)R_fC{w_nu_>t3|vGW%+@GU9c#kDy; zw??KfQogu4)5!1>?cw5l+M4w*Y*{Fm^+d#0@eeXZ__o6*@79oTySwU3ljttx;iGJb zl)Zr8I?g|4WuLvQWV1a>rQF+bzsnW>vG^k-q+#m#mvrGtGy#RF_8EH0#;~mZLV#2J%eJX1W6+UMw@VW^($%qBZeXC!4zw7&39rr03`e1DJo$9gWK8E)A+}p#1 z5WK-GNyelvRvm>)-jX4UxOV5$_E{^mMYF_3RCnRPS(AtA``)A}VZ0ZOmfOC=*Iowo zgxg-FYpYBY57kBm#Zy9EXKn6kS+I7!(Upj-ORuVNnX>ti{ZoL3J@(3ZFQd*^&*`LO z9J*~n_~Rr_N%y-MS`W#}m_aLQ)51q(gWjoODuM267wK-4*dcsEb&W`K$DCc3sLOP#*Wn4zS0NZhh^s*ee^&GModIV|Xrb9F&?kF$O3Zx&` zF!hf0D@&GHROGZ4tvir)0Zey!wjR{}FNBqas^x7MUQrNMvFthWGQky3 zxPNRtx{eV-$&Jyk(;u2O zzB0gaR9`^1&x`X=@I2;xc+F_Wp&5Xmbt>9{tu*X7$o#T@Z%P-tp4e95dopUAn&6w# z`?1w1U!}zTf}fd9Md?uQ)<8b^ciNxq2E^JztQq$Fhn8oRs>#(H|#C7DppL>vCK!bSc;n(yxi67&~7)}hVTm?wL!$Y6LNdM zsxY|X4LRXs>ZO(66%&ifO%BU~MIE$x!4mhMldcrwnxlpbDIr}+Kn&hDE&VyA?6=vw zekMcC^_#6o;$uM~pW6=4rBsKFPtI(v-m$uPw#5;5Dzhoj-}}`Vm}24^9QLB=7BYZN z&U+{DEQ2J4nESat(urQXIAi0itR8E82YOVW(v)^qhD|EO!G^yxDmn?5Lnz{Du4Hw| zw~t)&b0B2N?UmmpqS_9T>X?>YjX3d@Dsd^da^@_7vt%=VQa4 zs@J!KXJ_kT5aQRr%B5tw=XyVgnnD?3;;>rGB{vT$JAV^=kI@&&38s=RBXimM zSLLpl!sfCl-=fGi38kyn`$`OhEM;ldzY;su&PE0T6j&2wrP@tpGbjzHE$KFb~% zAF#ImnDd6YmyfJ!>L<5>euk-o@BMxO0^J{$1Q>9Cx^q`9Airgt5uz1^3Bt=hrAS;! zBYfke<9y&BbJ#y=Raq&F5J>{^y&=0K{Di03-d7UhNTh7rSZDrg31E>hIhmBvhMs*o zTx#u{tz&`|&9=g)`(aWct*LLw+=Nw#++t1ALr~N}f_c(IV2`TbDjyE-gm0Y!pqX*T zLr?wVy7REt?5oHsNOvW{Jx@z@sNXtFF3x+LTX75`S9?mMBJQjRA9Xr&7)lGWTOOjv2SOkm1K5 zsOeJ3+1xAfX9HGoXkV;qq2i>BOsXV9G{%|nm);0MTW&OpPN5=QBpl+RoRn|{osZn@ ztc@)U95gWb2cGGBKOl>tXfrsJB)p}RAV+eXr0VmSWo=kAe9xwAwnRSB`3-|Ztbb3~^KDU9 zW5n7-6C83f2;SJ)KV+BCx6^6G5@YA&Z5 z@R6vFiQjqm!jBm0MfdFFO4HHT?1>42&t6`?*eiaJ$Vaa9@^)fiT`JY&QOJ>3M|H&N z@$cRMt6k!ZEJ`aZqF)r@|E5`XF>+$0U-#{TmL_dB$D2n&n z2AI)|6G*4GY0lf*k0|jnhr|C(%RLiZf6;P$TwJ_=6Ks6{&3XZ!@wERpnp6MNh;0V| zwfjggFlr$KdFW@=XXWgIhV`=7x-|&WZBEiCq94dkFFR^?vq@XYFOMo))$XgVfGqBd6lN~v4&k846H5L6!Yc^_T5SR^DF8MH$NC}9Z<*l?@|$L;Sy*ICGCV` zz(9TbZqCN<<2N~7u%+&Uwt^saj+AZwmd)I;A%UV1o$8Io;NI|hz1#r*+(XC+4PauU zafNZGZ<*vpgu^ibu53SkTy?RC-NPjJ+nTS%4`i9j5kvWLe2CRPO#BELmc!F=cJBxG zLkf}#LPbrZ6Ja?JjA{n0Wyp2NW#pz}T!(q$>}r+NZuWJKWE|5-wkf_7|A;le{H3#F z749a#5zy~x&OW?$kI{kKt1-oj&Jel$-)Z%E*Z_Dq7eWIXkL>Y~`6%!Dh~XjI2RsjsVVob$IiK zIb;U%Z~~awdAR^UHglTql-@_zXy3<#B=+( z^KU^6WG@Z2Ff;$RiJBAGMiapMr~7k5`tQc`lAn-4FyI*~{3m4i3{?KN!@tK@b2f7N z4O2b`0{B~c19Ala<}&}Uo?Ad1oy5#R5C8}J?_TntzuG|dKg0ZIOaZ^6{-@F@TpfQ$ zMb5(HIVR65Q2iIj>ii77{sSg`LR|lyXt5^>{Hd4$bjBbHh#dgP0_0@j1<;v0Iob2G zKB2fzq8S8aZ*F1i$YKXEqo@Bpk21v0#M$_XD*u1)_HRTN_)lE@&(0D9J(awj*`KkW zz4?pM{dXr<2-p;v4FKdsX8YFx;C=#Gxd5hsKN=9o!}H|Y^8v8^OJif>e%fFEQ)2`E zx5mx=w5$}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$strings.\+h$>$}\newline +{\ttfamily \#include \char`\"{}heap.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}ostypes.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline +Include dependency graph for heap.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{heap_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}{os\+Heap\+Init} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray) +\item +void \hyperlink{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}{os\+Heap\+Heapify} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, uint8\+\_\+t iind) +\item +void \hyperlink{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}{os\+Heap\+Build} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray) +\item +uint8\+\_\+t \hyperlink{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}{os\+Heap\+Maximum} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$iomax) +\item +uint8\+\_\+t \hyperlink{heap_8c_a31002fadb05f80382c9714462dfb092e}{os\+Heap\+Extract\+Maximum} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$iomax) +\item +uint8\+\_\+t \hyperlink{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}{os\+Heap\+Insert} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} x) +\item +void \hyperlink{heap_8c_abfcd76f5650f218825578b0bd1652587}{os\+Heap\+PrintS} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray) +\item +uint8\+\_\+t \hyperlink{heap_8c_a999a4beae27d4c7085278724feeabbc1}{os\+Heap\+Is\+Empty} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}\label{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Build@{os\+Heap\+Build}} +\index{os\+Heap\+Build@{os\+Heap\+Build}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Build()}{osHeapBuild()}} +{\footnotesize\ttfamily void os\+Heap\+Build (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})} + +Build the heap from the bottom up. Given an array which is not heapified at all. + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{heap_8c_a31002fadb05f80382c9714462dfb092e}\label{heap_8c_a31002fadb05f80382c9714462dfb092e}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Extract\+Maximum@{os\+Heap\+Extract\+Maximum}} +\index{os\+Heap\+Extract\+Maximum@{os\+Heap\+Extract\+Maximum}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Extract\+Maximum()}{osHeapExtractMaximum()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Extract\+Maximum (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray, }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{iomax }\end{DoxyParamCaption})} + +Copy heap maximum and remove it (extract). + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +{\em iomax} & Node, which is the maximum. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is empty). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}\label{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Heapify@{os\+Heap\+Heapify}} +\index{os\+Heap\+Heapify@{os\+Heap\+Heapify}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Heapify()}{osHeapHeapify()}} +{\footnotesize\ttfamily void os\+Heap\+Heapify (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray, }\item[{uint8\+\_\+t}]{iind }\end{DoxyParamCaption})} + +Classic heapify operation. + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +{\em iind} & Element to be put in the right place. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}\label{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Init@{os\+Heap\+Init}} +\index{os\+Heap\+Init@{os\+Heap\+Init}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Init()}{osHeapInit()}} +{\footnotesize\ttfamily void os\+Heap\+Init (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})} + +Initializes all heap elements by setting them to N\+U\+LL. + + +\begin{DoxyParams}{Parameters} +{\em Array} & where the heap is stored. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}\label{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Insert@{os\+Heap\+Insert}} +\index{os\+Heap\+Insert@{os\+Heap\+Insert}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Insert()}{osHeapInsert()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Insert (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray, }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t}}]{x }\end{DoxyParamCaption})} + +Insert a node into the heap. + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +{\em x} & Node to be inserted into the heap. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is full). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{heap_8c_a999a4beae27d4c7085278724feeabbc1}\label{heap_8c_a999a4beae27d4c7085278724feeabbc1}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Is\+Empty@{os\+Heap\+Is\+Empty}} +\index{os\+Heap\+Is\+Empty@{os\+Heap\+Is\+Empty}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Is\+Empty()}{osHeapIsEmpty()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Is\+Empty (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})} + +Is the heap empty? + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}\label{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+Maximum@{os\+Heap\+Maximum}} +\index{os\+Heap\+Maximum@{os\+Heap\+Maximum}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Maximum()}{osHeapMaximum()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Maximum (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray, }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{iomax }\end{DoxyParamCaption})} + +Copy heap maximum. + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +{\em iomax} & Node, which is the maximum. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is empty). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{heap_8c_abfcd76f5650f218825578b0bd1652587}\label{heap_8c_abfcd76f5650f218825578b0bd1652587}} +\index{heap.\+c@{heap.\+c}!os\+Heap\+PrintS@{os\+Heap\+PrintS}} +\index{os\+Heap\+PrintS@{os\+Heap\+PrintS}!heap.\+c@{heap.\+c}} +\subsubsection{\texorpdfstring{os\+Heap\+Print\+S()}{osHeapPrintS()}} +{\footnotesize\ttfamily void os\+Heap\+PrintS (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})} + +Print heap all priorities for debugging purposes. + + +\begin{DoxyParams}{Parameters} +{\em ioarray} & Array where the heap is stored. \\ +\hline +\end{DoxyParams} diff --git a/software/doc/latex/heap_8c__incl.md5 b/software/doc/latex/heap_8c__incl.md5 new file mode 100644 index 0000000..cac5ca3 --- /dev/null +++ b/software/doc/latex/heap_8c__incl.md5 @@ -0,0 +1 @@ +9eafc0ffea1e60a985a5e8681627a7c0 \ No newline at end of file diff --git a/software/doc/latex/heap_8c__incl.pdf b/software/doc/latex/heap_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e5cd30009e446161bb3e368ec533c897fa002dd8 GIT binary patch literal 15192 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 ZT?MuW+1dZjE;BPb*E0@JAu2D1_&;wnqlN$g literal 0 HcmV?d00001 diff --git a/software/doc/latex/heap_8h__incl.md5 b/software/doc/latex/heap_8h__incl.md5 new file mode 100644 index 0000000..8849ebf --- /dev/null +++ b/software/doc/latex/heap_8h__incl.md5 @@ -0,0 +1 @@ +dca676e4cd8d9eb6bb93ce7c7c2ab999 \ No newline at end of file diff --git a/software/doc/latex/heap_8h__incl.pdf b/software/doc/latex/heap_8h__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..120f467d5003141999df8d798bc8c0d17067fde1 GIT binary patch literal 12462 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\newline +Include dependency graph for helpers.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{helpers_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \hyperlink{helpers_8c_a47defb2893c0a5e4427dd9daf6d5057d}{os\+Itoa} (int iint, char $\ast$iochar, size\+\_\+t ibuffsize, size\+\_\+t $\ast$obuffsize) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{helpers_8c_a47defb2893c0a5e4427dd9daf6d5057d}\label{helpers_8c_a47defb2893c0a5e4427dd9daf6d5057d}} +\index{helpers.\+c@{helpers.\+c}!os\+Itoa@{os\+Itoa}} +\index{os\+Itoa@{os\+Itoa}!helpers.\+c@{helpers.\+c}} +\subsubsection{\texorpdfstring{os\+Itoa()}{osItoa()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Itoa (\begin{DoxyParamCaption}\item[{int}]{iint, }\item[{char $\ast$}]{iochar, }\item[{size\+\_\+t}]{ibuffsize, }\item[{size\+\_\+t $\ast$}]{obuffsize }\end{DoxyParamCaption})} + +Simple Interger to A\+S\+C\+II conversion. + + +\begin{DoxyParams}{Parameters} +{\em iint} & Input integer. \\ +\hline +{\em iochar} & C string where the result ends up. \\ +\hline +{\em ibuffsize} & Size of the C string for security reasons. \\ +\hline +{\em obuffsize} & Size of the string created by the function. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (buffer overflow). \\ +\hline +\end{DoxyRetVals} diff --git a/software/doc/latex/helpers_8c__incl.md5 b/software/doc/latex/helpers_8c__incl.md5 new file mode 100644 index 0000000..074368a --- /dev/null +++ b/software/doc/latex/helpers_8c__incl.md5 @@ -0,0 +1 @@ +12c54ea22e4cccf6a3e85c14cd7ae4b7 \ No newline at end of file diff --git a/software/doc/latex/helpers_8c__incl.pdf b/software/doc/latex/helpers_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f68cd87bdf95c6bc3c071bf56e978e5759ad2b69 GIT binary patch literal 14456 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 Yle3|t^PklPva@jWAW%`gSCl~bKTiZ%^Z)<= literal 0 HcmV?d00001 diff --git a/software/doc/latex/helpers_8h.tex b/software/doc/latex/helpers_8h.tex new file mode 100644 index 0000000..7cdb387 --- /dev/null +++ b/software/doc/latex/helpers_8h.tex @@ -0,0 +1,81 @@ +\hypertarget{helpers_8h}{}\section{os/helpers.h File Reference} +\label{helpers_8h}\index{os/helpers.\+h@{os/helpers.\+h}} + + +Functions, which one needs here and there for the operating system. + + +{\ttfamily \#include \char`\"{}stm32f10x.\+h\char`\"{}}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +Include dependency graph for helpers.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=218pt]{helpers_8h__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{helpers_8h_a8f7c8ca9321d4fa5a07c09b42120cab9}{os\+Pow\+Int} (int ibase, int iexponent) +\item +uint8\+\_\+t \hyperlink{helpers_8h_a47defb2893c0a5e4427dd9daf6d5057d}{os\+Itoa} (int iint, char $\ast$iochar, size\+\_\+t ibuffsize, size\+\_\+t $\ast$obuffsize) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Functions, which one needs here and there for the operating system. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{helpers_8h_a47defb2893c0a5e4427dd9daf6d5057d}\label{helpers_8h_a47defb2893c0a5e4427dd9daf6d5057d}} +\index{helpers.\+h@{helpers.\+h}!os\+Itoa@{os\+Itoa}} +\index{os\+Itoa@{os\+Itoa}!helpers.\+h@{helpers.\+h}} +\subsubsection{\texorpdfstring{os\+Itoa()}{osItoa()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Itoa (\begin{DoxyParamCaption}\item[{int}]{iint, }\item[{char $\ast$}]{iochar, }\item[{size\+\_\+t}]{ibuffsize, }\item[{size\+\_\+t $\ast$}]{obuffsize }\end{DoxyParamCaption})} + +Simple Interger to A\+S\+C\+II conversion. + + +\begin{DoxyParams}{Parameters} +{\em iint} & Input integer. \\ +\hline +{\em iochar} & C string where the result ends up. \\ +\hline +{\em ibuffsize} & Size of the C string for security reasons. \\ +\hline +{\em obuffsize} & Size of the string created by the function. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (buffer overflow). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{helpers_8h_a8f7c8ca9321d4fa5a07c09b42120cab9}\label{helpers_8h_a8f7c8ca9321d4fa5a07c09b42120cab9}} +\index{helpers.\+h@{helpers.\+h}!os\+Pow\+Int@{os\+Pow\+Int}} +\index{os\+Pow\+Int@{os\+Pow\+Int}!helpers.\+h@{helpers.\+h}} +\subsubsection{\texorpdfstring{os\+Pow\+Int()}{osPowInt()}} +{\footnotesize\ttfamily int os\+Pow\+Int (\begin{DoxyParamCaption}\item[{int}]{ibase, }\item[{int}]{iexponent }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Simple inline power calculation. + + +\begin{DoxyParams}{Parameters} +{\em ibase} & Input base. \\ +\hline +{\em iexponent} & Input exponent. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em Result.} & \\ +\hline +\end{DoxyRetVals} diff --git a/software/doc/latex/helpers_8h__dep__incl.md5 b/software/doc/latex/helpers_8h__dep__incl.md5 new file mode 100644 index 0000000..1dd02c9 --- /dev/null +++ b/software/doc/latex/helpers_8h__dep__incl.md5 @@ -0,0 +1 @@ +413090f4106dd9145dc8dddc79eda3c5 \ No newline at end of file diff --git a/software/doc/latex/helpers_8h__dep__incl.pdf b/software/doc/latex/helpers_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8f2aaafed660e52bc23827eb4b1004326a0944cf GIT binary patch literal 11898 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/ossettings_8h.tex b/software/doc/latex/ossettings_8h.tex new file mode 100644 index 0000000..9cbac57 --- /dev/null +++ b/software/doc/latex/ossettings_8h.tex @@ -0,0 +1,65 @@ +\hypertarget{ossettings_8h}{}\section{os/ossettings.h File Reference} +\label{ossettings_8h}\index{os/ossettings.\+h@{os/ossettings.\+h}} + + +File where all settings take place. + + +This graph shows which files directly or indirectly include this file\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{ossettings_8h__dep__incl} +\end{center} +\end{figure} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{ossettings_8h_acb84a306ee37479f97cf0b476560f027}\label{ossettings_8h_acb84a306ee37479f97cf0b476560f027}} +\#define {\bfseries M\+A\+X\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+S\+I\+ZE}~255 +\item +\mbox{\Hypertarget{ossettings_8h_a6d0f30dbf0f5f658209bdfe01e400d40}\label{ossettings_8h_a6d0f30dbf0f5f658209bdfe01e400d40}} +\#define {\bfseries M\+A\+X\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+T\+\_\+\+N\+E\+S\+T\+I\+NG}~3 +\item +\mbox{\Hypertarget{ossettings_8h_aa494389e1ff9b4494ec3f6565b0fcde6}\label{ossettings_8h_aa494389e1ff9b4494ec3f6565b0fcde6}} +\#define {\bfseries S\+Y\+S\+\_\+\+T\+I\+C\+K\+\_\+\+MS}~100 +\item +\mbox{\Hypertarget{ossettings_8h_a5ed26cf4f2ce5b422c9fd7a00d60ea2b}\label{ossettings_8h_a5ed26cf4f2ce5b422c9fd7a00d60ea2b}} +\#define {\bfseries S\+Y\+S\+\_\+\+T\+I\+C\+K\+\_\+\+P\+E\+R\+I\+O\+D\+\_\+\+MS}~S\+Y\+S\+\_\+\+T\+I\+C\+K\+\_\+\+MS +\item +\mbox{\Hypertarget{ossettings_8h_a16ba2eeb8a3b183ecff5652270cf1f4d}\label{ossettings_8h_a16ba2eeb8a3b183ecff5652270cf1f4d}} +\#define {\bfseries M\+S\+\_\+2\+\_\+\+T\+I\+C\+KS}(MS)~(MS/S\+Y\+S\+\_\+\+T\+I\+C\+K\+\_\+\+MS) +\item +\mbox{\Hypertarget{ossettings_8h_a63dde392f4d29d54ce7fefc32793be6e}\label{ossettings_8h_a63dde392f4d29d54ce7fefc32793be6e}} +\#define {\bfseries M\+A\+X\+\_\+\+S\+I\+Z\+E\+\_\+\+T\+A\+S\+K\+\_\+\+N\+A\+ME}~20 +\item +\mbox{\Hypertarget{ossettings_8h_ae429fe1a9a03040b1a337048275f8540}\label{ossettings_8h_ae429fe1a9a03040b1a337048275f8540}} +\#define {\bfseries M\+A\+X\+\_\+\+N\+U\+M\+B\+E\+R\+\_\+\+O\+F\+\_\+\+T\+A\+S\+KS}~4 +\item +\mbox{\Hypertarget{ossettings_8h_a1b45302695680930829cac31d65e41e1}\label{ossettings_8h_a1b45302695680930829cac31d65e41e1}} +\#define {\bfseries H\+E\+A\+P\+\_\+\+S\+I\+ZE}~4 +\item +\mbox{\Hypertarget{ossettings_8h_a26d223e387ff89bbbeb5fe1c238f7aa7}\label{ossettings_8h_a26d223e387ff89bbbeb5fe1c238f7aa7}} +\#define {\bfseries A\+L\+I\+V\+E\+\_\+\+P\+U\+L\+S\+E\+\_\+\+L\+E\+N\+G\+TH}~M\+S\+\_\+2\+\_\+\+T\+I\+C\+KS(200) +\item +\mbox{\Hypertarget{ossettings_8h_a0e73304dd7fd368f0702df55824d1668}\label{ossettings_8h_a0e73304dd7fd368f0702df55824d1668}} +\#define {\bfseries C\+O\+N\+V\+E\+R\+T\+\_\+\+N\+E\+W\+L\+I\+NE} +\item +\mbox{\Hypertarget{ossettings_8h_a0917779e7d7c2d5a3271b5653ad55df9}\label{ossettings_8h_a0917779e7d7c2d5a3271b5653ad55df9}} +\#define {\bfseries S\+T\+D\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE}~128 +\item +\mbox{\Hypertarget{ossettings_8h_ac80a3592e72fd96b772ee47a7d8e0d0a}\label{ossettings_8h_ac80a3592e72fd96b772ee47a7d8e0d0a}} +\#define {\bfseries D\+E\+B\+U\+G\+\_\+\+M\+O\+DE}~1 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +File where all settings take place. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} diff --git a/software/doc/latex/ossettings_8h__dep__incl.md5 b/software/doc/latex/ossettings_8h__dep__incl.md5 new file mode 100644 index 0000000..2166e84 --- /dev/null +++ b/software/doc/latex/ossettings_8h__dep__incl.md5 @@ -0,0 +1 @@ +fb15a09d2acd0504ad5700665d03023b \ No newline at end of file diff --git a/software/doc/latex/ossettings_8h__dep__incl.pdf b/software/doc/latex/ossettings_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a6722a252c1a4e0e3db982b3fb1ad798a8823ee GIT binary patch literal 13635 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 nZ}b1}j0H(s)3$}\newline +{\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline +Include dependency graph for ostypes.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=218pt]{ostypes_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=350pt]{ostypes_8h__dep__incl} +\end{center} +\end{figure} +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} +\item +struct \hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} +\item +struct \hyperlink{structos_semaphore_handle__t}{os\+Semaphore\+Handle\+\_\+t} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$ \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{ostypes_8h_ac9a3dac1250976eb655c7a46fceedb8c}{os\+Scheduler\+State\+\_\+t} \{ {\bfseries S\+\_\+\+I\+N\+IT}, +{\bfseries S\+\_\+\+E\+X\+E\+C\+U\+T\+I\+N\+G\+\_\+\+T\+A\+SK}, +{\bfseries S\+\_\+\+E\+X\+E\+C\+U\+T\+I\+N\+G\+\_\+\+N\+O\+\_\+\+T\+A\+SK}, +{\bfseries S\+\_\+\+I\+D\+E\+L\+I\+NG} + \} +\item +enum \hyperlink{ostypes_8h_ae410cf8fbf1704d3cedf2e2648b94a55}{os\+Task\+State\+\_\+t} \{ {\bfseries R\+E\+A\+DY}, +{\bfseries R\+U\+N\+N\+I\+NG}, +{\bfseries S\+U\+S\+P\+E\+N\+D\+ED}, +{\bfseries B\+L\+O\+C\+K\+ED} + \} +\item +enum \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t} \{ \newline +{\bfseries E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+B\+E\+R\+\_\+\+O\+F\+\_\+\+T\+A\+S\+KS}, +{\bfseries E\+\_\+\+H\+E\+A\+P\+\_\+\+O\+V\+E\+R\+L\+F\+OW}, +{\bfseries E\+\_\+\+M\+A\+X\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+T\+\_\+\+N\+E\+S\+T\+I\+NG}, +{\bfseries E\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+O\+V\+E\+R\+F\+L\+OW}, +\newline +{\bfseries E\+\_\+\+N\+U\+L\+L\+\_\+\+F\+O\+R\+B\+I\+D\+D\+EN}, +{\bfseries E\+\_\+\+W\+R\+O\+N\+G\+\_\+\+U\+S\+A\+G\+E\+\_\+\+O\+F\+\_\+\+P\+R\+I\+N\+TF}, +{\bfseries E\+\_\+\+U\+S\+A\+R\+T\+\_\+\+R\+X\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+O\+V\+E\+R\+L\+OW}, +{\bfseries E\+\_\+\+U\+S\+A\+R\+T\+\_\+\+T\+X\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+O\+V\+E\+R\+L\+OW}, +\newline +{\bfseries E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+\+W\+E\+N\+T\+\_\+\+W\+R\+O\+NG} + \} +\item +enum \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t} \{ {\bfseries W\+\_\+\+S\+Y\+S\+\_\+\+T\+I\+M\+E\+R\+\_\+\+O\+V\+E\+R\+F\+L\+OW} + \} +\item +\mbox{\Hypertarget{ostypes_8h_ad68cf10efc310f9689628bde190fe714}\label{ostypes_8h_ad68cf10efc310f9689628bde190fe714}} +enum {\bfseries os\+Semaphore\+Binary\+\_\+t} \{ {\bfseries A\+V\+A\+I\+L\+A\+B\+LE}, +{\bfseries T\+A\+K\+EN} + \} +\item +\mbox{\Hypertarget{ostypes_8h_ab218649e29adcb54aefa674dc6f17acf}\label{ostypes_8h_ab218649e29adcb54aefa674dc6f17acf}} +enum {\bfseries os\+Semaphore\+Type\+\_\+t} \{ {\bfseries B\+I\+N\+A\+RY} + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Different types the operating system uses are defined here. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}\label{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}} +\index{ostypes.\+h@{ostypes.\+h}!os\+Heap\+Node\+\_\+t@{os\+Heap\+Node\+\_\+t}} +\index{os\+Heap\+Node\+\_\+t@{os\+Heap\+Node\+\_\+t}!ostypes.\+h@{ostypes.\+h}} +\subsubsection{\texorpdfstring{os\+Heap\+Node\+\_\+t}{osHeapNode\_t}} +{\footnotesize\ttfamily typedef \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t}$\ast$ \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t}} + +Data type to hold a pointer to a T\+CB. + +\subsection{Enumeration Type Documentation} +\mbox{\Hypertarget{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}\label{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}} +\index{ostypes.\+h@{ostypes.\+h}!os\+Error\+\_\+t@{os\+Error\+\_\+t}} +\index{os\+Error\+\_\+t@{os\+Error\+\_\+t}!ostypes.\+h@{ostypes.\+h}} +\subsubsection{\texorpdfstring{os\+Error\+\_\+t}{osError\_t}} +{\footnotesize\ttfamily enum \hyperlink{ostypes_8h_acd9f76a1fbd8bc9084ff34add637094f}{os\+Error\+\_\+t}} + +Enum to hold all possible error codes. \mbox{\Hypertarget{ostypes_8h_ac9a3dac1250976eb655c7a46fceedb8c}\label{ostypes_8h_ac9a3dac1250976eb655c7a46fceedb8c}} +\index{ostypes.\+h@{ostypes.\+h}!os\+Scheduler\+State\+\_\+t@{os\+Scheduler\+State\+\_\+t}} +\index{os\+Scheduler\+State\+\_\+t@{os\+Scheduler\+State\+\_\+t}!ostypes.\+h@{ostypes.\+h}} +\subsubsection{\texorpdfstring{os\+Scheduler\+State\+\_\+t}{osSchedulerState\_t}} +{\footnotesize\ttfamily enum \hyperlink{ostypes_8h_ac9a3dac1250976eb655c7a46fceedb8c}{os\+Scheduler\+State\+\_\+t}} + +Enum for scheduler state. \mbox{\Hypertarget{ostypes_8h_ae410cf8fbf1704d3cedf2e2648b94a55}\label{ostypes_8h_ae410cf8fbf1704d3cedf2e2648b94a55}} +\index{ostypes.\+h@{ostypes.\+h}!os\+Task\+State\+\_\+t@{os\+Task\+State\+\_\+t}} +\index{os\+Task\+State\+\_\+t@{os\+Task\+State\+\_\+t}!ostypes.\+h@{ostypes.\+h}} +\subsubsection{\texorpdfstring{os\+Task\+State\+\_\+t}{osTaskState\_t}} +{\footnotesize\ttfamily enum \hyperlink{ostypes_8h_ae410cf8fbf1704d3cedf2e2648b94a55}{os\+Task\+State\+\_\+t}} + +Enum for task states. \mbox{\Hypertarget{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}\label{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}} +\index{ostypes.\+h@{ostypes.\+h}!os\+Warning\+\_\+t@{os\+Warning\+\_\+t}} +\index{os\+Warning\+\_\+t@{os\+Warning\+\_\+t}!ostypes.\+h@{ostypes.\+h}} +\subsubsection{\texorpdfstring{os\+Warning\+\_\+t}{osWarning\_t}} +{\footnotesize\ttfamily enum \hyperlink{ostypes_8h_a5c976ef3f21f800d03382e5cc640c362}{os\+Warning\+\_\+t}} + +Enum to hold all possible warning codes. \ No newline at end of file diff --git a/software/doc/latex/ostypes_8h__dep__incl.md5 b/software/doc/latex/ostypes_8h__dep__incl.md5 new file mode 100644 index 0000000..15b2e52 --- /dev/null +++ b/software/doc/latex/ostypes_8h__dep__incl.md5 @@ -0,0 +1 @@ +3831788c6a4126193f7d552d26d86926 \ No newline at end of file diff --git a/software/doc/latex/ostypes_8h__dep__incl.pdf b/software/doc/latex/ostypes_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c3d360670d5a75fcbf5c7a1b19c15635fe4b5dd7 GIT binary patch literal 12736 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 ZH`vj@!SQ!?pR>oojYvTuDkp~ce*kwtBLn~d literal 0 HcmV?d00001 diff --git a/software/doc/latex/ostypes_8h__incl.md5 b/software/doc/latex/ostypes_8h__incl.md5 new file mode 100644 index 0000000..3defbe7 --- /dev/null +++ b/software/doc/latex/ostypes_8h__incl.md5 @@ -0,0 +1 @@ +cedfb610e2b9cc11b2d1384eae7621e0 \ No newline at end of file diff --git a/software/doc/latex/ostypes_8h__incl.pdf b/software/doc/latex/ostypes_8h__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..73d3da5092591cfcdaca018913048604184e01c2 GIT binary patch literal 12015 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/printf_8c.tex b/software/doc/latex/printf_8c.tex new file mode 100644 index 0000000..24b4d34 --- /dev/null +++ b/software/doc/latex/printf_8c.tex @@ -0,0 +1,44 @@ +\hypertarget{printf_8c}{}\section{os/printf.c File Reference} +\label{printf_8c}\index{os/printf.\+c@{os/printf.\+c}} +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdarg.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include \char`\"{}stm32f10x.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}helpers.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}../platform/usart.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline +Include dependency graph for printf.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{printf_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{printf_8c_ae2b707b3f94f0857c447e83c833b068a}{os\+Printf} (const char $\ast$iformat,...) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{printf_8c_ae2b707b3f94f0857c447e83c833b068a}\label{printf_8c_ae2b707b3f94f0857c447e83c833b068a}} +\index{printf.\+c@{printf.\+c}!os\+Printf@{os\+Printf}} +\index{os\+Printf@{os\+Printf}!printf.\+c@{printf.\+c}} +\subsubsection{\texorpdfstring{os\+Printf()}{osPrintf()}} +{\footnotesize\ttfamily int os\+Printf (\begin{DoxyParamCaption}\item[{const char $\ast$}]{iformat, }\item[{}]{... }\end{DoxyParamCaption})} + +printf to be used by the OS user. Can be ported to another platform easily by just using another function to transmit one string with the U\+S\+A\+RT. + + +\begin{DoxyParams}{Parameters} +{\em iformat} & Currently supported are d integers c single characters s C strings f Floats with 4 decimals \%.xf Floats with x decimals \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em Returns} & the number of characters printed (S\+U\+C\+C\+E\+SS) or -\/1 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} diff --git a/software/doc/latex/printf_8c__incl.md5 b/software/doc/latex/printf_8c__incl.md5 new file mode 100644 index 0000000..3f63029 --- /dev/null +++ b/software/doc/latex/printf_8c__incl.md5 @@ -0,0 +1 @@ +9aa5779e27f6f23a773f6d6fbf62259c \ No newline at end of file diff --git a/software/doc/latex/printf_8c__incl.pdf b/software/doc/latex/printf_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ebcc7c24c30d3e66191c28dca2fff723fd9e88d5 GIT binary patch literal 15802 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�kHMTdz>u@oB0>`3oh%*QS|ivD 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/printf_8h.tex b/software/doc/latex/printf_8h.tex new file mode 100644 index 0000000..7ffed40 --- /dev/null +++ b/software/doc/latex/printf_8h.tex @@ -0,0 +1,54 @@ +\hypertarget{printf_8h}{}\section{os/printf.h File Reference} +\label{printf_8h}\index{os/printf.\+h@{os/printf.\+h}} + + +Lightweight version of G\+NU printf. + + +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdarg.\+h$>$}\newline +{\ttfamily \#include \char`\"{}stm32f10x.\+h\char`\"{}}\newline +Include dependency graph for printf.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=286pt]{printf_8h__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{printf_8h_ae2b707b3f94f0857c447e83c833b068a}{os\+Printf} (const char $\ast$iformat,...) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Lightweight version of G\+NU printf. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{printf_8h_ae2b707b3f94f0857c447e83c833b068a}\label{printf_8h_ae2b707b3f94f0857c447e83c833b068a}} +\index{printf.\+h@{printf.\+h}!os\+Printf@{os\+Printf}} +\index{os\+Printf@{os\+Printf}!printf.\+h@{printf.\+h}} +\subsubsection{\texorpdfstring{os\+Printf()}{osPrintf()}} +{\footnotesize\ttfamily int os\+Printf (\begin{DoxyParamCaption}\item[{const char $\ast$}]{iformat, }\item[{}]{... }\end{DoxyParamCaption})} + +printf to be used by the OS user. Can be ported to another platform easily by just using another function to transmit one string with the U\+S\+A\+RT. + + +\begin{DoxyParams}{Parameters} +{\em iformat} & Currently supported are d integers c single characters s C strings f Floats with 4 decimals \%.xf Floats with x decimals \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em Returns} & the number of characters printed (S\+U\+C\+C\+E\+SS) or -\/1 (F\+A\+I\+L\+U\+RE). \\ +\hline +\end{DoxyRetVals} diff --git a/software/doc/latex/printf_8h__dep__incl.md5 b/software/doc/latex/printf_8h__dep__incl.md5 new file mode 100644 index 0000000..4cd71a5 --- /dev/null +++ b/software/doc/latex/printf_8h__dep__incl.md5 @@ -0,0 +1 @@ +82c3516b8cd2346d5a219a0f251892e3 \ No newline at end of file diff --git a/software/doc/latex/printf_8h__dep__incl.pdf b/software/doc/latex/printf_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..acf5525211f9505f57412e18cbd262b681ef3ff8 GIT binary patch literal 12875 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\newline +Include dependency graph for queues.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=310pt]{queues_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{queues_8c_a164dd36f8a083fd39b238b6d05910320}{os\+Q\+Init} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, size\+\_\+t ivarsize, uint16\+\_\+t iqsize, void $\ast$istart) +\item +uint8\+\_\+t \hyperlink{queues_8c_a78b4d06b91514e747007d1cc03029b44}{os\+Enqueue} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, void $\ast$data) +\item +uint8\+\_\+t \hyperlink{queues_8c_a0037677933e9d9d089327009032edf2c}{os\+Dequeue} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, void $\ast$data) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{queues_8c_a0037677933e9d9d089327009032edf2c}\label{queues_8c_a0037677933e9d9d089327009032edf2c}} +\index{queues.\+c@{queues.\+c}!os\+Dequeue@{os\+Dequeue}} +\index{os\+Dequeue@{os\+Dequeue}!queues.\+c@{queues.\+c}} +\subsubsection{\texorpdfstring{os\+Dequeue()}{osDequeue()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Dequeue (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} + +Copy data from the q. + + +\begin{DoxyParams}{Parameters} +{\em q} & Q we are talking about. \\ +\hline +{\em data} & Pointer to a local variable where the data from the q shall end up. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (data successfully copied) or 0 (q is empty). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{queues_8c_a78b4d06b91514e747007d1cc03029b44}\label{queues_8c_a78b4d06b91514e747007d1cc03029b44}} +\index{queues.\+c@{queues.\+c}!os\+Enqueue@{os\+Enqueue}} +\index{os\+Enqueue@{os\+Enqueue}!queues.\+c@{queues.\+c}} +\subsubsection{\texorpdfstring{os\+Enqueue()}{osEnqueue()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Enqueue (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} + +Copy data to the q. + + +\begin{DoxyParams}{Parameters} +{\em q} & Q we are talking about. \\ +\hline +{\em data} & Pointer to a local variable where data is stored. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (data successfully copied) or 0 (q is full). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{queues_8c_a164dd36f8a083fd39b238b6d05910320}\label{queues_8c_a164dd36f8a083fd39b238b6d05910320}} +\index{queues.\+c@{queues.\+c}!os\+Q\+Init@{os\+Q\+Init}} +\index{os\+Q\+Init@{os\+Q\+Init}!queues.\+c@{queues.\+c}} +\subsubsection{\texorpdfstring{os\+Q\+Init()}{osQInit()}} +{\footnotesize\ttfamily void os\+Q\+Init (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{size\+\_\+t}]{ivarsize, }\item[{uint16\+\_\+t}]{iqsize, }\item[{void $\ast$}]{istart }\end{DoxyParamCaption})} + +Function to initialize a queue properly. + + +\begin{DoxyParams}{Parameters} +{\em q} & Pointer to the memory where the q is stored. \\ +\hline +{\em ivarsize} & Size of the variable type stored in the q in bytes. \\ +\hline +{\em iqsize} & Number of slots of the q. \\ +\hline +{\em istart} & Pointer to the array where the actual data of the q is stored. \\ +\hline +\end{DoxyParams} diff --git a/software/doc/latex/queues_8c__incl.md5 b/software/doc/latex/queues_8c__incl.md5 new file mode 100644 index 0000000..3b0c813 --- /dev/null +++ b/software/doc/latex/queues_8c__incl.md5 @@ -0,0 +1 @@ +ff89ba684ad5fd6f581a2866862120e0 \ No newline at end of file diff --git a/software/doc/latex/queues_8c__incl.pdf b/software/doc/latex/queues_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..94db8c59338a912df9eb781b221ae5c051ef770f GIT binary patch literal 14726 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 bKfB7oQQzM2&+0M)nOQhsNl8WIL}C9Q$-DFj literal 0 HcmV?d00001 diff --git a/software/doc/latex/queues_8h.tex b/software/doc/latex/queues_8h.tex new file mode 100644 index 0000000..25cd547 --- /dev/null +++ b/software/doc/latex/queues_8h.tex @@ -0,0 +1,99 @@ +\hypertarget{queues_8h}{}\section{os/queues.h File Reference} +\label{queues_8h}\index{os/queues.\+h@{os/queues.\+h}} + + +Implementation for queues. + + +{\ttfamily \#include $<$stm32f10x.\+h$>$}\newline +{\ttfamily \#include \char`\"{}ostypes.\+h\char`\"{}}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +Include dependency graph for queues.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=295pt]{queues_8h__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{queues_8h_a164dd36f8a083fd39b238b6d05910320}{os\+Q\+Init} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, size\+\_\+t ivarsize, uint16\+\_\+t iqsize, void $\ast$istart) +\item +uint8\+\_\+t \hyperlink{queues_8h_a78b4d06b91514e747007d1cc03029b44}{os\+Enqueue} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, void $\ast$data) +\item +uint8\+\_\+t \hyperlink{queues_8h_a0037677933e9d9d089327009032edf2c}{os\+Dequeue} (\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$q, void $\ast$data) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Implementation for queues. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{queues_8h_a0037677933e9d9d089327009032edf2c}\label{queues_8h_a0037677933e9d9d089327009032edf2c}} +\index{queues.\+h@{queues.\+h}!os\+Dequeue@{os\+Dequeue}} +\index{os\+Dequeue@{os\+Dequeue}!queues.\+h@{queues.\+h}} +\subsubsection{\texorpdfstring{os\+Dequeue()}{osDequeue()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Dequeue (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} + +Copy data from the q. + + +\begin{DoxyParams}{Parameters} +{\em q} & Q we are talking about. \\ +\hline +{\em data} & Pointer to a local variable where the data from the q shall end up. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (data successfully copied) or 0 (q is empty). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{queues_8h_a78b4d06b91514e747007d1cc03029b44}\label{queues_8h_a78b4d06b91514e747007d1cc03029b44}} +\index{queues.\+h@{queues.\+h}!os\+Enqueue@{os\+Enqueue}} +\index{os\+Enqueue@{os\+Enqueue}!queues.\+h@{queues.\+h}} +\subsubsection{\texorpdfstring{os\+Enqueue()}{osEnqueue()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Enqueue (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} + +Copy data to the q. + + +\begin{DoxyParams}{Parameters} +{\em q} & Q we are talking about. \\ +\hline +{\em data} & Pointer to a local variable where data is stored. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (data successfully copied) or 0 (q is full). \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{queues_8h_a164dd36f8a083fd39b238b6d05910320}\label{queues_8h_a164dd36f8a083fd39b238b6d05910320}} +\index{queues.\+h@{queues.\+h}!os\+Q\+Init@{os\+Q\+Init}} +\index{os\+Q\+Init@{os\+Q\+Init}!queues.\+h@{queues.\+h}} +\subsubsection{\texorpdfstring{os\+Q\+Init()}{osQInit()}} +{\footnotesize\ttfamily void os\+Q\+Init (\begin{DoxyParamCaption}\item[{\hyperlink{structos_q_u_e_u_e__t}{os\+Q\+U\+E\+U\+E\+\_\+t} $\ast$}]{q, }\item[{size\+\_\+t}]{ivarsize, }\item[{uint16\+\_\+t}]{iqsize, }\item[{void $\ast$}]{istart }\end{DoxyParamCaption})} + +Function to initialize a queue properly. + + +\begin{DoxyParams}{Parameters} +{\em q} & Pointer to the memory where the q is stored. \\ +\hline +{\em ivarsize} & Size of the variable type stored in the q in bytes. \\ +\hline +{\em iqsize} & Number of slots of the q. \\ +\hline +{\em istart} & Pointer to the array where the actual data of the q is stored. \\ +\hline +\end{DoxyParams} diff --git a/software/doc/latex/queues_8h__dep__incl.md5 b/software/doc/latex/queues_8h__dep__incl.md5 new file mode 100644 index 0000000..87bc1f8 --- /dev/null +++ b/software/doc/latex/queues_8h__dep__incl.md5 @@ -0,0 +1 @@ +3073ae54ef008f9b36274eecccfc3863 \ No newline at end of file diff --git a/software/doc/latex/queues_8h__dep__incl.pdf b/software/doc/latex/queues_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..69985b8ea71f8f3da1eb16034d5920dfa6180e1a GIT binary patch literal 12501 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 E19A$f0{{R3 literal 0 HcmV?d00001 diff --git a/software/doc/latex/queues_8h__incl.md5 b/software/doc/latex/queues_8h__incl.md5 new file mode 100644 index 0000000..9b83631 --- /dev/null +++ b/software/doc/latex/queues_8h__incl.md5 @@ -0,0 +1 @@ +2599f4cab9d9150f5f5a12d9687f4d7f \ No newline at end of file diff --git a/software/doc/latex/queues_8h__incl.pdf b/software/doc/latex/queues_8h__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..57a81fe1e0b2a092605f0b8339d2a3d5826e8021 GIT binary patch literal 14050 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/refman.tex b/software/doc/latex/refman.tex new file mode 100644 index 0000000..bf1daa3 --- /dev/null +++ b/software/doc/latex/refman.tex @@ -0,0 +1,169 @@ +\documentclass[twoside]{book} + +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{calc} +\usepackage{doxygen} +\usepackage[export]{adjustbox} % also loads graphicx +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage[table]{xcolor} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\setlength{\parskip}{3ex plus 2ex minus 2ex} +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +% Hyperlinks (required, but should be loaded last) +\usepackage{ifpdf} +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \usepackage[ps2pdf,pagebackref=true]{hyperref} +\fi +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large Embedded\+Etcher }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.13}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{Data Structure Index} +\input{annotated} +\chapter{File Index} +\input{files} +\chapter{Data Structure Documentation} +\input{structos_q_u_e_u_e__t} +\input{structos_semaphore_handle__t} +\input{structos_t_c_b__t} +\chapter{File Documentation} +\input{error_8h} +\input{heap_8h} +\input{helpers_8h} +\input{ossettings_8h} +\input{ostypes_8h} +\input{printf_8h} +\input{queues_8h} +\input{scheduler_8h} +\input{semaphore_8h} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{Index} +\printindex + +\end{document} diff --git a/software/doc/latex/scheduler_8c.tex b/software/doc/latex/scheduler_8c.tex new file mode 100644 index 0000000..6136331 --- /dev/null +++ b/software/doc/latex/scheduler_8c.tex @@ -0,0 +1,146 @@ +\hypertarget{scheduler_8c}{}\section{os/scheduler.c File Reference} +\label{scheduler_8c}\index{os/scheduler.\+c@{os/scheduler.\+c}} +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdint.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include \char`\"{}scheduler.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}heap.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}../platform/system\+\_\+timer.\+h\char`\"{}}\newline +Include dependency graph for scheduler.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{scheduler_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \hyperlink{scheduler_8c_ac59673f226b3291f835a0faf010ad409}{os\+Scheduler\+Get\+SysT} (void) +\item +uint8\+\_\+t \hyperlink{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}{os\+Task\+Create} (void($\ast$ifnc\+\_\+ptr)(void $\ast$), char $\ast$itask\+\_\+name, void $\ast$iarguments, uint8\+\_\+t ipriority, const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$o\+Task\+Handle) +\item +void \hyperlink{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}{os\+Task\+Delete} (\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$iotask) +\item +void \hyperlink{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}{os\+Task\+Delay} (uint8\+\_\+t idelay) +\item +void \hyperlink{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}{os\+Task\+Delay\+Until} (uint32\+\_\+t iwakeup\+\_\+time, uint8\+\_\+t idelay) +\item +void \hyperlink{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}{os\+Run\+Scheduler} (void) +\item +void \hyperlink{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}{os\+Print\+Task} (uint8\+\_\+t iindex) +\item +void \hyperlink{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}{os\+Print\+All\+Tasks} (void) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}\label{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}} +\index{os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Print\+All\+Tasks()}{osPrintAllTasks()}} +{\footnotesize\ttfamily void os\+Print\+All\+Tasks (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +Print all information about all tasks. \mbox{\Hypertarget{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}\label{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Print\+Task@{os\+Print\+Task}} +\index{os\+Print\+Task@{os\+Print\+Task}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Print\+Task()}{osPrintTask()}} +{\footnotesize\ttfamily void os\+Print\+Task (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{iindex }\end{DoxyParamCaption})} + +Print all information about one task. + + +\begin{DoxyParams}{Parameters} +{\em iindex} & Index in the T\+CB array. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}\label{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Run\+Scheduler@{os\+Run\+Scheduler}} +\index{os\+Run\+Scheduler@{os\+Run\+Scheduler}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Run\+Scheduler()}{osRunScheduler()}} +{\footnotesize\ttfamily void os\+Run\+Scheduler (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +System core. Scheduler needs to be executed by a timer interrupt. \mbox{\Hypertarget{scheduler_8c_ac59673f226b3291f835a0faf010ad409}\label{scheduler_8c_ac59673f226b3291f835a0faf010ad409}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}} +\index{os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Scheduler\+Get\+Sys\+T()}{osSchedulerGetSysT()}} +{\footnotesize\ttfamily uint32\+\_\+t os\+Scheduler\+Get\+SysT (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +Get the system time. + + +\begin{DoxyRetVals}{Return values} +{\em Gives} & back the number of ticks since system has been initialized. \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}\label{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Create@{os\+Task\+Create}} +\index{os\+Task\+Create@{os\+Task\+Create}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Task\+Create()}{osTaskCreate()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Task\+Create (\begin{DoxyParamCaption}\item[{void($\ast$)(void $\ast$)}]{ifnc\+\_\+ptr, }\item[{char $\ast$}]{itask\+\_\+name, }\item[{void $\ast$}]{iarguments, }\item[{uint8\+\_\+t}]{ipriority, }\item[{const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{o\+Task\+Handle }\end{DoxyParamCaption})} + +Spawn a task. + + +\begin{DoxyParams}{Parameters} +{\em ifnc\+\_\+ptr} & Pointer to the task function. \\ +\hline +{\em itask\+\_\+name} & Internal task name. \\ +\hline +{\em iarguments} & Enables passing user-\/defined arguments to the task. \\ +\hline +{\em ipriority} & A higher value means a higher priority of the task. \\ +\hline +{\em o\+Task\+Handle} & Pointer to T\+CB. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (task has been spawned) or 0 (F\+A\+I\+L\+ED) \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}\label{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delay@{os\+Task\+Delay}} +\index{os\+Task\+Delay@{os\+Task\+Delay}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Task\+Delay()}{osTaskDelay()}} +{\footnotesize\ttfamily void os\+Task\+Delay (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} + +Delay function. DO N\+OT U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! + + +\begin{DoxyParams}{Parameters} +{\em idelay} & Delay in system ticks. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}\label{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}} +\index{os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Task\+Delay\+Until()}{osTaskDelayUntil()}} +{\footnotesize\ttfamily void os\+Task\+Delay\+Until (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{iwakeup\+\_\+time, }\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} + +Delay until function. DO U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! + + +\begin{DoxyParams}{Parameters} +{\em iwakeup\+\_\+time} & Time when the task execution started. \\ +\hline +{\em idelay} & Number of system ticks until the task shall be executed again. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}\label{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}} +\index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delete@{os\+Task\+Delete}} +\index{os\+Task\+Delete@{os\+Task\+Delete}!scheduler.\+c@{scheduler.\+c}} +\subsubsection{\texorpdfstring{os\+Task\+Delete()}{osTaskDelete()}} +{\footnotesize\ttfamily void os\+Task\+Delete (\begin{DoxyParamCaption}\item[{\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{iotask }\end{DoxyParamCaption})} + +Simply delete task by setting the function pointer to N\+U\+LL. + + +\begin{DoxyParams}{Parameters} +{\em iotask} & Pointer to T\+CB. \\ +\hline +\end{DoxyParams} diff --git a/software/doc/latex/scheduler_8c__incl.md5 b/software/doc/latex/scheduler_8c__incl.md5 new file mode 100644 index 0000000..d3f3e8b --- /dev/null +++ b/software/doc/latex/scheduler_8c__incl.md5 @@ -0,0 +1 @@ +946fa726a7e31dfe2fa9d504cb45971e \ No newline at end of file diff --git a/software/doc/latex/scheduler_8c__incl.pdf b/software/doc/latex/scheduler_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..627f248ca83f31d7b2c90065cf826b4f5a1629e6 GIT binary patch literal 16178 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/scheduler_8h.tex b/software/doc/latex/scheduler_8h.tex new file mode 100644 index 0000000..2c7d4dc --- /dev/null +++ b/software/doc/latex/scheduler_8h.tex @@ -0,0 +1,156 @@ +\hypertarget{scheduler_8h}{}\section{os/scheduler.h File Reference} +\label{scheduler_8h}\index{os/scheduler.\+h@{os/scheduler.\+h}} + + +Scheduler of the operating system. + + +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$stdint.\+h$>$}\newline +{\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}ostypes.\+h\char`\"{}}\newline +Include dependency graph for scheduler.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=297pt]{scheduler_8h__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \hyperlink{scheduler_8h_ac59673f226b3291f835a0faf010ad409}{os\+Scheduler\+Get\+SysT} (void) +\item +uint8\+\_\+t \hyperlink{scheduler_8h_a76739fd1872ff1f867ea41e853131a21}{os\+Task\+Create} (void($\ast$ifnc\+\_\+ptr)(void $\ast$), char $\ast$itask\+\_\+name, void $\ast$iarguments, uint8\+\_\+t ipriority, const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$o\+Task\+Handle) +\item +void \hyperlink{scheduler_8h_a790ca9c0d2362305790eb3c4002e3da9}{os\+Task\+Delete} (\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$iotask) +\item +void \hyperlink{scheduler_8h_ae1e7565174265c0107749d7cdf486c01}{os\+Task\+Delay} (uint8\+\_\+t idelay) +\item +void \hyperlink{scheduler_8h_ae4c7af5e41838a9299b00d455fb8f454}{os\+Task\+Delay\+Until} (uint32\+\_\+t iwakeup\+\_\+time, uint8\+\_\+t idelay) +\item +void \hyperlink{scheduler_8h_ada28e10d8b44223004cab16b201df2d7}{os\+Run\+Scheduler} (void) +\item +void \hyperlink{scheduler_8h_acd27cd0dcb4e193125968decdd238ff9}{os\+Print\+Task} (uint8\+\_\+t iindex) +\item +void \hyperlink{scheduler_8h_ad4967a4ccbd9e8901a1d79a9ee3ca79b}{os\+Print\+All\+Tasks} (void) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Scheduler of the operating system. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{scheduler_8h_ad4967a4ccbd9e8901a1d79a9ee3ca79b}\label{scheduler_8h_ad4967a4ccbd9e8901a1d79a9ee3ca79b}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}} +\index{os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Print\+All\+Tasks()}{osPrintAllTasks()}} +{\footnotesize\ttfamily void os\+Print\+All\+Tasks (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +Print all information about all tasks. \mbox{\Hypertarget{scheduler_8h_acd27cd0dcb4e193125968decdd238ff9}\label{scheduler_8h_acd27cd0dcb4e193125968decdd238ff9}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Print\+Task@{os\+Print\+Task}} +\index{os\+Print\+Task@{os\+Print\+Task}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Print\+Task()}{osPrintTask()}} +{\footnotesize\ttfamily void os\+Print\+Task (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{iindex }\end{DoxyParamCaption})} + +Print all information about one task. + + +\begin{DoxyParams}{Parameters} +{\em iindex} & Index in the T\+CB array. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8h_ada28e10d8b44223004cab16b201df2d7}\label{scheduler_8h_ada28e10d8b44223004cab16b201df2d7}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Run\+Scheduler@{os\+Run\+Scheduler}} +\index{os\+Run\+Scheduler@{os\+Run\+Scheduler}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Run\+Scheduler()}{osRunScheduler()}} +{\footnotesize\ttfamily void os\+Run\+Scheduler (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +System core. Scheduler needs to be executed by a timer interrupt. \mbox{\Hypertarget{scheduler_8h_ac59673f226b3291f835a0faf010ad409}\label{scheduler_8h_ac59673f226b3291f835a0faf010ad409}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}} +\index{os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Scheduler\+Get\+Sys\+T()}{osSchedulerGetSysT()}} +{\footnotesize\ttfamily uint32\+\_\+t os\+Scheduler\+Get\+SysT (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +Get the system time. + + +\begin{DoxyRetVals}{Return values} +{\em Gives} & back the number of ticks since system has been initialized. \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{scheduler_8h_a76739fd1872ff1f867ea41e853131a21}\label{scheduler_8h_a76739fd1872ff1f867ea41e853131a21}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Task\+Create@{os\+Task\+Create}} +\index{os\+Task\+Create@{os\+Task\+Create}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Task\+Create()}{osTaskCreate()}} +{\footnotesize\ttfamily uint8\+\_\+t os\+Task\+Create (\begin{DoxyParamCaption}\item[{void($\ast$)(void $\ast$)}]{ifnc\+\_\+ptr, }\item[{char $\ast$}]{itask\+\_\+name, }\item[{void $\ast$}]{iarguments, }\item[{uint8\+\_\+t}]{ipriority, }\item[{const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{o\+Task\+Handle }\end{DoxyParamCaption})} + +Spawn a task. + + +\begin{DoxyParams}{Parameters} +{\em ifnc\+\_\+ptr} & Pointer to the task function. \\ +\hline +{\em itask\+\_\+name} & Internal task name. \\ +\hline +{\em iarguments} & Enables passing user-\/defined arguments to the task. \\ +\hline +{\em ipriority} & A higher value means a higher priority of the task. \\ +\hline +{\em o\+Task\+Handle} & Pointer to T\+CB. \\ +\hline +\end{DoxyParams} + +\begin{DoxyRetVals}{Return values} +{\em 1} & (task has been spawned) or 0 (F\+A\+I\+L\+ED) \\ +\hline +\end{DoxyRetVals} +\mbox{\Hypertarget{scheduler_8h_ae1e7565174265c0107749d7cdf486c01}\label{scheduler_8h_ae1e7565174265c0107749d7cdf486c01}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Task\+Delay@{os\+Task\+Delay}} +\index{os\+Task\+Delay@{os\+Task\+Delay}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Task\+Delay()}{osTaskDelay()}} +{\footnotesize\ttfamily void os\+Task\+Delay (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} + +Delay function. DO N\+OT U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! + + +\begin{DoxyParams}{Parameters} +{\em idelay} & Delay in system ticks. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8h_ae4c7af5e41838a9299b00d455fb8f454}\label{scheduler_8h_ae4c7af5e41838a9299b00d455fb8f454}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}} +\index{os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Task\+Delay\+Until()}{osTaskDelayUntil()}} +{\footnotesize\ttfamily void os\+Task\+Delay\+Until (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{iwakeup\+\_\+time, }\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} + +Delay until function. DO U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! + + +\begin{DoxyParams}{Parameters} +{\em iwakeup\+\_\+time} & Time when the task execution started. \\ +\hline +{\em idelay} & Number of system ticks until the task shall be executed again. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{scheduler_8h_a790ca9c0d2362305790eb3c4002e3da9}\label{scheduler_8h_a790ca9c0d2362305790eb3c4002e3da9}} +\index{scheduler.\+h@{scheduler.\+h}!os\+Task\+Delete@{os\+Task\+Delete}} +\index{os\+Task\+Delete@{os\+Task\+Delete}!scheduler.\+h@{scheduler.\+h}} +\subsubsection{\texorpdfstring{os\+Task\+Delete()}{osTaskDelete()}} +{\footnotesize\ttfamily void os\+Task\+Delete (\begin{DoxyParamCaption}\item[{\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{iotask }\end{DoxyParamCaption})} + +Simply delete task by setting the function pointer to N\+U\+LL. + + +\begin{DoxyParams}{Parameters} +{\em iotask} & Pointer to T\+CB. \\ +\hline +\end{DoxyParams} diff --git a/software/doc/latex/scheduler_8h__dep__incl.md5 b/software/doc/latex/scheduler_8h__dep__incl.md5 new file mode 100644 index 0000000..369f247 --- /dev/null +++ b/software/doc/latex/scheduler_8h__dep__incl.md5 @@ -0,0 +1 @@ +44a56d32de7ece78fb4c0694555b051e \ No newline at end of file diff --git a/software/doc/latex/scheduler_8h__dep__incl.pdf b/software/doc/latex/scheduler_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ed13b1e15d0181fc1e75ba63af62aa2e8ee1da3e GIT binary patch literal 12924 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 literal 0 HcmV?d00001 diff --git a/software/doc/latex/scheduler_8h__incl.md5 b/software/doc/latex/scheduler_8h__incl.md5 new file mode 100644 index 0000000..7627eda --- /dev/null +++ b/software/doc/latex/scheduler_8h__incl.md5 @@ -0,0 +1 @@ +f8d2bb5e2b40aa47c181e74d94d9a472 \ No newline at end of file diff --git a/software/doc/latex/scheduler_8h__incl.pdf b/software/doc/latex/scheduler_8h__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..be26c59a21b299ad9ab339b6a73f0a07bfaeb107 GIT binary patch literal 13240 zcmb_@Wl&v9w=KclH4xZXaM-xJ2e;tv0XFWM;O=h0H3WBecMDE%hv0r8Ip@<`ukMex zU`dajb9VQXuG&?j$>l}F=osl);mK=`%I@Kr0YHGY!6$eg9sq;1G04=x48ZaNDZ&E) z00uF0O9x}Sm$#+9gRzLQp|z1QJRcvty@Q>xz7@Pn+PC;2kdh!`!1Xz1l{9wpLPly! zxL*`?1z2TCqmPatT_U!hi@VntoMilDv7kaOr~P)A>BD_h`pM^<=i{=U6EGpF*Ti-G zEuztHakMB`w7Z7{if~ASo8*!vZd%;Kg}tCc`Z!MQIXHW;Lv}t>wFXOLnc5XAzy+pc zHXz0l%c_-qA!k0Q3C|lru#eC}aw=K0acKAowVp6z%#rMwZkn+?hNEaIj%&=zkH1ml z-F&*f6qw1kG>r3O&diB@%r#+&Qg3H(pQBmBD(5s#5mp44MAJ;w7zux9GWd+nc>7>@ zTM>Er1d8<>%7J`{0mTwb?ky+sjAs1{ReJJJU{ch4N4 zxIgY*w7*gr`qXR+Q=dr4e0y;+WkT-utI8Q;m-s0SDei_wyPHe-0ADpJm<# z@^wi+3`?4A`Ovjf(NT|L9%4%DlC$A|4{YB_{=EBBWMY5xgVYKVsJXMw; zM~ilB;3?ZT!F$N!6V>M{%zT(F{%{;kp{e>Ur<&y^hUQsxYzmhacOJ~Vn0GodS{(4U z2B?F0_-BKaCKTX*vv$uBI5ax{gL%HulY#xs#)dZ8FL@}Nhc#&~-!i6|=JTe>&e15tOR-?iZGaM0g@ z)9mFM&OtKCvj>dU%w&}bvvUojXVK1b`MFX1*bBVtjBC!U&x~*3sV5U8d6*$qj$tL# zStQ$x9${)m@&+qJT)2QY1{wWT0xw^$#q(M*ukV+dVP^xr_P@56{!v=Li%HbQL0rk< zrH}wTJg>mZ#h?#-X#g061p$lz21EUq=Sz9Lbo_ZTh*^Ui{zck^4oC+Cu>M`1FG4T> ze+|a=kHG*8%C0uX00wz|Q{&$Q%j?@2zt~~?TaQ7;*vMR8$l3*<`2qm}Oq}chCPpTJ z_HSw7moZ<&?E$Yl!=G(H+|Jt3=3nOV$Nq2h?}aG6jB2M3vbT91%h2_2SQ6l1=lFXT zud5Y)krFX>GB-3<6c>6G`D>Yq#`e~Zc813GfLE6({>!S^U)uk%J8}GDTL0Vb^g7I+ zZHy7X$Oh#2y`(%Z-1M{X+01e$YngtU;(5{4b-OAsCDYscdP zq)05`4nBa6tnL{RCIIQEY*{`4&GK-;ga?f`Ng+aJ~akGJ%-@pVU~THQiuYd3_(& z=>hOq!NCDMWT?gYPQN$LUXVa@i(RIw%F0Kqb#!!eaJBa59X z9s+16cW^{bPQpdFwFl3q`+=JYh>x8BA?LMRD3{pAH?ZxAnKYo7x43^?X_o(l~pnD=hN?wwcNHTDf%Sy&jQ|5 z*xsn-yb&lbp`FJt%7YG2UwBGXeR^~Z>3JajNH?RUf4R?qLy&>_L-o`i(JzHYUl z;ZRV3nO(B?LxFvHf_4QHNNp3;0UN)vjykCj_4bWC=Xii>AdDw|`5ct>_FamkdB*op z4tPT1qi%Y6B*5L{d(ciCG4wwcB0fVr<}6r!_N`N*=ZZY*`%XESnsfON zTi+islgp>(3mAXy^b;>(L79kLRvc2KpHPAxWEp?E|9|E~zNCx4>h+I~M=S+T$K* zUJz9!%7UQRAV>xVNX)_}?5T1h?fI4vXox#WVx*Vs*5u2kmznGOE;m7<5q8tUfZm+x zXt}xTik0S}l&vT%WFF4tZ%OnYPSOq?_cG+4KvUfID5puDK5KPf2@|eA&MFV=SGA4i z7%zN0Ws18q$xaA0g;5p3@e_-3HRqTytOPNvlR90RtSbr?vvn2LZ z3>~k2T4~jZd1k!5IRTvg)asSlJl~y5fV{()-&d#W_O_Nh1P$UHpY$RS6{3tipJSf^ zW93qdgi;^o{@$ZtCPSu)Td{gv6X)>eEs@QLaQAr!%>*72!p_l0UPEWKj5{Is4m*6w zWhHe_E-hQ?Ty68dZZ)!~z%5kG;YP3_Pm(ftePA=F3BvX=rf~aFD-y1S6&vALL&dX7 z3FlzpClhFEkY}W8t3XM&`A4=bNoHc}W&<>=;q8rFKx>M6TW*Py(YEJ2)!|jzYy%#* zJKNFMZhKBwmyo3!*Rit^h%ga)zBXsSfjS)8oo!b{b7%0$Q%@L7$Tlodum|PvIe$B?M-Z*1P<%)evM3$M2@p(`X zQoTR|_5-Z0bNU{Sx@9QKxM4O)8*K254z*dRp;bX!)n&Yio|jYO0D|fagAyL5tL=h9 zndM<&_BJy+6}pgcVdr%Bgh3YALK>0WnkY_fY|phorT7en+yeXoK)tod<{j%WFlXY_ zFVm3%yE^6zGnW@ZA$n^cF+;gUdPseHc|W3ecvS##>hm@j4#u)>ixH`LrPnAMPg8Bm zwyIE5zz)oU=CL{+7iQ%EE45Zr^?Y}dd6965)`Ny81h~GaEEPHHJjA;3m!o3pkbuSj z&>k&HU*a{Fh$a1n+;;^1j~%)sN3cN)VbbqAXExlAn}4bDb;ZC=vN_eRT#zd<1Y#>e zI1oNeP<=IQp*H1CC-Y$=#UF`WN{u^^>ZmdH&u4H!bQqIO#{G^ty()PZ1f?{;bJw^_ z0^66^%mhEtntiv~!2INQuA?i{K>BgBJ`k{ms4TRxd6f^&ZFNM(KZlctNvtO{r=Jo|RKcAg7{-E>KbOt^Y%wo+D&fqrXq3`~#QIpi2t~&|g{@l- z2o!44_U?dBw$?DZ`6Fd!W)9vW0aAOmm|WO|&9VkeJSn@sV-!Up9Tn1t<)Wy5*wihF zQ+CbCx1xx4IO1HcXTc$!N|<8<)UO5R4n8Sss@BxSVHbb-n&1*+ipdtar1cf&+=|wV zU{)JABIcD*+at!rr*t;7x_mtRHFGqUg)LUnmPWU*C?D){?^EB@)wg;{K9bltre)6KR$ig$Ns$`mcS7^R2OG+J(#BHEXA4Q(7Q22?xSrJOhlZo-~s*;cY-q;f`4hAR}( zO?y}Uqqq*#x$vd7oIi&xg$I^t-~5cY9w1!g+g0HM85P1gPpEZW}>yF7xKRc3B|*jWF?2x|vw7 zh$MXYnJJ2Th6+V(t)m!*1Hx^P-O;QaPez$^WVS2)0JGOo(<+H_+J(iwTMNUJGnp2s zDRL?64Z<6t!@4OB33DYJ27VYls+76=nqVc$aSI*9Po?;r_&Rl2gZSooIysnx6~G#e z+LlZEP*Flp_n0c6u*%iaRMIK1p7*GRY{b3zOVToqfy3hZh2M}klA)1eA}zqCRJTCZ zXwC=WgokBVan`oaKM;*y_7uTRU3n&!R%)d>3u3Wa(0)VDU6+|Qf`bt4oO2>h6*Epn zk)VQI=bTUd`&?^H#h4|LH3RlYP1{)9skc;1XAXZ(nk#1<-}WP^d92-#nxrWh zt4@xa18*nCK!E`YCyS+H@42(gG;Wn{I&GM#)MxS1v+JKaE*Bd^3i zcR+^!o=8>-L1+Z~SS=rC07-vC(5e%KZjdQCaa~Wp1e2j%T+YFVt<7=z8QCII;;p7y zd@{Z>17gmFSg0ZL%xIOf8BYyoasRI^gGYCF1%*4dq}f^w_Ebo8bVPSG?QUKq;gi(IntgSe1kTY>z~d z9$6B9*xcza!s3iw#LW|N8|hhq_*sj)$Xq7M*v@sBk}xYU|Dz7iG_jScOe@N(0Ji`I zncG;ya>a_rcM##7)dt(41Ya&DgrBzZTSmNv7d;nJho5z*ahVfUiZ_?JV{Ye@M~Sqr4)kGTAeCcM!h-N z(-EK49?McFeGOe#zU-Q&y)a4!XP9cKFZ=FI?0Q2x6T)hJ!a2{6TO}heHj(pYw@hb2 zevJI(6hHaIrT|96mE|{76-eLCmhug)9xR zU|4dIG`_G7KSfLFTgoQvn@zGHL!xU3ilAmq`;y&)7YS)}pU z6};h=4xAt3wat@A5tVp;k!6r3NLhL88`tRg#HV%0l}2I-{iyVfF9g1!or1!v9)fA5 zt(eXfy$9x*7jaGkQu?h(@Lxs zyee1#NT-$OPUV0qOCV_xSEVj#BT+Xn8S%m7KDJ~c4tnD%#S8Pj0~mI=NZ;Yj z&wY9+R(mTMCiPBMS#>xczw%PvaGz5uBdan__+PX;^n?i6D-F8gDQWTCS?GmgSh(nK zHe*qfqG&Kz7A^>yODZZ)umf~js(@a@PKz~zpvxDb|Uh~D@}(8d?q+|B3rE zOo&)@+m}ATH{W^TbDhidmz@g)H(AlelZ!AZ?X7cYhM0_X(BO_f!w`tmX%V0``E`~1 zH0%ArsxM4(q)A}Ws^`aX7UF;(+PoWaV~$xWcj-UhTWGQnzh8Ev3#S_x_t0xj`-qaW)2?ND z!V;-!b(WWT)qMz63?^i#mzk*{mPa1x`>k$0E-IDTE%2k98gfL>aMV2GXAXATdMhen z6Q3o^Em(-hp&_|whYA1h;5ufh(PB;8_be%Ju_Q-?XB2TPAR<>{``9(|jvpqt>fg${ zSm|QBgy~86)+R>}Kf=p`@an1qRa*Fmr*oDTPsnNCXTxl1hRWfnM3FoCuTsd6<1a2* zdGWMaB!@UWo`z-1o;YeX#^`fsm>Z;)`-z&9|Ey0w!I_!Ix&_t?UZro&?s};Z)kSTI z?Ha^VV(Cb*L&W!yeN|v7eC?qR#Gbv4Aa> zq&+!0{dzJh$^$V|P`7=OeBs!fK5D&!HeAnq!2BVO`SHCN{P}=G0Iw zT^*KU7jK?eFDL3}!$L<-zYLbtRnxqH&8$)9-sLj=;6Q`*Q1RZ5_Lc1jWEu}a5QS0L znJZ#UguuD*{US)&dMjV)jokrkqFw*316@O%10uetRb?D1Nnye&!pbEENX*kJ(&o8ENGd;^p zBIB6|bSl>!RZWzJ4!_%jKHl+g9}P>g+|#zdd&inWA(?Zx`M`SOFHalxlh3I3TH!f_j{!EFLXZv81+Xn(i=cF8qx_L<(4?i^ksq*q<@ zTY|cG;(DVy_!8>eM^-=L8#QPhrlid}Zz`VQ?M`)%&Lg~=9zpNzyfrwQj5f)e!N$x= zsCZ%bh-nDZsAS_GrjVYBg6|Q!TGyDZIawb8IVhP2s|p|(TkGRoN_DpG?Z(E@kwa7m zHDQzaD!rddEoD^Sxl;!pb?C0g%Xld5c$}r{m1#>P48H{NR!C|hqa(fr7e!F^)U9k$ zJsCVSH6!^?#QQYuLhzZ>RPa5cZ zgW<)iE}*z+)iaX|2?j$%M(Lrrt)A0F=a~@JJp4r=268}92tsn$+|!^MW=@qVRmb}a zlA+*T3svqq*GrK_aiw_k<>?O;qT!+sCsR5@a@MgjKDt4A86W78im@_^Km|9_)~Vs`uR_b$*VMEu7=E*#Tl<%<}6fg?~h!> zqRbKT>2B6WS+-q0OK&4aJX=9hfX^3a zW?u~~Oe71_Zqr&nnZ(+5@?+WGnlSa23I0f=HQYKCd4s?{9!U8`ti^?W`F4c!qnC~m z+2ps*U&0dsZKnib%@y&kYGLCOZNC0|XtJ1kggNplSod7{ac%-G0}O@>m+fL7=z=%P z&U>a*FC6QYB?S(Mw(Su!C{r~KKEa|dY!r@xj%M9Rbi35*8}6(jp#ybtaf|Z4!WTv7f_AN86v5d))DP1_yzva@y7%hPUs|N*+)<^j{ zG6ONY#|Epux?>J<Mri6^$q! zPZ9oHg@UKb`{iRkBB$M*L|vjXiag3goP3q364fDJt{xXuPxetrs2j0yW1zjRsLl<% zM9|o7o zJX`lgS+O!BECeA~m?qZUF+9C6JNFcV6k5HlK;-J|I*4Ym!pt|6@2in!)5excx)qCO zr-RyDbzk&AuDUB+Ducq^e)$Eua$!-mF9`qrGAq7$MRH6?2}jerUq{I1G(0v1H( zb^_n6U|p8j&a)(Ne;+I%(@L+cok%=@+3|#I1OJ|hM0(B9Z@71p?G_!3PqSt2(}MoE z^MD=qfaDRQK_KqRUX{zIeJev!+cX#$=tV5BvDLb=N4by}2~QpS-I?FX$lTVrKZaj_TZY?O9MHF_GlTHg`mv za?E)91lafG{#%lr^PRx(kkT2v0b2Z4o>In&FCxAXY?;O))0yaIB2zItn8ghm+C^Rq z1y)`2d%Oh|WgQ6Da_F?PZ1^{ByN=ksIhxX&-~iJj@<=QzUJNhk}d11oaT^+o$}N$)uUwrfRe+5qFz68STJ* z_Z;8*L5SgK8_Rc!7uE!Fx^*6)hm81Hbyvie$yEr*y=xnOOJ^?WqliOMoOb8cp(Hov zwDVt|a_B@Xe>tq&xMk{uI;_KbDPZu%?T{{(t`MHdpLE{EkW!n0Bl5C6!NHbYf5ZJc zK!xhoZtT50xAjqMD^Tgtb1lE+poTw%YBW-@OC(dxe2EMYRM4cHHLz4AWHP1JIN+uR z><)Ge-^ZEK5-MRF42)G^Ov#UA+yiZyQOI2ska`&RUrc)kVcGlkgi~C)s<3v zmi67oV(hl#;4Isgma&h`-+G+ht2CZXC!~Z`m&IW3dqh;7EGlMEN)q6MJ*HXOH<5P0 zDRmqo8KWwvWYtp)DU`5hgot)7O`B$j*(t+G;=y=*Vs5bxd9!AkUXh^qP#>@7Nj^|Q zcivr{*yP8P>s(z;jxNB5>oO%VM<;;I9=pnq^5qUOh6ky_z3z)z_(&;yHuhjT^;<2+ zt7{?Awr&(Vt)?q3aY-5t2Hav+?qJ1Z&v#bwihgT&$44B5V{@pkl20D7Zmd9_2h=uk z#c$bZmHc1G4*PCI>_%#yMC|}tXu&6IoEzbA>l{8KNA#CCINvP4xH*uy@8r$tC3RLb zBk$M@HYsj=J>|S%WrNC7BIz0J3e}k~okckmre^Dc4IObtw?9|jUZwQa>De5^e_O21 z&3yh%+C~%G5fb~|fM<8AvCA#ZZBhMTv_`!=%PQDpcRa9H4R3Gq2rIOgVN%@zNwf1#RwVL-7ES zrF4GH?eQ(7WJ1V_w55(+LRCoWXcggl;h+?sbjq?GS(>B$8o4|KVd!>4Z={aIIkp*fmrZXldzo8$MjhB4?$YHw7!>jiTF1PT zY2-{WnR^;naL5qz6Ab&&bN7bW)p?F-uD%ugj0_0@BvK({?a!VKyUVKvh(1$zNA*v;bS0oVE$_VuQ4*)p!lRYjUDj8-BnXD>1}7?Y%-fKy3cNhOi)3u+j8n?Pl3Ql z!^sa0=s*OSP=js%Y7M-vUvFC%)=4vxTB4B;@N;DuGATdJs36{XZ1UHzpJipPyLoN) z#eB92TbYBKkO-H17tPfuvUKxsIfms${)~!7#nRG*uLn8ZY#TW*m`^80q*|@%LZJ}V zHr{?v(M3C8;L+FE#T?gKcE@soEcmedPU)t##GpRQ0($I+Lr(7{TKbI*#U+lGLCByi zM^`MXZhS)i4DWD_0`G$)Sg}1qSKKw))y1}+6n!Q*4wM}P#?Lxjp*YKhM_w+jD+Mi! zyUNk(22EDZ38VYN90F~P9>WmRcxi>{T|r}6>>06(nR)QjG^*QNct64nQ5l0leLQ<{@=Ope}!J}tu#E6D0G8b z5=|K*hMT`A@As*;_f(?jw zRV9?j8(Ta}X3(rP481fu>v^0<^`n_IG~p5XS~GZb4k~R;-=m+_cJjT;H@Ot62gUcV zawN6dFK`-hpHUpOiIjy7eJ$>8-{w@?Vn-ftZj#X)cMi5+V`i8KwS^2*R*NULn1$9~ zh9;y!vW06E(4PKeM~z((rvZ_`m%2vliaF_{ja`no?wmtzhNMPiZM`=lH)gY)}Yaix{Lt`jt*1O-EcK)l3Kc3 zmc)b88EMmH0>&x$80-w0V zovOu2&=pm+-r1a-f={cLJ4lz{fc2PXl)tzq5j8D*L2zqIkDct#mAaQeQoy8P5yDrKdmTS2Iw5mzgA z6tP_&)_&;D@ihsG7|%M@9d1URiZIO(2pE@N=Yj=!DRm6Zd%Iem+85-%30J4c8!dL# z503c8j0X|^xf=H;eqCt%a$QE(0rRTa{FtB$)=1=Oeyn-8=NS6^Y@EM*jeb%MLxYUZ z=}jvCs?OB9qg3kDv|X}Fc)Ob#*L@x*gCFMzC2c~Rg+^MlJpROHkegp`pOWm^{NynW z9Mo0@;@sgbJ0vl3Z-KcHesB*{dhuP(QN9K6f`VGs>QR=wW;^Lar^8*IR`;cy0~~`brOKJ=hpA2d+7aXJoiYm*_A-UNAG!c25mJqu7+=M zwhwD>tz7sIBEM2<{-B@^QhleN)NN*5OML-dQsObjcD)eeW5*YYX7AfNbH>*`ypuUT zqU(RTBnn$OGlzMe$l;sAln5QncW=Bf{j+sq4LZ~vBk7wF?Hg_jo{m+Q*ftId1mzPW z*s_}VKzt^bwswy}tbE$yNft8U(sVQOvE|Woqhd&^cxlc=mbIQ^$eMgv}|f`Gcr|VNmF`^|hF-kLpYVW%I=1^`%LCr@J#?XJD|jCl+*-0r62sGmgpB%Zf}Jh{wjr!;@H$LFNGrMOInNZy(%7kL zz)8mp-?LFh1S$@B1JWagATD`07CRWI$$PS7i6VP6d-22TL3t4RAsOAH6d;m?%xcVy zdykTRZucw$8dL+S`Gh8*lWFCFkbMGkOvG)A_u@?e;*Mr@L-7v5d}{r#c-lB*-w(k} z(U0Q7p}s^6lS|QKGo6ZOGN8V?EQ6ZyChhhPHmtm(*t(cXxGdxSdASs%b%>G7^({#3 zin>mX5Ha<9d?sjo;UDJRP{WtF{gko%-(&s883Whr-2DT4m+jQjn`ORh8I)#qm{esK z`sg|+lNc}^H4(v{+s>OnCU*_Xtyb~rWnHmI98DdxF~<<3C8KRK$2D5h1?vu!dLkiE z*6uL`-3b_|l;O4$r*TNN2h*hAt@(fx6{}OhBOYixU6vq_VN`1^a>y%}EzW9W&87QG z-4Sey%Ts!d{fZN-HBAqjLjDN$2C~-3pW#t&YFe-;a$L?mV5D zSlu<)^&+PwD44wOr{n1jCq;7z+K=RQ$IomckNz(2wBC(&DzIYEJIaNXHN^#|aNOQ5 z;@Zto@M|EIbraB}W{#+x!1_Yr3)3oGq)nssQiLaqIA z)P_{g@j@@?t7AMrhXpj(MW(03{ z52AQ;ORd{_6ST{<7^sh#ejq8Xvx*jDD0$c7q_tbxl@PCF(#TytCYM3n@m5qBlvWeA zxqZo&ulb=`!)4Ybfx4Q>Pxs+L!0$QVJF0d7+pHEz!Jv3dSh+EVDSkeKRJHFCj)`E2 zH(KXlNs)aN4JXGVI0^69UF;_eT`hE}y#x4lVi%fBC?9*^R7TwJbQIHbYJaifIHfd0 zF-Lxxn&Sy6wje3`d-vyR6bw?v!R0UO1(?CX{oieG_sJM9qB#1bB7{nhT=o1?q||n|DKiH+jl^-K)R+ZCB6R49Dw? zTQ_CQTDNMHn5~fI$Piaj%!-#LozdPsaV!i}3e#ay)zgu7?wGuvXihFllX4MulJWhv z>afAi)1g*9M(+r<{dKvu6`!97)i7!jo04l#WF2Q6I9)zjGlu`2##FkFCzIL8ZV8DL zVX|m$ICO#GNe^3BFK898umxlK(@^;5LmLn9xvl*f13Up4U{5(bFhTGsat{isp)>7k z+w)y__k-^FH`1#AW^2AO2>)VhG6ESnIsT?la{f2jknxot`G4a=Ye&m~x&WyD*J%a` zdnA<`@1rF872`q8yOH}>U~FMZQmkT0v>x|N(s3WO=Xv;6@H?b!K^ge$Vw5XgmKtHe zuu*8OZ3`eQuZ|dn6W07h_agoC$h50Mu1ym?T0t*T)%e?xNQe6F^3LsnQC>b+Fv^uL zJ-|i;%hpl4oU8pu6xm&pxa_iypHYJ?4o@|ys38O^Y;5U~w#)hRnH%<(uqrDjHy=!D z>u*N&c9)?1>4)B40H?vzADwHt?Q)5RopJmUgewz_HT*tCsuzgvhPaAqF(r0yMPEi= ze7^jAk#U)^4^&OY-wtr;Y0kduzl`QE#WLOsex#T@Ox#R-y+dlUY45RaRR$V|QQBIf zGz6*|uV=M{C9FmuMjmrzBaly+ud51_pS<1_GA0H6cVK>d`>)6_1KIzM3*#$u^=}sF zAMWWZF;>Lb-q6n6#=+X|H>dLzlGV3*A->9pD9A}@(8!uw893T2>4T){6pc+C{|H&? zo7w|d{-GfBhXqT=$j$1Fanugc%rP#f01D&9rP{D4Fy4_mc{_!Z!JN4!&frx zi^%Wh>m**=ugbpxVSO73V{=ope~KtM7+ZY=aQsn!ZAkpxc%AYKiPaeJN^|{J+UqOD z_rDkX+rE;cfx~Zl@2evie?vn0_QtQK{@*J%x3hN;Hq*BQFf;wulGgvL&B*k}%)k2- z@Z0NuQePDG!u&S}nF1J8%|U`7d-K16--cApjU3GE|KbwA*319)$HdM7c)kC(zW?7C zD=Qm-75GAweto~(|NLTl3GVA?f8Kxh|B+#4X8x`9I?F%EtK_Sl-@ND-ezUa-$o%yP z1mJa}_}6g#cYeNdukC+(N6Osj)ixZ)+L0hEUN z=62QqMtVjTdJX`knS+B37sCrl`~@_%)3-4*H?*g>wlk%o`aO=kowbpp;mcu-|GU~h z$>WUwdJ5!Eg$e7wq`tN3AKS01`HMgPPbC*SV-t8FfRP0r_>T*~#>&df3NQiu!5Ep? zm|k-G^#XwY!hk@Imty-*49NJB^ZzNw`r?*<`952)VcZ`woh134; z7$YO=YxMt3?geA{PkS$_%r61`4>?ZO|D5y7+BpBq9uo)COV<3Y>tLtXo3bXl?xx|9|r9B|#=HaemE#-&tkvpl|2!+q;ZR9PG^S~CkNLhVYa)-zQU;0SzoE{ofX#CD`S0y z>v%;1h~&}-#n2SYXeM77HRUt>YBLyoFBNcUQrfA+;8z5mP3$Vj3}qcIW9AsDowhw6 zcVuTpigBE095}6!8Pb|_WzMapPk=1w937@|n?rz6(vQB= zGq6GwS8zzsS$TP#X_rncTd@3$ulji8qG>vhy$La0Dn2XG}QFVC?@I48W-5 zY-0#ulmi(X{vKEk1U7u`2l#h8Mj1l`Q;?vw6F}oxVgfJ&IiF8vfYxtsq31E5-R%G` z``}N}i-D~jZ2mEiKmGq!|6YjV^Qd5um7UGYSo+R?%Mt*4u*2_JysTE}*-O~a(Ny11 zK}_()<*#Kb7}{Aofb|XS052g^_{XX^p6&nGi=6+O*8jE_UxxX!X@LMB+k2MZOZp=) z1Ku;Uu>V6~0kE;M{oC$6{9>p?v|mF{OjoBtfP}M1DIUJc&}N$E)on@u)u!dm{pvHC ztj*`o@R*ukxdn*l?ounSTee&Hjvrh$l*7i9?S?LgeoYtDn_YzEWGkuY`&Ax&N(k0ZV5@Sm%=BcFZT|_t``YDi|tqdnrEb!EpF>dx15UR_q;pMRzD8$dd zW5*8#?nn2*Qy8Qq~I6iWdToknp$_^AG?9!4i-Hq%E#XX@2+0!U_@_ z;{Fbkzcjs|>qqCsRw+C;A0OY3*-IT{eyE@D?6ojWkN!XGCh-j{jjf?8d=a5KzjsVe z>tcDl0%q0SL{P^Izkn!8f4awXCfmCQ+7QxeJp~V8KB*0*(p0Xz4$j06ribtURV4Aw)STAJ_}qmf zG%v3eSIUzV5VgIorS{}fTWoR2JKyjiHj8Xw{!4>Ech6v?0EFad1Jx&fpMYFeTL~8r zS^P!-qShGal5w8s6^u=#ZP{t1Ed)O*M0ju@%>Hp>VdK2_BVf+M->W8v*y?He1R}{R z^<$n@D8Df}1fngJbKOJA4V9pwF8@Q65Go~wsgjGuF^hZrPsU4(FC zM@5C;N`s7Ki%kJ*65EG*C{Cf-R=+hM&^y>Ft zML~{oWe7WS%unn&#Dp9Rl~mt99z11&p4y%kYMzW`ABrg-HFg<;AA3-Pfah!&9cnLLfAB#Qo75dM@$t zyrw9!=B;Cnu7({190wW%ycdL){9LMKZ`%-xjXoSt7+UXU7y?9D#q7Mm_c(}ylr&<` zZ8edHhuL~3h@vY1{Os_>=lc(=3S^&%eLBmL|i0$0X{3$1O&hK;QPq1!1>D7^249$~-7ym^BC zKH&2R^FB3O^U3qcBqtE-)tN;vpV4~##8bP`>NXW3RK2IPob^K}2-CwVDg~E9cnIM! z(mUN;j<*L*z?GWPGB+W!Qlu+ihgfTDnTaf4{_!l}>{RYLXe({QFK+=|)j9EX1O^l~ zUWpPnKbP=oO*~nRfqBX+IcMf|55i{Q*no7R4P+G7h0Hcu+R)TKQa>8ZuMZLkZY=4e zmY31KAA*!g8br?y(^eP1OtH;G2vw+d`uVH3A;LJR_ot!V<4Gm*W-c4dB2fZ&L$&DM zJMUBcYxNF^dxanLy1nAY6(aZOR_)5sp}a0FSzn5vxH1L z658={MJo3c?o>WaqS0e@FQ|kUq8!c>DZ0Pnsy%PxK}fn-hSpo0_fG&@8KXmS_a;(fR z@gH(u+K92#)GJ#@WlmLEaP-e44Z*z)HuwAGgY8_)i4K%PEP*E2WY8I2>WtJTas+w;Zt zR-bs$NnuvF(|VMgJquIYwJ)`hhVlp&tl8W~Kl^Rv(N+C)vwmCTOp`71jZzS`mK=nI z3j_DdWc=wZ_*>j55LF72akSc~5ZiGRv6a@nWWuu>`5T6Lbw$lsNs6h%DYr`38PDd# z)M`HNl|>s~OOFO)q{W-~G0kM$2fmQOWd)CF(CU}@;bWVG=_bMt9mzGZ8%>FvoW7+b zbJe#OuPBvtac&_16|fpz;>%q5Gdg3stpfnY_ndEHEG@N-qDkHgCA$4;V){JrAQRK8 z*0aqIeutkk5a7LUeq_3(+PEqN^+ZEwF1jB&+L13grHmQ-b8d`y3bM=>12m+a3+F{ETWRl0WU1oK$C$5g3g8{U!vb@;h9OkgHH$Af$= zJbFZ>2y#CEk7r1#I(;SqX_nc))SM(nnRQdGZ0c#v;;1hWT6it#V`ggQ<*wqB(2+Ab z71OMBZ;j}n=i^C&HwAIZqT6rbjeTzfC_pS(F(-Fg2^(cri5S@h!TV}rn%YTB*(tA3m+znm>6BE_Un|>7cl7L9lbZA z%*P0zQt2zFQ_NT=%k4swuCy(vcCdjlnCsk(PXFknT8{HB2)=-}K)tInnJ(%y@y43S zM0@$CkPI|c2fgiS(j{`Ykg^^Z$s#yTEDfQKW`7~+djl3t3mmQj1nYO#a0${(Ekxr5 zOCL|84|dhyP?U=5>>qoPt{pSUT@efB|1ngRtD`*&th2NGb>DP8`A$oMK(HcFDLoV$n4ne+q;HQh%QNK&0Q@)4BB?-oPBnZv#&O;E1;F*s6jjM zyP(o7Qf!nN5@2PYH3QGbrAP^BSjBIWlj!8%hu^|*=rH9|Spv>e_&RA24JpF%TpXfB zjg~eX%c8}495c(5Fc+FgXgJ662)+1eLW#6zBJUMGuItu|t4pNkjlTgJzVj+`n>iXz zFNa7isA@p%hNPla+f#9t8S5AR+B%L?-s?+2-)g&agjpZ%;#Tg;Z{Eg)^{CvxMc7`R zP@%&+9Ba(=VUj^ue)pmxss0{C**SnwRb8jXLiD4}1|da^2_<=mRKu4o3_5Hn=J@@S zH9_Le4^vjo2?MvXq3$Jj?yl7nY~_b2L^+@c%&u$`!VSTw*ReHtF*zbf=m^ohyVs!84xROoaH_Dtu(lp+qyP=jR*{v$@{aP4}@_`<%$Z{u7qsQ#?sYacp^U%cn2? zF`=1{Kg!>Tb#4J|;fdB|wLfe)WLQnJHSGp?m5C+P8WJ`P5)TY@FwTa)m7_12$V*P! z=zL9ob0Vx3A=MkK7bM6)OCBK_Xdy-me4{ zI}I`C!$+af%z+=A&Tz{=&l$IhS^4Fl86Jc5S45M_zONm!e-}t?7~`OEbzsDm?;B(s zv%{@pC$0?6r~M^5L0X|q$GO~w9OF`#i4f}I+*DWZaF1T`6@&4E-NV-~dFbJera{)H8)DqFrMGDE3d&8E?@|s-Ht~kJE9r*2_g4BZ^E8%AyL$Vl(JjsL7gfLxiqi>>J0- zhjj{GCwTefsW#M8Cl(SO&>Ly(Y4^`+o+lrEVRozdV)RPwf2p!I`N{K>{)3nx=|JqP zG!?@v%xkODZ_8Qc5{(#wkmk&V3GwBEBkseq-1Z;KjlHWDeCBwV;`{iyr^wu?%Uuje7?`vY-47SJZwXJ3xG`H*XVfEOj z)ZnV0vTn2dR8M#x(Q|qVyk_m-(6=uzn#Bp9N2roa(f7b&#cj!p1F^y97889^spXVg zu}A^tZ9;^06ro%rY)*}@gydvoeUyat;z2Tx!=Y0~9Y}>o6MR?WWD>G#`3>L3ESt}#KQVEj_f3XqhfLS;s z-~xzV!u+(PRN-QaNgfscBxAQ;0+Fs-$o2`wlfzzXoi!@cTRh}RN zAD7H!N03SEgtz`NJ84&)SY3|*&5K8k0U;Hn{3(fehDw&XOxnc#`RS)AaXJ0wUYUJtoc$cv21A?Ss^C5MLgC@Z`jHKMy4_5YB1(2!PZ zjpm`;7|^$BIO9>GHh4B%EFfd>U}`&{Z7m)M_7Gx0-dur0@+Hr#k>%o&iWpgp$B=zp z9u}btVd0IZs^d2Y9x$*dnm@61AJOJn7jm^}A!g@%S1r`3e4m^fj215IneNXRb;^3Y zcwNX`y@&3p*~(^U8bdzg+ZW>*gr8y;absr|WG!NG-5ZpQGPqt?+i0>a6+1e>G6sGQ=9wGruu_m`ysU2PO0Gj^HKt0Cc#Q7 zfv#_yYOrk@r55k+?g}M;e8%9VqLDQZ2%OA)H=piFd~W%jE5xaO&e@*o9#ExrA0WCm zngoV(Fha_>xim{eFT+F>tt@#<#w)nGPk7VqWBvZv)!sp+(HU0^WNdIYH}Snnu4rme z@oGtgm$6Q|H3t+`&6$&~VaAv;`YT4^&6)iYD0l06M&HXgY^pYf%zIz}m}Y zttF~Sqg;Zth(fin>;{puH76poc+0^*gSEfxZ$K~6S?X4&8+PoY8Rz(BL&NDeVnOaSArbKUjJ`L+x%S!JmCA2B|;5hZ|ageFW%Cj0X+3H zfseX8%{4iVOI;}>?!~{Nz%sKReSb0&_5W%s+Wi=@p2wKO!fK0&xa>w}en5c~HIitC z#o8m*@HPxN_3R+;=lYHX!%-_^x^m(Wd> z{C>?*j53C9c;-Z>iorYOG{mVfO>Y~?Anh)_aJ;lMJ8b~ga%z3UDtS$dDXV>qQAbKM z$wBSBsIkpmkH^)Z>FJ7AQ27aMw#9YkX7tDt+2-g`;#(z|Wd3V$ImAh46sw3f_=MfG z6wB|Mmu=1QXJoa)ds&Btiw?f?YXtR~{ghK9^~OCy2FTcPe92wN&ip|5G)Cx)2>5_V#E?ZJdG zyQN$=mg}4|rU5K>Cpx&z<%YzJ1D$AShl~fc`L4tjDift@f#I_St+cr_yjky$lFLeh zO{n(-K|Ip;r6wp~jko7$%yU2-9hfiBqnAW ze6O*$>zN$Whp0Su9;HQZ(yk4&ro$}WdFtzPOAKc*&@PPGS{V`6P7ONxy@#e{p4yDh znw*x~qyN<$Wp*nOyBQ;M5Mv>shS*$uf^;5z4CxB_kOsfpzd;!+7ISqm+|VF=1Pjxx zNur8@Y`Mag~Nh{2&6{p^BWE>lKfPzW^RP`wubt<`2_juN=R=CItGJYyOEXOQlCc# zJg5B7&sVCk&MNDpuvOyX422>rK*a-8`pHsmh#}3f_YBi?HeIXzXf6Zn#<4e2_zWhr z#_T)YZjth>D>B0B(|s-&x%4E-y=kCZmsNlHg4ah`^BxWS149UC{*7_Bk4j}nn3dB}^uw6I6Y6ZL)jUL2{mKk3yIwrKx@?slSCoYnqk~N~@Zfg;DxmCR=Ca2C zWz}$y7mFLsfDA90Nn!#d*zUoSXk5T?C>}fAigANHxPCA`uz^xHrDi5G&c+YdQg9B@ zn{Z*6{Y7%2oD%}m+tb&}K;4-LLxLNAJc_LY+&+QN^ckN?33{V3Dq5y)6-}0l=vNfb zXvFX~1pDqa&tfs3yD1G$*6W#|CDsR(K|=)R4&&7yBxEdIKNq>dA%3&DL3axGX&V0F z$DOlqT>`f$;$;nP(oS$Ka+Ea6_j_p9r8=*$t3u?LcbzmShmc%0{1Y~ss)hze-UPYhfP)|ah$WNc-0g$6Rn=w$J_j%~Yb zxC_KVrJVqoy|>?0b`$soA^i#CO+nSUbp;qo6l%Bqp*b@_-Y!Z*)C*d;(MHO%>AVQ8 zz67Gpe5i}Vf}GWer*9xAq_rrh(=WdX~9V7{z}X zQKkD&5}*GQU9!dc{fh!#gnr5ma~RSDGdULYdV*SeB6IDUPZF7!xs;#psIPd`Dl1f9 zluq^7ApmAsUaS*2hu1BM(k=YRbe29;Q^H9cUoW&0Y8!Np3h3TH9pWD2;KF+TWzp!f2cn;=k z#<1vFO;W<)3g3FWeAB>oA)o!ml36NX#FOnt{0RsB)4uYwR6ar;n%N2ml@{VqQCqm|!91gBKJ ziU%zss)JAxh+tThl-e}Jp=|D?oD|bD%C=ic`inbbH^r||DWNl85Uv=8gxrkHX{`-} z#P=ty4-RmQwinV?BRufyV`4YVz2nySSMRvI$pXIexfG;XcP;mzVB8{7{V=-hK7=C8 z)}=3Po!|Lc=^CftW2yidB9+%T^a=U1)(v)FAxaST)95I4^6=+=!)${OARp3g{f$6n zj`_I2$C3)0#ka5qr}?RWK5)`?R4?dQ5=t>L|5&YRCxhMR4O@ud%yX1>ZBJQ+M}v_Tnp{m+o+Cc zGniZkVM9rn!CvaAM1HpMMpL9lIX1wHWAB4T_r&|-rKxa?yA&8Z)%?B0UT=o$D*2`; zZ;eU#SjlF9kK#3?jbrdTPFY5xVMSvuof0f1J9!jg7sA9KneSe zPkXU8MM1kPNV(s9DO0Ja`fOLGAM&v=(_LGD(oqmUmj9&tHSO`HjQ0nt>K>R)jY91= z9(yE_heCt>t!b%13T_z+L7l`PFHvsg7=A8O4sB?0^=!l;2*@Q_9=}Zuv|l8oPTkD7 z!x5?uX;!k7l%h+}w{c{lgZ0g=qD|F543% zQXYM|-aQ)m0>^beq~sCEum=`RBUFyWxid*Xnyr#Ble*}4G50HM+AX#t99>IcB}v#K zk%8L{`)xi{$tf8z#|#UA3LmK^DZVQS;&W%^`ba(8({%g-D)rc&AYqvkBtf}@B_4F9 z><@!j$w);+rGRX2r5Nylh1_QcahPG=M2kIZlBWA*Cwp*3j;+)UUjmb2L2An^C+y}m z9;O9(a>UK)ff~wqr&;JpdC8v=E*CMzP}X=gZ6u`Iw{}LV2_tl(d~1It%2zznyvf0R zJJuDjClI+2d2Tb7v}8Q0db%G zCAnAg4Q<&$@^JU=4>JnRAxPB%dVKpnib3VvGxIefp6(NE3YNo_oAVJawdYMKhX0{fOtCF5O&&fK8WFvbld0hh!YFEA_M7IWfm zp1@d%X`B*2>u*mo@0(8OVq+7X*A}i9+43dotT$+@U4O2dxG=l>(sy_67F-`Mri_M8 zP6NG=KSbWV?l#3+VU#24eA=no5LcGo%kS`}*&(4K92P_*YNN6|(?6Ck{=pg-X1o>W zrWK4|Q%N;I5SYa_H8%Gp?w}VtQBh)*aw`7;|6HP>-;=#X2b&CRIMd zMN9vUc^!RGWfsK<_;P67fEl7)=6h!59M^zf{(M}hDJCCr^wymUj|lQ3&Y6dcR2l2f ze=?}xu}?2L_tvBrWW%fabCA6~D$0Z1b(I*e!m27bAW;GgoQXYMesvZ!8-|xSBP5)6 z3!Tvp!EGk#f6x1VgmLTDq3Plw9UfTwpeYpppyY0=JS?cr^UeJQb%z4IxZxKq3qC=qeWRM=@>55q}_Hok=KIXB4{p zYp(n^(m15xchg=Hr|O>>kWLpZTfe8m?4fO&tc%Z+~Z9 zoJ1^G8w%Eg5k|!mPAd2AVn?&hK%sLC;?v8E{v3SOsiT**iOuPOE#e|zh+Ah4B$~)pC5~gO7pIVsM#Z5_@bpt0=s3dexw%E2~=MzsV zwye8xY$h7Jq~eppsmyibBaF!rv*VT53LH9nh-yQD4~KYU?r}!iG!Z-YOp*NNgkEsw zBm6xbitC8j8grA|VAvFkZWsJmWiORMDsB1UzT!7fMI2%TIOTIdD#(_)+K|T+C+XK0 zr$W{xCCi7!@}!PjYsRSv`y$mOe&lWLUimV=`oB7dX@0wlQU)>+skN+W?0W6Ogco-E zZluNE82dX?C}DoHgKNF_OEzkT@IxV7P<%6Kyf@}q*L{*G*RB4r6G+R0E?jUJ@5lyA ze%9dtrKB#Ch=MqilzDEDajtA*cB|}iPu}si^xOK+so-6)QiLamV_z5vx}I1sNxosI zDORUeK&D*idyLDV(ltdngU*ldl%p~j+nbB*jC zv-I2dBBvO9#JL;p@%F%Vw)>!FS88H+;JseOK z$A-_rh;2(JzmI8tY@mVlzDrMn-q}_u=k2}p$8r|lI6cQdS2t*VG(JX~A zRUOm2rznvyuh)N_tVw*kp{qIisHnV9Gf$9#DJXS?9?KspeP$A$7C#zg$m7A$O5|p{ zR!60+y1)7AW(u=YhioMtF6B!?46<|GWY}S*A&L>SoWxvAQ?rMgZxe$ZtJQEX1F(fq z8%Gg%`X)$I;>Wk<_{+P1cnqgQ-(Pyu$=_LY2&f@-NZAc{e`QrMqCRiFa(tO2H$Bb9 z2LEp8Ss~+mqfP=jFfpIp2MYcphW_<&(_{+P*pJb z*S^*&))Mq9m2QM`Dvei3zg|PZ$5@RifjUdm+^MWKKGC zjz7W<-*HVX0YfnJs_thx<9xn>R)P2JR=kdeG~J=cke4!8jB0Ygj%xs*0jA2=_;jR75Sh#prN5iWoI5|FtbY}{@DAydJDzGv74(Ud`-pBMr^84}B}ULS(>^hI z$aI3|fGY~YS_tmGu$osn*RqxK%*3il#Nb1Na55LiaE58xjd&ZSA2$0(Bi;>f2+wtT zJmhID-E)V%guT+`r&S+@udgkUV0)sE3{OfseB=zyYglNkHX3AV_`0_DFbZ55Z>7Gl z*WC!{<1NC7kQ*Wman?Yk+~U47uSphr`0#2h4=9l>?QgQz6EZ=X7<3!tRBb$zS_ZO! zj|-7Hlf05#M;jywD2*?rrUJ`SptNT16o2VSe6vQrL2eqa+WBrvdFy>xzq47l1H+XH zc8tt<{k5Wwka+Q+(BOxxBQ^i)_jhwq?@Dzj6=Q+_os-{z{wpagOw50$1o#5H{tb`* zK~`UQT46&weXyyGy*2nZ3i=|+f-IkTSy2%wbs52TvZj`L4t9zlD`|QKLt}?OP8J|z zI{@py8VLS@XX$|)tN?muPBy@EEj;6;Y%G5WU*yMj)6zvTyRRElSn!gz0e;Y4Ter8_{0WWmyKWW()GWfq2 z{JVce2R-}WRPak6fWIX{ke%Ug!1({Va#OIKy^skA3}9jY-AWqtmknh8)6Kuf6!1Ih zf2v-@>KTtWwK4`Us+w8}SlOBWE&T3C)zrY=#O^Ny`DLs8Z!cz!XEgcw{NL{V|JB&o zUI=P7rswnd>M!fBE9U3q{uzyvh;!gS zAC&mBzl1=~g>P;Ar|*~5`~{u=Pa`L=p%Eez0LY5S^sfWJ&c?>V1~3Br(SXdXOwTKS zIRI9FX-rJ)&(?oxOu*-g{|`U5mumSp4G4VC@w`+1O=Du>V0uo-e`wEq_~p`ocMqDV`h8*kGa@`LC<>|{QL0}Mbj^aFR^-| t+7+y=pY#7eP`-qf(Q}?(YT$QO+1Z1@_P?VGWM*e$Mx>+^`6!C`e*jkQoZA2Z literal 0 HcmV?d00001 diff --git a/software/doc/latex/semaphore_8h.tex b/software/doc/latex/semaphore_8h.tex new file mode 100644 index 0000000..0f297fa --- /dev/null +++ b/software/doc/latex/semaphore_8h.tex @@ -0,0 +1,18 @@ +\hypertarget{semaphore_8h}{}\section{os/semaphore.h File Reference} +\label{semaphore_8h}\index{os/semaphore.\+h@{os/semaphore.\+h}} + + +Mechanisms to prevent race conditions for the operating system. + + + + +\subsection{Detailed Description} +Mechanisms to prevent race conditions for the operating system. + +\begin{DoxyAuthor}{Author} +Maximilian Stiefel +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +8 Jan 2018 +\end{DoxyDate} diff --git a/software/doc/latex/structos_q_u_e_u_e__t.tex b/software/doc/latex/structos_q_u_e_u_e__t.tex new file mode 100644 index 0000000..e8859fd --- /dev/null +++ b/software/doc/latex/structos_q_u_e_u_e__t.tex @@ -0,0 +1,32 @@ +\hypertarget{structos_q_u_e_u_e__t}{}\section{os\+Q\+U\+E\+U\+E\+\_\+t Struct Reference} +\label{structos_q_u_e_u_e__t}\index{os\+Q\+U\+E\+U\+E\+\_\+t@{os\+Q\+U\+E\+U\+E\+\_\+t}} + + +{\ttfamily \#include $<$ostypes.\+h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{structos_q_u_e_u_e__t_a418b6d1612eff43ba60ed8014917d7b1}\label{structos_q_u_e_u_e__t_a418b6d1612eff43ba60ed8014917d7b1}} +uint8\+\_\+t {\bfseries write\+\_\+p} +\item +\mbox{\Hypertarget{structos_q_u_e_u_e__t_a5c0e2590217d519484e519a510f4ff23}\label{structos_q_u_e_u_e__t_a5c0e2590217d519484e519a510f4ff23}} +uint8\+\_\+t {\bfseries read\+\_\+p} +\item +\mbox{\Hypertarget{structos_q_u_e_u_e__t_a83564fccea0d26714ccba07901241089}\label{structos_q_u_e_u_e__t_a83564fccea0d26714ccba07901241089}} +size\+\_\+t {\bfseries varsize} +\item +\mbox{\Hypertarget{structos_q_u_e_u_e__t_a26e55a22aa50bdfb7c20f344c19d4dd5}\label{structos_q_u_e_u_e__t_a26e55a22aa50bdfb7c20f344c19d4dd5}} +uint16\+\_\+t {\bfseries qsize} +\item +\mbox{\Hypertarget{structos_q_u_e_u_e__t_a53255b934b07b472175fbb8e847f9b5d}\label{structos_q_u_e_u_e__t_a53255b934b07b472175fbb8e847f9b5d}} +void $\ast$ {\bfseries start} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Data type holds a void pointer to an array to be able to use the queues for many data types. + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +os/\hyperlink{ostypes_8h}{ostypes.\+h}\end{DoxyCompactItemize} diff --git a/software/doc/latex/structos_semaphore_handle__t.tex b/software/doc/latex/structos_semaphore_handle__t.tex new file mode 100644 index 0000000..94d8481 --- /dev/null +++ b/software/doc/latex/structos_semaphore_handle__t.tex @@ -0,0 +1,16 @@ +\hypertarget{structos_semaphore_handle__t}{}\section{os\+Semaphore\+Handle\+\_\+t Struct Reference} +\label{structos_semaphore_handle__t}\index{os\+Semaphore\+Handle\+\_\+t@{os\+Semaphore\+Handle\+\_\+t}} +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{structos_semaphore_handle__t_a5a84f06656d71ab4080d24ca01c6507f}\label{structos_semaphore_handle__t_a5a84f06656d71ab4080d24ca01c6507f}} +os\+Semaphore\+Type\+\_\+t {\bfseries type} +\item +\mbox{\Hypertarget{structos_semaphore_handle__t_a325819a8e492ac69542e8b31705af6e9}\label{structos_semaphore_handle__t_a325819a8e492ac69542e8b31705af6e9}} +uint8\+\_\+t {\bfseries data} +\end{DoxyCompactItemize} + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +os/\hyperlink{ostypes_8h}{ostypes.\+h}\end{DoxyCompactItemize} diff --git a/software/doc/latex/structos_t_c_b__t.tex b/software/doc/latex/structos_t_c_b__t.tex new file mode 100644 index 0000000..3cd087f --- /dev/null +++ b/software/doc/latex/structos_t_c_b__t.tex @@ -0,0 +1,35 @@ +\hypertarget{structos_t_c_b__t}{}\section{os\+T\+C\+B\+\_\+t Struct Reference} +\label{structos_t_c_b__t}\index{os\+T\+C\+B\+\_\+t@{os\+T\+C\+B\+\_\+t}} + + +{\ttfamily \#include $<$ostypes.\+h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{structos_t_c_b__t_aa99c587c00df01f56baf5c6e46c46361}\label{structos_t_c_b__t_aa99c587c00df01f56baf5c6e46c46361}} +void($\ast$ {\bfseries fnc\+\_\+ptr} )(void $\ast$) +\item +\mbox{\Hypertarget{structos_t_c_b__t_a053fb83c9604d11fa3b97113a1cee7c9}\label{structos_t_c_b__t_a053fb83c9604d11fa3b97113a1cee7c9}} +char {\bfseries name} \mbox{[}M\+A\+X\+\_\+\+S\+I\+Z\+E\+\_\+\+T\+A\+S\+K\+\_\+\+N\+A\+ME\mbox{]} +\item +\mbox{\Hypertarget{structos_t_c_b__t_ab019aab8795fa409075f1956083bfd62}\label{structos_t_c_b__t_ab019aab8795fa409075f1956083bfd62}} +void $\ast$ {\bfseries arguments} +\item +\mbox{\Hypertarget{structos_t_c_b__t_a0ad043071ccc7a261d79a759dc9c6f0c}\label{structos_t_c_b__t_a0ad043071ccc7a261d79a759dc9c6f0c}} +uint8\+\_\+t {\bfseries priority} +\item +\mbox{\Hypertarget{structos_t_c_b__t_a602c451f173294fef0097bb86d082602}\label{structos_t_c_b__t_a602c451f173294fef0097bb86d082602}} +\hyperlink{ostypes_8h_ae410cf8fbf1704d3cedf2e2648b94a55}{os\+Task\+State\+\_\+t} {\bfseries state} +\item +\mbox{\Hypertarget{structos_t_c_b__t_aabdd8be14846d97f622cacdbdaaa5925}\label{structos_t_c_b__t_aabdd8be14846d97f622cacdbdaaa5925}} +uint32\+\_\+t {\bfseries wake\+\_\+up} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct representing the task control block. + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +os/\hyperlink{ostypes_8h}{ostypes.\+h}\end{DoxyCompactItemize} diff --git a/software/doc/latex/system__timer_8c.tex b/software/doc/latex/system__timer_8c.tex new file mode 100644 index 0000000..2a21d8c --- /dev/null +++ b/software/doc/latex/system__timer_8c.tex @@ -0,0 +1,52 @@ +\hypertarget{system__timer_8c}{}\section{platform/system\+\_\+timer.c File Reference} +\label{system__timer_8c}\index{platform/system\+\_\+timer.\+c@{platform/system\+\_\+timer.\+c}} +{\ttfamily \#include $<$stm32f10x.\+h$>$}\newline +{\ttfamily \#include $<$stm32f10x\+\_\+flash.\+h$>$}\newline +{\ttfamily \#include $<$stm32f10x\+\_\+rcc.\+h$>$}\newline +{\ttfamily \#include \char`\"{}../os/scheduler.\+h\char`\"{}}\newline +{\ttfamily \#include \char`\"{}../os/ossettings.\+h\char`\"{}}\newline +Include dependency graph for system\+\_\+timer.\+c\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{system__timer_8c__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{system__timer_8c_aa2e1abc835e556904f718ede78c1df6f}{init\+Alive\+L\+ED} (void) +\item +void \hyperlink{system__timer_8c_af9e6109b87e10db9303be55cffb97498}{toggle\+Alive\+L\+ED} (void) +\item +void \hyperlink{system__timer_8c_a2ef37c6b4d5f172facf1a8cef7fcedd5}{init\+Clock} (void) +\item +void \hyperlink{system__timer_8c_ab5e09814056d617c521549e542639b7e}{Sys\+Tick\+\_\+\+Handler} (void) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{system__timer_8c_aa2e1abc835e556904f718ede78c1df6f}\label{system__timer_8c_aa2e1abc835e556904f718ede78c1df6f}} +\index{system\+\_\+timer.\+c@{system\+\_\+timer.\+c}!init\+Alive\+L\+ED@{init\+Alive\+L\+ED}} +\index{init\+Alive\+L\+ED@{init\+Alive\+L\+ED}!system\+\_\+timer.\+c@{system\+\_\+timer.\+c}} +\subsubsection{\texorpdfstring{init\+Alive\+L\+E\+D()}{initAliveLED()}} +{\footnotesize\ttfamily void init\+Alive\+L\+ED (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{system__timer_8c_a2ef37c6b4d5f172facf1a8cef7fcedd5}\label{system__timer_8c_a2ef37c6b4d5f172facf1a8cef7fcedd5}} +\index{system\+\_\+timer.\+c@{system\+\_\+timer.\+c}!init\+Clock@{init\+Clock}} +\index{init\+Clock@{init\+Clock}!system\+\_\+timer.\+c@{system\+\_\+timer.\+c}} +\subsubsection{\texorpdfstring{init\+Clock()}{initClock()}} +{\footnotesize\ttfamily void init\+Clock (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{system__timer_8c_ab5e09814056d617c521549e542639b7e}\label{system__timer_8c_ab5e09814056d617c521549e542639b7e}} +\index{system\+\_\+timer.\+c@{system\+\_\+timer.\+c}!Sys\+Tick\+\_\+\+Handler@{Sys\+Tick\+\_\+\+Handler}} +\index{Sys\+Tick\+\_\+\+Handler@{Sys\+Tick\+\_\+\+Handler}!system\+\_\+timer.\+c@{system\+\_\+timer.\+c}} +\subsubsection{\texorpdfstring{Sys\+Tick\+\_\+\+Handler()}{SysTick\_Handler()}} +{\footnotesize\ttfamily void Sys\+Tick\+\_\+\+Handler (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{system__timer_8c_af9e6109b87e10db9303be55cffb97498}\label{system__timer_8c_af9e6109b87e10db9303be55cffb97498}} +\index{system\+\_\+timer.\+c@{system\+\_\+timer.\+c}!toggle\+Alive\+L\+ED@{toggle\+Alive\+L\+ED}} +\index{toggle\+Alive\+L\+ED@{toggle\+Alive\+L\+ED}!system\+\_\+timer.\+c@{system\+\_\+timer.\+c}} +\subsubsection{\texorpdfstring{toggle\+Alive\+L\+E\+D()}{toggleAliveLED()}} +{\footnotesize\ttfamily void toggle\+Alive\+L\+ED (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + diff --git a/software/doc/latex/system__timer_8c__incl.md5 b/software/doc/latex/system__timer_8c__incl.md5 new file mode 100644 index 0000000..54a0c70 --- /dev/null +++ b/software/doc/latex/system__timer_8c__incl.md5 @@ -0,0 +1 @@ +c3530539b6d1a3a19bc339eafdc8c5d9 \ No newline at end of file diff --git a/software/doc/latex/system__timer_8c__incl.pdf b/software/doc/latex/system__timer_8c__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d7a90d17db3c5a5da88014b93e990c18a4a6148 GIT binary patch literal 15234 zcmbt*1yo$i(k>3c9fA(-?(S|0?(XjH1Pc<}2?Td{hr!(;I0V<=4i9qfx$@tCz4g|5 z8}{t!Z>p=hs=8~#?Ec6;iHg%P(X+vl)t^*6!ml>s9 z3jhEZ#4W6yO&s5@)&|Zdq9#Um#wM`*{IE{WjwS{+ug zlNsHN^!$LNwz=@zAxGa2iDUE02bSa80G6%-mFh`2urX^f<>_pX&|!343AWOHn{Xz* zQ9Z6_N0jObJ%vUdmxO7#+4a~G$ID^x(D1POR@doVV)=tiL%H#qY+kwuXWH!GO>NnHFV?8KS}!A?iL2lS6v6|nriwQPFGJ; z)=$*ETFw)A*S1Lu!AS8#W}M$-pZW|^&Rh&RTHlji_PJkqTJ)~lpXM)#%m=qf3n6oCk)fH zt_Mm5oRE3Lbb7xcA}!q701m4+980Kn`xygKZBMv`!^Pax!E2i~q@on5zpu!LKB`Xi zgf&$P9bTiyNFHiawlBBEwLAN2%io;NcVxkm2!Hy@9o=KeX&PN`0$o!T%QVmn28aM3 zk;*k4rP(E|1sS3m5RYWxY9NO)o`_wBaT|gnrD*t)`}L`$&w+R4h8Is`;UlU&kP0>4 zLly4_Mgc1OtpoSR_W7+1{R`H$QL2L3d6q+}h82!laea$)XtvRlwzNhyEoCN1O**?Z zF2zTgTcM={h@mTDNr>-!phICh*b{Dw0x?Sq_W}O317uIrA)QHag4G}J9#t2z5WWEf zWD5BlKaeQVMMP?6XPUd+vpQBg#!R1UWN2@!;ZaJFQA81efm6#efj6`TQudpgK=fo7 zcU@n9H*%-?xI%E3CQq$y{Tw)N6n3)7(qF2RxLR6Icycgids19fB<^Id){?hFS)`K@ zw*ZSFsU=~kAd?`6vZ^4VOjGDaX6ZwS547>V=>c4QLq2Z#zn7gM2!c|kA}FqSbS za%bN0!!)c~{VZsT>7qXl99{Afes_@EgmS+jI;mYw3|gVN(K$BRy?{&GN`oQdt{nrV zW}xQUA~)gM?~**p54WZ6Q>dFM<+!oiVlrVQXis~rT2rV!I^uZL)k-Wh8|}9+2^`zR z&e)L7M&TL8F-Q9AmsJ4@LH3?$!a23P@{QoiuE!5Gg_#qfkmcW9JOxci*fF8qk@{2X zBx9$f!iJvXYl}Zs^DvNWcxd;95Z_=WSiN-KA$WgPxKQMpD(dxwD&dED% zWDm~XH&-6BGp_4_XvHP3V^-M8@e84vpbp6;QY0XUA%Xfi-DY%Rai(uV|F5c>F z^e{eD^yIaSf@RVidu$)W=g_~dL_wvtJAH*MqjO&iA%sp>ojE!XxYhT7hBdJ@{zt`o zd-q-|-wWjX^{qrQF|)C~3%oa(|5-}^6i+dCX9*?ex55eF<$VX<4h93pw+4VgL-=xhrgV&Si~zR3%ki7g+wVV&vH#N;fI->A-UPt#$-vCy zkKs=SjwWw?+G+0o_CDBisld6N<~akVfqQIrsV7x{;q ziY88WE{;YfPJs82DgK*R9B=LaaW~@p=dk{_yV1LuziwMh045GLjz2E_1uz4c7};2v z{taOPu(7iJ#|`Yn(?nT&wSnxEzWay08wG@$TPOroc6L?Hq@X`UD1;koU~8+@?~PM= z{|(z8LvHKsdZ(?Gug{`6U__UP79Seh4Yi9$#sr3Aj4c-!atk2nnXb? z0nl(9YBo+17_M~LQMemil>XuhmEeJa0k5%QxeMUJ+CuWt#II%XAs}NvCO|(r?K?F` zm*Wafk3oTKfZAV%|GtR$4F~Gp)CBRWu@8X)sxFd2JGq~qnb8ga;A$1YZ0LOhA=jbv zF;!J<=pFEK1tMoGkVHQ-2i6ZgeT!;Cddn#BJUkg5o@_-6>#)AqHN&>;HO0F%Z z=~@|vHNQ?5nZSdugB}d%0+^XmxPip8UUt^<+9jkv-$xKe5de^!A%wqcJy>m?84Pg= zS^N84_mB+&;q+^Qg)_xCxyrMY<~x<}D(3N`1u6GfDB8<%6YJuEXRA#)Kc01I!2?0) zveIw2p3Y_(+?+4$y&nk;tYUKK>@58g(^(2DNCx{5iYPC?8T!}8vve)t9m7Jj`Hbg0 zXEuNegFb2VYWHaKf@H&i>|0oj+-vC!jC{OPi+gliT$viaJ?Z517Mkzc!(Gx+b8-WK zz&e0GbUd@1pTR_>ml9!U(&@`heibyL*s# zFSsZhel3%nY@b(#c`k153)L^IC^4b)tE zN!ECcoph-K6Yc^?WQWAl?BAY2`DdnQJ$6#KSPLcHL<_1dmtp@ z3{F9H0U1CTLj_0MC!4<83<4*R+(!`H`S}GWI^{w9v-xF7 z*xyeL<`SH9)wglS@&MwVIt0HpAmFb1p3 z;u3lr+ZfL0i1s%@YR2!1<_CB)J$hUV57EThVZw>!adR*EyO)IKV0*hTqwdb zI6ueP4ac?z=Ec(+=0L;@RH2 z51*=KI7>9Z#$_G<07NE~8RXtK{fIyH`!HET6`o@~X5QTUCHT<6+*{0T(nDnB5=YPI zD|{>@7{(7m@Rte23%uIY#SP3mk*gL@ z2X!8P7&}0~_ekVIOSAd73_lMSJOzh#)gv8`Gp=umC21Q(AM~NV#4#{ugHyxX$0#hO zYG3mK6Ly7NSF0o9VZ3<9J#nJYmvTrak|&|5NrH@@CxYcbypk9?t|7j+Fx^iF>cC}c z^A0Tkn{kwWYTRI%%#qgSBv+jbo|T?ZvG2+3X<7@x@fs1tC8_DpN02a|5u4vehJ%`> zuMgnO&qKN{mIZmo^w)7Kw#ULtw)Q!G$_J@=T_<260#C^66CsYO>+Nj1nG1BymBLgb zj*PSdq&EtxqMSA2_i3Tg2jjie$!d`utrljapIPC{IoF(Z$X69gnqUZK*wCu6$r)E#_-^bxeXSA?lQ2M^LZ&oSTN z+{`7P13|A6@qh%7)zuCjv=t<*-?DC@G#i4YQQB=fWS2hy_@a^0IJeqAu4`fveaVjE zBO0*Cx0*SP#iqLIh9qei#!|jU7n*aU<1RPZY+JR~KSUgx&#)WQu_P+#PGHIFLn-uM zPIL(S76R_6ep4$}{-NgS>%eC+n46NHwm~}0#AVVcC(OCE;%40%OE9? z-*bIiaConQnL~tRS3WxuX(kXXaY3OgoiF_l7&iIfEbBA!x`lfQYpa7FZ_w3KZ!MoT z&^ulpk)Y2gC}XKxn?U`s;cLDnw!6#}cjf>ShqEd9Iq^SRT4|Vm{zxv7=JCKO;5D+I zCw6R$ZV!MxPf}kb)kMJE+AJOAde%HZ_q-#vM}-~*JB1g>D4WzI+ZiOZ-9PCgvq=xQ zq#U-)%Ne9X7Bf?0h-h1f@i@56x2i-(=`O-ZZalANsXp+Xrh+A^f(XlUfQ8P5ukARJ zJsL7huM9@LW^xo(FME*wtcK^qa}rdZ1<%KFb3mSzoMupMxh@kj(}0Sh1g(Ow{_{MU zXcnSG76DHV^J~{w^AsmPItmXLFA}GhDEN7Ac@=w3eyiew!LKWhSl5N4&FT5`z1qr7l$<~C|#20S|##+E3q*o#SX)6;~NcM`Ughh>R?oIqLu~p zpzl1ngW8?&Y|2YHdIT;^U|2kmO?TfSf?nJ!ZhVIa=fBb79cQPuygl+>rjn{c?{UW zY#CePsr0s53$ny!}AP{Re>psGYThg9Wium3C2fg{JyuP)bXt`%ukCcG)5e)J zFroH@@=ABkbYK`WpmB3OG@q{pSvGok53GBqM2pCSW!3m3AnB;ecDsrO5DeY^5SZqu zvcBxChOGefl}f_NfHOEN;0^z@J0orXnL!fO5geVS`=dO<-ioi}JVo_xkTCIM%CpJc z=j-@z&Bkh3QHuwYqhcmf6~(Ga-W5sHDGn*(8Ti^N!io?JSS!sy#~V3eLV>lIV77&H zNy>mh9bc^&0-2!!kl+>kyRnu!Ml&z?ixJ;niIz~>IF8-~;J!;mBw~nU2}yjE^4=4- zr@+({!edtI@ADyHoVY$f;NTHNfZDOH_SQ^@)^ZaxyWF+so;eB7bFpBc$Nr?A_T*X& zwlyP?_Zqqa-+c?QGcH8XfFFHs#+QP7eif)yp$_9U+q@jTIkMvL1lGgAGbvV*ABDq) z8nvQsq|47gg??PoaT2>?i@6zXLo;|~+%aOZ)^PM}D4MmmBhN`^RX`in>%J@&XEPW5 z!zyzPo zWHPtM{o$jRGufr)E2aap828Bte>oeP*{^g=QAo7R1l%ueBA5lHBS~&Awo|`>XY$N@ zg;ZaQdF4JJ25KqI@{x$9>63a9*IllRjT`Eo4>lY4@T=^b#O_h~Xx$p!~$^0;!&*2eEmiz;8N z4YJnwmvjfSY~=2UKmLxE9FhEZ3K0jGJ~b)RFYI{^pjU)(R7q89=*~{Ot|2Ohry&gvmkd&8qSwH zl{}m9QxjDfTn0mMU31@%pBc2!a9Yjo^aRqp*wc68-M_JyaAG-`JBfLC4!>iGp9Y}= z@k-KdP7bve3j_$I)+vgmX0kGh3%|f157JNf>7VRf9&2!H>o_P=*Ox3^Rtx`vp$J2> zXkilNmx93;PS|yJ5awMQ29F97p_1k~rN2Z;GNd=aW78OgJZO);(d%>|yiiLa%U9l# zwlqla{b@r#|G;k=QO))&j*gKxP+?;+_JQw_>*RQvWhfJp)f(&9MV}#sLe#i#SiYLc z&F=gz?c=GXlphy zep&|`$DVZq?K4^shx!6{m~PuQ`H6+B5G3FX))H&)MDVO4oYz4y98A*(Yo^EpQ@bP` zN|z^qU^I%)-Rv`&`s3-R-~GT^&Ir0E!!-Juon84&$VL6JS}Pv`hyc1!9oAD$?)18L zl{HakF(|o^2JH=VoD6u`9|xVZro=FUi|XE+Zh_oXL(phkx@9#CC^J8}odip5tTwqs z1H-ma;MHO&*iyHY5=MKdaolI(u0*~JRwBSpLmz6z0z-xGbO3r1w;8>4FovLcS=#zjE(m8aMRG{#+`&Q7SA0{D__vl}9Uq z+LChqL$K?3@*vJd#~tA^`P_~XS_Lt^5{(w4Ag+ZckRQ@sUOs$$Ny@e;zNxz53rzqk z(-v3VZrsKVaPodoPWG!DYOYL6*avM`?{zZe8EsCb*r z)W7~19_~jRZ#?+7d0YJubS$yp^e)T$3Gr<9A9h-?m@4ih}IckRy)ML_9K-&2A1B=AC6L{GDn zn7&H8IY3*PjH=IaSWt=*eU?n~BBY`)rcD8Mvev^%u#D`QCn(z30hy|!zg{l#zQNAl zNUh$YymFp#^$8B-8+*wPG%bE+HtUTEi>fV-iK-@T+?lihcM^-bfE)dmVtfZTJK)X9 zB6z>qn$z$TuBaV|)`s=#tNn9p&_?Udtle{U!|Hm}cH@!0TSyH(c#co=xS=ZR z*;V6DZK4R$;!@jl9jRd9k=pzaasZW1k`C?)TdwlX;zE1)Nd}(>!`NYv0qZJtX%3E@`Rl@jdomGu=%{qmRk$m*Hy8!?~kI# zw25JRW}$EHtn!kzE&^?QA}NAbGd?dlxAZVq(-u7TMgQ*e(EYNEIpycUAfUuAs&IQ~ z$ryK|^u5;$YL%lmOWVo&Xgv%WctQZ%i!pCU*b%%()FXFgm~LuZ-vhJIAPbAs9C;Th z!qToq&)Q+KG>fAeYyZ2?|7k#%LkN@zpK(Cbo4PZBw3_5eZOb^Wclz&J>l9X#U-o%9cbF(r5jl>FQyji%mQy3J2D;*Ug!v62x742QU+6f5v2aAG>_xZ_ zsCY34%Qu^b>@NCr{rR;<>a`-5R2g6nG$DWBu|H&_mqwv|LKc5%au8*W*!9BRzg%vK z%rC_DHv8UXT(tMg+2J;zN_9^vmwc!7YIm=R!GzK-aJ%LBhfa%j1jm zuJNM`u5g~!*P_WGw@eIgUL88Iw$qT+hYJj7(b+*mOS>D0?FUKCS?tcam$cmkmpF3x zEDPaPE$1#ki<8y$O{gZewg{`9vlpjb3R0c6p6B;0$E)tgjrQ+O${5@Q2ri@@i-M@G z;)iDzfnwSN1O;l2_oO(njmN_HRCbSWmop5A>Kbzv(N6TQvbF{*C`@%c&m*2HSv4#l zkClQiUv}$>xVI|7I!07P71(@dPF-Ch+KeyJ2o4_G1=!uL)Z2G=+=Ruki*q)VWqnia zhQHn*3=`bWw`Zxt5NeD|c!13Rw1qg)mS*F3ZOR5&@$#MCDwq6J3f)P`#9;_hPi+`1 z=QcgzJPHG~p(p$Bd6CFv>Q?3HcOds>=edxQd_~svkhDK#hpHAkX9T`++?D9Tdbc~9 zng%BU>v1JvQ}TWM*N^N&(}jmu*qpjjlYxnfoZ*ojGI8f$t(eUB$$kSI@8zP(qG;f! z`l5D~^HB_1S=U^+x32iTcLD_}wkk&y4}crl~t!4`d8)+{vq zIpH(}31M17ALy)G%Lp&)U8Gz>y|jqwOLhQL%K937PA&+UY3;tt&9xYLx}(TDe0V)B z;!3x9vuW&MNs)gcentgC4VB#DV`FSi{*YJLKR%n5YH_o%Niw=avZ@lE%c1$l^D{5Sn(m)m9xzrwbp zBf@tT0%1o&_)EWEdjls;=aE%lv(WSstM|Z;Oc2QHEi-VLiICU4)%c0XHM>HdTQD37 zx8y!L=UgXZDSv*b0Q<&Yq$2LB!4s00c`-2Q{Tvd}T#p4c(U(ToL8|@J!0urFD#!lA zC8SQ@75Oi9LD;3~Rrds)%&&w}4;S6x#N6`P3fGVhd<_$Fx8QZ0`=AvpALIa6OxK%^#I9Cm+3__vhm%sCo-8qVzR z%yY1fg5_{i58daUV=<{w58Y1+8$^^n>)$ zNEL=fWhGpAt{CY3H#gi){zlC9yrlVW%QcqNTeU$|A5xoPLaF3yT5f#>#3hbrdIl2s z_nC-MxvOCWU8Z7Ck>(ttqmD_@%K^Dk>N>Z@Pfv;}>tHIwgX{br@}pUdJy1w9=T_e> z+CZUK2h^PM&rZ^LCTIA+>5Kw)KE~%@;bDaF3yqm`W^5ayL``cc>=~_<*+3SPn*op_ z;37nZ<6ExfGAa3`e?f|0RTEH1+`u@8mo8TC2VMw}c-OlQj8$+hn`4WDS6VC^4f+1i z^@Yr&QPzcK=m6WbpgGH43>k7B71gvRFWjIUvkrag#XOV5nMz$@91{F-ckfvEZB&el zq(Ld!+-1I|8lT7k>Lyv+*#LAC$sI=;+b+x7p`s${V`~8JbLB9MQq#t15{Z2`{fMO@zxfK36Y8DnIm2Z>_~V~dkn~-ZQfI? z6PFV>`TcxaBx#ZhnnI~;nc!45Q119DY)Q$xT!A$&)dQzOb-^;oi$Iju~sgNF~ ztFX_$j`}4WK9vIFk~Rzif!eq)AP^s2&v|VcgDBiWeZ7aTm*ir6PDK2=2MQxt39E;e zefRd9JTGg&Wz2;|t^@D(rsD`;24-7?sY zliptJ+UR5ORRY#i8+?fHt87qD z;S6DlaepsxoyC-$RRCjLcZ|TtfTL#Gt6Q9lFjo-vC^ELEAx3F~>v;Te#8RwqbNR5D z%HHy6CA^vZoTVml38@+fZErQyn{)2b+-L~F&lb($>{u@>54h=`mPXuL764>7b=vgC zCiLGqT*EOocZ|H=U(sc*Y@K9C7lt5rlV36OA6w{eqp!~A9>2VP9$cz9DwNkp@jlG@ zJ&Z5u1wt!%zm0ljnU`4>ZXU7FM0Ocu_!Ban=cw@dSI6{CP72ALhDfartO~=lRptYX z=_==wq|wL*li4R!Fo< zflbCrvkwY~J*~eyz#@yHJ20PfH}w`Fn$D&)3slXO*$<~1p(7&5Yf~F-`>8#w$?pL~ z1jxpTw@gObrV*y1f={<_d!kH#Ljx~lsa*NQ8OGUTJ5+eJd3e+H|1d@3)NZ*-V z>|aOhMgy8MZM=;(H}4HxoRbJ6+DZvjGkc45;(ERyHj~KRWM3v^A`0lE z_6s+fZb~PCdz?JHeOIC_Fv1)zKjyD{lPozFk4Iiz7{5}O(0X00cv_Gv+8SMtGGeB< z(%ymF7BJJUF1RY60ZjP(HGWQ_j3zN5_ftf^0%IP(QP-uCcE#sH9*cBs_80y$IUe*O zIK`gdY|5HEr$0=?!pP%%LcThvKK*b7?G4GBs((@SB7mz__5K zZyv-LjozNxVukgiA1Lr9R0wQUbGtN$EQBq0fOkz$KbT6+&ms2N-}YPYjfr~biMkjy zjTUR3J(6+nOz{t6-vnE~XiME34qwTD=;U@4Nb0U!oEqL>=i(!f4GMhRP!7lAnf+aA zj!aK=t=AN_MSbcdI-=hhz=aNKr7b{BgMb=0Izr&8%7v%Q44xDcwVX7o~9!viYZeR6dteTq((COjlPN?YtG82vsvosilLu z4z#yF88Ek#M>lRA(g=tn6CSQp_St9{ySeu5+!C>x>Ad3%>;-cQ>YPf`7CL_+rs?xM z4&7+-ERnBM&iocL)t_FynuNd>UDzgvKyB@URttOv-BC3vBxql9aBdQd1Ko%U-{l`4~$6I(ik#hi!eB+Lu1vc+XM2IdyOf6>!3s4OJuZ!y>|u7^H&m;s6!d-&52gF|f7u)QQ)Rsur+8u%r3ixEz3PhGl;`epF(og?xDGz zRYjvR!2qDM|3mWqP&dkFvYD0@)TwjPDotYYmjW)^ebk7AB}AZ!EUoJhi8hbov8585 z$uj@G#W3<1s@sqQEXN!S%W87bSsq=QEUH@SimDYPqUD8jhQY)nPfzA$n(S9|!rO8v zFC$S;!2*2cSyJ-(!V#4llIlQ`_1=^kGxOVCz^af7B#*qI^uRuoiq=|*S&o?7Ys_S* zcR0PAkV77{Qgp+|;8Cs)+v~EQcj3Bjbw3Ma$M2Kb{Si zRDq4x)>bU7SviaB3E!QX9oXIe%IDYbiJIV#!f(IN!LZ6Et!T#_%IqDXSDhBnudE|j z_*op~XddhZh8S2vb`E3}1+Gd5B1I*_#v{fU-J}c=c?|`&j^@Nv<-vT0gEc1V2A@q{ zU%$*LO!fL`6ahOdZuDK*8Oop#;lpw0;-Q$hf%8+2Z*d(c#(9(OUZ|n*y0k$hF+th432iJ0kk$RHVOv;%YJLFkVIG(7qC-*G`k6l(YH-xKN~mrYQl3>9I<{_C!8oOZ?egO{S_%_Pu25k z4uSL?R;=7spmM3?QHwiuq!hb9|Hn6jg~l5Pufn|BUXf-gCdon>hjkmJinF`yYmP`s zIW42sXRICy28niz#-TV@ z!S#1o^>;%A=m8P@uyB+pL6geH-<)DWL|R-7-8D#g!1{LM{ap~n_{d@u#M2`1Uu!|9ZOc91`$$Dyy? zIsK^{v+JkTQVRGc`>_sW?7~)lB0Sbgn?76{ra?OqiZ*Ob%`D2QEzML~Dq`&VLO`Wl z9fc^APs){QEwHSbK?@PMr3l~WKk3;bMdGRWF&WILt5hvHcQY{YibF5i)()aSU-Ku% zgcKv>^|jupGgpV=H!BugL0Mj{2dN7q@tiHiK>DvfpI5uMe@?g%vdIz*gZs%JP@Sr*iXYmu#Jhmu;=NAbBFz;v)xPgO!TbZ}R%4T0xOHF-ll9y#0?xkzF=3Rdi zPlR6>3-S5Fk#17(0Kt~0S?GdE+EVQ)!Lm9yGsa%8&9q#(7wU1P)ErB{fP<@OI)>T7 zvl)VAUC53d(Ra)Qqug4liu}1X#2f5~DrK8$1)j_!c3*5lx}x`R8PNpwO9*|HM4|sw z6lOIb+W1!xQcBWW zmtpcRA{^O&^^JQQTQI;O)YT|1hqGopUfQwUI?5sKJ=OgX%x;XkE%~YO6HLM0TZ)kq6 zx8DRFhSBerU}J}ScJTHfi__0YEv}$=i?nkbvLyNA$%@MFL1ex55#9qftCWhat8A^~ ztU3uN#+bMNKNZ8}TVP2>s+9&OT1zXE5&WWL12P4ZS!2FjAy<}qfABSS zGU>C@toW^kCR_WMV-*z+Jj}>V_f2uPFPUa}BJYd7HvXD$Xqv#Wb@C*0_v}aoOgC+? z2#YIiOyNSYLnqqFzEY7M^u|K<0jE>|?a)MoEetLt-h3e2o?W{$fo|bUkIJh#pPWeU zDB%|wYb|DBaO9_8m#u7Dn{P_75s{2zAn)U#>U6iaBYF%m1a5cV=&byRZn%$7EWR)M z=H#=ypH3(v5Nlz4P_O24)?(|b$qt5ypo}PW+mkMk04d+jXu;aSQl7yvo2GNnetF~f z*oUY`^-Dq}XXGjDuzFuSgqvC$Cdds3;a^Bk?8V?)`%7gx zTFq>6;}-oT+sN*vZUM}=&tjM5<;uARYezKerUqW-9W6k!UH8pSyB0w$_eV3=?GMGu@%VQ?L>~ zIv|OHA0~{kaZKXpHV+8b^*^HI&Sh;y(K+^OHbgQvB=8q}Nvxu{W7scg?9>1exVdo- z5_i8`^J}=8afBi`t4`gLNAaL=i6G-LNPggF%v5N`z_|45$f4p{7EKe2*V|&2Kq2)N zR@Pvm$|Rq==*rZ^*-LH5ic}e0mlQr7M}1>9wA?RlV(jV$U`iA(V0=3r`ufSeAa$el zsyyJ^MYaHP0XNX5ASM)F!oz4nmpD}_LuHU-P>n&DU8}vFr=vCE48v*dGu3*SiE69U zC)BMkP%&P_67kGD;dqycNtgj2u`nmlzH0C?8%phO###>j2vE5iGp?sXi7j-aS9rV^ z&ztV0^fByPfLrb#0qyg2HPfbp%1oNTl2W-Ci$8!O`T{0*VV%?BL17~nI%T`=>3ieT z@bq+3%|cB^q~0{q-v_QM*yKVzEu#34$HeeKp|Mn^-y@pmtz9r50^?<=Y@|LTd=A`|4OwAB*(dX3 zi!|mOi|f9->povxVr!vJoOq3FiJcFWp`-+tiT6DFK9d4U=Kf(}7oUWTY~gh$_~!M) zOBSFC0(^|<69u$W7~hf>%p}Gk#Qn3GA8Xw!B$^$e^?&cCf8XH!_ilP7b{6)(cer!? z_g-+O_wDQdZ`356I2l_Y06F9~BhaKJ%vuCK%2=ahItt6D$QEg%D@L<~sb{>WkpU=L zJR3YV@OvWS2dB$KCZU>c+rZDODn|}aT!YlgDG&jm$yFKZO0;SF$;G;?h`yNPX`@MS z@ujV)95CXWb5ohauT~14tjz$2@rXuqqUe_%H@(8|vd?T^2vfQ$+l*~S=$g<^O<*d4 z5N(6wkK+ZG4y!jqCkp4ykQ>BjG}J?*m`RM-VL_cBR>L(rQBHK=cCVQqYKQGOwpj?U)x5U|bVRuhPM zsEn6}voY^T!|7g}u%EY_>#XdVS1=Wz><+}6g(~6lt*oo1fP3zoVa<_L!2EXx|D@#~ zDP&>g{5ye6?+k>$ck}T8`!)N7^E~m$;v3v$XnPL zx;QBr*vir=nwYu#C1h=2<^*8tW5xne|iZy8NHJt-bDU1-v{yDe((GT5HYZqG_f!<|Cfl8vx$u=fb*~J?+wYn z8}CDYBO{mq-suYePG5MZYW%mufAlN47&`xfBFa|=f&XAyG) zM*s`+A4ReT|7bHY|E1wo)U=HLXppKNUG|8f3rvj6|syOlS7%HOsa|MmXg$H4rS>UUf3S5B5UQpex& ze|odLBX2$b?(r`9-hMy-Fkar6D|RZj7Vl(6z=wdZS(bzjyl=Er{vg`J8{PIT3@m#b9Ulm+p6O{=p3T zS0{Hz6H{15023=L<3A4oI~yAd8^9Fs7skZO&iodf_XA-24~&tCh2t%{|A{d&GQF*W z|HPPBSl?F4e_%|kOdM~a`VWkeiIw9mA^!to=X!JLKd?7-Z2zV2t?vBK@iDP*G5)t4 z7t8+~^P6v+Z(03M8*l2~XkLF~&W;9e>)r7WOIFFk)8su?@6;njJG;01|BE>#Wo!DD f=l41AXI42m8#p@ui7pc>Cp!l$8JU=ZIPCucD*p45 literal 0 HcmV?d00001 diff --git a/software/doc/latex/system__timer_8h.tex b/software/doc/latex/system__timer_8h.tex new file mode 100644 index 0000000..9c533e4 --- /dev/null +++ b/software/doc/latex/system__timer_8h.tex @@ -0,0 +1,39 @@ +\hypertarget{system__timer_8h}{}\section{platform/system\+\_\+timer.h File Reference} +\label{system__timer_8h}\index{platform/system\+\_\+timer.\+h@{platform/system\+\_\+timer.\+h}} +This graph shows which files directly or indirectly include this file\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=202pt]{system__timer_8h__dep__incl} +\end{center} +\end{figure} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{system__timer_8h_aa2e1abc835e556904f718ede78c1df6f}{init\+Alive\+L\+ED} (void) +\item +void \hyperlink{system__timer_8h_af9e6109b87e10db9303be55cffb97498}{toggle\+Alive\+L\+ED} (void) +\item +void \hyperlink{system__timer_8h_a2ef37c6b4d5f172facf1a8cef7fcedd5}{init\+Clock} (void) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{system__timer_8h_aa2e1abc835e556904f718ede78c1df6f}\label{system__timer_8h_aa2e1abc835e556904f718ede78c1df6f}} +\index{system\+\_\+timer.\+h@{system\+\_\+timer.\+h}!init\+Alive\+L\+ED@{init\+Alive\+L\+ED}} +\index{init\+Alive\+L\+ED@{init\+Alive\+L\+ED}!system\+\_\+timer.\+h@{system\+\_\+timer.\+h}} +\subsubsection{\texorpdfstring{init\+Alive\+L\+E\+D()}{initAliveLED()}} +{\footnotesize\ttfamily void init\+Alive\+L\+ED (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{system__timer_8h_a2ef37c6b4d5f172facf1a8cef7fcedd5}\label{system__timer_8h_a2ef37c6b4d5f172facf1a8cef7fcedd5}} +\index{system\+\_\+timer.\+h@{system\+\_\+timer.\+h}!init\+Clock@{init\+Clock}} +\index{init\+Clock@{init\+Clock}!system\+\_\+timer.\+h@{system\+\_\+timer.\+h}} +\subsubsection{\texorpdfstring{init\+Clock()}{initClock()}} +{\footnotesize\ttfamily void init\+Clock (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{system__timer_8h_af9e6109b87e10db9303be55cffb97498}\label{system__timer_8h_af9e6109b87e10db9303be55cffb97498}} +\index{system\+\_\+timer.\+h@{system\+\_\+timer.\+h}!toggle\+Alive\+L\+ED@{toggle\+Alive\+L\+ED}} +\index{toggle\+Alive\+L\+ED@{toggle\+Alive\+L\+ED}!system\+\_\+timer.\+h@{system\+\_\+timer.\+h}} +\subsubsection{\texorpdfstring{toggle\+Alive\+L\+E\+D()}{toggleAliveLED()}} +{\footnotesize\ttfamily void toggle\+Alive\+L\+ED (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + diff --git a/software/doc/latex/system__timer_8h__dep__incl.md5 b/software/doc/latex/system__timer_8h__dep__incl.md5 new file mode 100644 index 0000000..6d16e95 --- /dev/null +++ b/software/doc/latex/system__timer_8h__dep__incl.md5 @@ -0,0 +1 @@ +bbb5e607dc1f992080564707d1da659f \ No newline at end of file diff --git a/software/doc/latex/system__timer_8h__dep__incl.pdf b/software/doc/latex/system__timer_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1fe47d17311627526ae9eb4300075da59ac4d43c GIT binary patch literal 12834 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 tDrH;SxA}k1`Cn^J+Q#H$}\newline +Include dependency graph for usart.\+h\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=218pt]{usart_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=244pt]{usart_8h__dep__incl} +\end{center} +\end{figure} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{usart_8h_adbc6489d5d90a63ca2cfd1948091aef3}{U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE}~1024 +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{usart_8h_a7d08f26cbf4b00f400972b2df19bc78b}{usart2\+Init} (void) +\item +uint8\+\_\+t \hyperlink{usart_8h_af67798b30466ae997de23584f384595e}{usart2\+Put\+String} (uint8\+\_\+t $\ast$word, size\+\_\+t size) +\item +uint8\+\_\+t \hyperlink{usart_8h_ae9015c84b756436a139ad5cee89e781e}{usart2\+Get\+String} (uint8\+\_\+t $\ast$word, size\+\_\+t buff\+\_\+size, size\+\_\+t $\ast$string\+\_\+size) +\end{DoxyCompactItemize} + + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{usart_8h_adbc6489d5d90a63ca2cfd1948091aef3}\label{usart_8h_adbc6489d5d90a63ca2cfd1948091aef3}} +\index{usart.\+h@{usart.\+h}!U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE@{U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE}} +\index{U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE@{U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE}!usart.\+h@{usart.\+h}} +\subsubsection{\texorpdfstring{U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE}{USART\_QUEUE\_SIZE}} +{\footnotesize\ttfamily \#define U\+S\+A\+R\+T\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+S\+I\+ZE~1024} + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{usart_8h_ae9015c84b756436a139ad5cee89e781e}\label{usart_8h_ae9015c84b756436a139ad5cee89e781e}} +\index{usart.\+h@{usart.\+h}!usart2\+Get\+String@{usart2\+Get\+String}} +\index{usart2\+Get\+String@{usart2\+Get\+String}!usart.\+h@{usart.\+h}} +\subsubsection{\texorpdfstring{usart2\+Get\+String()}{usart2GetString()}} +{\footnotesize\ttfamily uint8\+\_\+t usart2\+Get\+String (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{word, }\item[{size\+\_\+t}]{buff\+\_\+size, }\item[{size\+\_\+t $\ast$}]{string\+\_\+size }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{usart_8h_a7d08f26cbf4b00f400972b2df19bc78b}\label{usart_8h_a7d08f26cbf4b00f400972b2df19bc78b}} +\index{usart.\+h@{usart.\+h}!usart2\+Init@{usart2\+Init}} +\index{usart2\+Init@{usart2\+Init}!usart.\+h@{usart.\+h}} +\subsubsection{\texorpdfstring{usart2\+Init()}{usart2Init()}} +{\footnotesize\ttfamily void usart2\+Init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{usart_8h_af67798b30466ae997de23584f384595e}\label{usart_8h_af67798b30466ae997de23584f384595e}} +\index{usart.\+h@{usart.\+h}!usart2\+Put\+String@{usart2\+Put\+String}} +\index{usart2\+Put\+String@{usart2\+Put\+String}!usart.\+h@{usart.\+h}} +\subsubsection{\texorpdfstring{usart2\+Put\+String()}{usart2PutString()}} +{\footnotesize\ttfamily uint8\+\_\+t usart2\+Put\+String (\begin{DoxyParamCaption}\item[{uint8\+\_\+t $\ast$}]{word, }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})} + diff --git a/software/doc/latex/usart_8h__dep__incl.md5 b/software/doc/latex/usart_8h__dep__incl.md5 new file mode 100644 index 0000000..e71664d --- /dev/null +++ b/software/doc/latex/usart_8h__dep__incl.md5 @@ -0,0 +1 @@ +96fd3bb7db0563b700dd8a8c50ba13ed \ No newline at end of file diff --git a/software/doc/latex/usart_8h__dep__incl.pdf b/software/doc/latex/usart_8h__dep__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..43363a7c1776070566971cdf85cf4ba0c27cca52 GIT binary patch literal 12433 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

u(N^_rHlX;4@_Re`7xl;)Wc8*f1oo z9wKx;MZSBD6)%lYEX&PwqiihD=}`pP0o?`LeUJkR3_I^T<3)cL0zyE&<`{+J}=#d&Upc4 zc5L{O+bwwHs^Gh-JNW1&Z7sCR1jh&EzOmNJqp}=~YMhmNhU|<=2h)SGYh4ntv`e_h z_)J`u@{}EK{@kMTmH^#-sSg^DqY)95LCJF~kvGyd*?p4JN%F)g{cvE+UtcUOl`bOo zajPt5HxmyM)wT4s;^f>0H;LzYF^*H+Hv#<83)q%Q-Im+zKz!GYxgv+8tDUh zVQ1UEc1DEydqj|7ZJ*)Uk@u>*zu#C{hC^9Nq+nYeZYQ_%o%&O*=kUvIt#+G0J$3Gmz z{_vB`KyD5IGl+*10AvG!0KA;+e_@m|uEuuOrlJm(cIE)K-(I3%(`O9x$>jI&c@fX! zXXoF7xUrM8xwWO$KTXtJ&FwV-Jb&Du2hx8Jo|pWDKbixc0m**_CZFNZ|K9NL`PCpM zuD`+1=R^R1OJc@g^WTi=|8wWoE?`%2D`OV`JLtEUyzyUSAn*@P`R_Re{LcEHewTE3 z!keufECH-q)()Z$VC%ny-xFzBo4Hzn|DsTz56S=b1LEcZJU{=pd;fnm&L;-;39n`Q zGwYw2&l>2du+Q4_m52R_8hz6KezF1BpOq({XZvUMH%0qI!#Zj>SUE3}X63q5t3A{)rj`{}pflbE?FR zpW5Bg^3UAQyZMVY{-=|Ni@6078vw|G#P*K|fQyrpofBXI_@e=VJfNpMKR*Bte`#!N zoKN}vPmK-u)aUrU8K*Z2zgTv2k%crSISD*w}cUEB|jAkd2%Dsc`?Pas8(+ z5C~-dFJB;#^S^w7JWuZt|1lqk?Kzcy$8dEqemc=EzyE1K&DzWSIakj(v#O)xQ~m!* kW6L;LJk|NR2Yz=I*wxs@^>=oGAT};8Bx-6&B`Ku;0iMNi;s5{u literal 0 HcmV?d00001 diff --git a/software/doc/latex/usart_8h__incl.md5 b/software/doc/latex/usart_8h__incl.md5 new file mode 100644 index 0000000..0e3bf9a --- /dev/null +++ b/software/doc/latex/usart_8h__incl.md5 @@ -0,0 +1 @@ +436a62b3d85729203d70bb8bcdd58e67 \ No newline at end of file diff --git a/software/doc/latex/usart_8h__incl.pdf b/software/doc/latex/usart_8h__incl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..78bc2c0b291e3a64f78857d9121e05c6272f0226 GIT binary patch literal 13300 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 N% +//--------------Includes----------------- +#include"stm32f10x.h" +#include"helpers.h" +#include"error.h" +#include uint8_t osItoa(int iint, char* iochar, size_t ibuffsize, size_t* obuffsize) { @@ -37,7 +39,10 @@ uint8_t osItoa(int iint, char* iochar, size_t ibuffsize, size_t* obuffsize) iint /= 10; i++; if( ((buff_size_1 - 1) < (unsigned int)i) || ((buff_size_2 - 1) < (unsigned int)i)) - return 0; + { + THROW_ERROR(E_BUFFER_OVERFLOW); + return 0; + } } /* Fix the minus symbol. */ diff --git a/software/os/helpers.h b/software/os/helpers.h index e980831..d609798 100644 --- a/software/os/helpers.h +++ b/software/os/helpers.h @@ -1,10 +1,11 @@ -/* - * helpers.h - * - * Created on: Dec 7, 2017 - * Author: maximilian +/** + * @file helpers.h + * @author Maximilian Stiefel + * @date 8 Jan 2018 + * @brief Functions, which one needs here and there for the operating system. */ + #ifndef OS_HELPERS_H_ #define OS_HELPERS_H_ @@ -33,6 +34,7 @@ inline int osPowInt(int ibase, int iexponent) * @param iochar C string where the result ends up. * @param ibuffsize Size of the C string for security reasons. * @param obuffsize Size of the string created by the function. + * @retval 1 (SUCCESS) or 0 (buffer overflow). */ uint8_t osItoa(int iint, char* iochar, size_t ibuffsize, size_t* obuffsize); diff --git a/software/os/logo_ascii.txt b/software/os/logo_ascii.txt new file mode 100644 index 0000000..39e2366 --- /dev/null +++ b/software/os/logo_ascii.txt @@ -0,0 +1,76 @@ + + `-+syso/:+o+++oso+:-:/ossssoo+:.` + `..``./sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdso- + .odNMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMs` + `dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMm. + `/dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm. + -oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmo + hNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMdNNNdMMMMMMMNMMMM:so- + /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMddNMhMMMMMMMMMMMMNNhm+ + oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmoMMMMMMMMMMMMMMMMMMMN+` + sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM+NMMMMMomMMMMMMMMMMMMMm: + `-sMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMdsNMMMm-oMMMMMMMMmNMMNMm` + -smNMMMMMMNMMMMMMMMMMNmd+:oso//:-//+odmdNMMMMMMMMMMMhdMMMs-:NMMMMMmd+dNMMMm. + /NMMMMMMMMMMMMMMMMMMMs..` ``.-+ohMMMMMMMMMMMMMMN+hMdmMMMmm+NmNmMM+/` + -NMMMMMMMMMMMMMMMMMmo: `hMMMMMMMMMMMMMMNMMMhMMMMysMMMNMMNNhy- + oMMMMMMMMMMMMMMMMMMm` -+mNNMMMMMMMMMNNNmMNMMMMNohMNMMMMddsh` + :MMMMMMMMMMMMMMMMMd: ...:dMMMMMMMNhMmNmmMMNMyhMmMMMMmNNM+ + /NMMMMMNNMMMMMMMMs` .dNMMMMMMhmmMMMMMMMNdMMMMMMNmNNNy. + .dNMMMMMMMMMMMMMMM: dNNMMMMMNmhmMMMMMMNMNMMMMMMMMMMMN/ + ../mMMmmMMMMMMMMMMM- sNdMMMMMMmymMMMMMMMMhMdmMMMMMNMMMN. + +osyMMMMMMMMMMMMMMM: -NMMMMMMMMmNMMNMMMNMMNNNMMMMMyomNMh + `dMmhmMMMMMMMMMMMMs -mMMMMMMMMMMMMNMMMNMMhmMMMMMNo/hmdds` + /h..dMMdNMMMMMMMMd `.-::::--hMMMMMMMMMMMMMMNsdhNMddNMMNmmyhyNsyhh` + .//hmNMNMMMMMMMMMM` `..` .-/o+:-` `:odmNMMMmMMMMMMMMd:ooNmNMMMs-oyMsysmmN/` + odMddmMMMMMMMMMMMM/ .::/+/:. `oo+-` ` `:yMMMMMMMMMMMMyhshMMMMMs/-MMNsdNdddy:` + .sNMMMMMMMMMMMMMMMMMh .:::/--. `-+oshhy+. +MMMMMMMMMMMMNNMmMMMMM/yhMMd/ohsoNmos + .NMMNMMMMMMMMNMMMMMMMM``ym+/Nmms` -/:mMMNNmd: `sMMMMMMMMNNMMMMMNMMMMMddsmMNs.:/+h/. + .NMMMMMMMMMMMMNNMMMMMM` .+/sdhs/` /s/::o+::`` .dMMMMMMMMMNMMMMMMMMMMMMMMhNMM:omMy . + /MMMMMMMMMMMMMNMMMMMM- .NMMMMMMMMMMMMMMMMMMMMMMMNhmMMddMMs/:: + -MMMMMMMMMMMMMMMMMMMMs dMMMMMMMMMMMNMMMMMMMMMMMMymMMNmMMmo-. + +MMMMMMNMMMMMMMMMMMMMN` -MMMMMMMMMMMMMMMMMMMMMNMMNhmNhNmymMmy: + yMMMMMMMMMMMMMMMMMMMMMy +MMMMMMMMMMMMMMMMMMMMMMMMMMMm/yhdNMmys + `NMMMMNNMMMMMMMMMMMMMMMM/ - /. .hMMMMMMMNMMMMMMMMMMMMMMMMMMMMmMMMMMNN + NMMMNMMMMMMMMMMMMMMMMMMM: `. -. -NMMMMMMMMMMNMMMMMMMMMMNNMMMMMMMMMMMM + +MMMMMMMMMMMMMMMMMMMMMMMN: ` .NMMMMMMMMMMMMMMMMMMMMhd/mNMMMMNMMMN + /NMMMMMMMMMMMMMMMMMMMMMMMo ` :MMMMMMMMMMMMmNMMMMMMMMm--MmyMMhNMMd + hMMMMMMMMMMMMMMMMMMMMMMMMd- `:::-/++osssoo. `mMMMMMMMMMMMMmdMMMMMMMMM/.MMyNMMMMMy + :NNMMMMMMMMMMMMMMMMMMMMMMMMNo` -+syssymo` .mMMMMMMMMMMMMNNmMMMMMMMMMyhMMsmMMMMMM + oy/..MMMMMMMMMMMMMMMMMMMMMMMMMMN/ `. -NMMMMMMMMMMMMMNmMMMMMMMMNmyMMMMMMMMMsd + :h+ .dMMMMMMMMMMMMMMMMMMMMMMMMMMMh. .yMMMMMMMMMMMMMMMMMMMMMMMmmhhNMMMMMMMMMMN + `s` oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN: -/hMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMdMMMMmNMh + ` oNh:hMMMMMMMMMMMMMMMMMMMMMMMMMMMMN+ `.` `hMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMNsdNMMMMMm +- yNMNMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/ .osmdMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMM +. +NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs o+o`oNMMMMMMMMMMMMMMMMMMMMMMMMMdNMNyMMMMMMM + :mddmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs +h``sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMNNNNM + `.dd/NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM- /shNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMm + `hddNMmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs` +NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmMMMMMMh- + :o:/+NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN- `+MMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMdN + `-+mMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm- --/NMMMMMMMMMMMmMMMMMMMMMMMMMMMMMdNMMMMMMMM + `//oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: -+.+NMMMMMMMMMMMNMMMMMMMMMMMMMMMMMdNNMMMMMMM + /sMNNyhMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs /.-yymMMMMMMMMMMMMMMMMMMMMMMMMMMMNmMNMmdMMMM + -ohmMNNMdsMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd. `-/-oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdN/mMMM + -/-:odmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh:+.` .`omMMMMMMMMMMMMMMMMMmNMMMMMMMMNMMMNMydMMM +- .` :/:sMMmmMMMMMMMMMMMMMMMMMMMMMMMMMMMMNhd+` `sMMMMMMMMMMMMNMMMMMNMMMMMMMMMMmMMMNMMMmh ++ ` /+ oNmsMMMMMNmmhdMMMMMMMMMMMMMMMMmd/.` -+hMMMMNNMMMMMMMMMdMmMNMMMMMMMMMmMMMMMMMMo` +h ++`.yd++yNMMyo..`oMMMMMMMMMMMMMMNods /o-dNMMmNMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMNh +N` `:o+..sh:yMs+. syNMMMMMMMMMMm+o`` `ohMNMMNmMNMMMMMMMMMMMMMMMMMMMMMMdMNmNdsoNhd +d: +ddd-`/ `-.mMMMMMMMMMMo .-sMo::+mNMMNMMMMMMMMMMMMMMMMMMMMMNNh/`./`` +/o :yM+`. /MMMMMMMMMMMNo smo .mmNMNMMMMMMMMMMMMMMMMMMMMm+/: ` +`h `/+hMM/ ` :dNhsmMNshddms /mo. --.:hMmmmMMMNMMMMMMMMMMMMy- + d` .oMMM- . .oyhmN+ `` `:/ . ` `d-.yMMh+MMMNNmmhoooo- + +o dMMM/ ` `..- .- ``ohoMMN/-mNm/-.` + .m` dMMM- -.+oyMMd-o.`-. + do mMMM/ `/``hMMm. + +N. `MMMMh` ` :`+NMM- + .Ny +MMMMM/ `:` `sNNMMo` + /M- yMMMMMd` .sdMs -mNNMMMMh- /.`- + hh dMMMMMMo .dMMMd .yNMMMMMMMMMy.oNmo + .m. dMMMMMMN. sMMMM: :mMNMMMMMMMMMMNhMMh + /y hMMMMMMMNy` ` oMMMh `/MMMMMMMMMMMMMMMMMMM- + h: oMMMMMMMMMh: -:` hMMM- -oyNMMMMMMMMMMMMMMMMMMM: + :m` -MMMMMMMMMNNds:-oo-` -MMMd .hNNMMMMMMMMMMMMMMMMMMMMM` + sy hMMMMMMMMMMMMMMh/smhshMMMMs `:/oMNNMMMMMMMMMMMMMMMMMMMMMd + `h/ :MMMMMMMMMMMMMMMN+:dMMMMMMy :+yyhNMMNMMMMMMMMMMMMMMMMMMMMMMMMM: + `y` yMMMMMMMMMMMMMMMMMMMMMMMMMhmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm + -o sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs```````````````````` diff --git a/software/os/ossettings.h b/software/os/ossettings.h index da6bd28..81117ba 100644 --- a/software/os/ossettings.h +++ b/software/os/ossettings.h @@ -1,3 +1,11 @@ +/** + * @file ossettings.h + * @author Maximilian Stiefel + * @date 8 Jan 2018 + * @brief File where all settings take place. + */ + + #ifndef OS_SETTINGS_H #define OS_SETTINGS_H @@ -11,7 +19,7 @@ /* Timing */ // TODO: Adjust this: -#define SYS_TICK_MS 1000 +#define SYS_TICK_MS 100 /* Don't adjust this ;) */ #if (SYS_TICK_MS <= 100) #define SYS_TICK_PERIOD_MS SYS_TICK_MS @@ -19,7 +27,7 @@ #define SYS_TICK_PERIOD_MS 100 #endif #define MS_2_TICKS(MS)\ - (MS/SYS_TICK_PERIOD_MS) + (MS/SYS_TICK_MS) #if (SYS_TICK_MS < 0) #error "SYS_TICK_MS can not be smaller than 1." #endif @@ -43,5 +51,10 @@ /* printf */ /* Convert every \n to \n\r */ #define CONVERT_NEWLINE +/* Size of a standard string printed with printf. */ +#define STD_STRING_BUFFER_SIZE 128 + +/* Debugging ON == 1 or OFF == 0 */ +#define DEBUG_MODE 1 -#endif +#endif /* OS_SETTINGS_H */ diff --git a/software/os/ostypes.h b/software/os/ostypes.h index 9d3c1f5..5a85cf0 100644 --- a/software/os/ostypes.h +++ b/software/os/ostypes.h @@ -1,11 +1,18 @@ +/** + * @file ostypes.h + * @author Maximilian Stiefel + * @date 8 Jan 2018 + * @brief Different types the operating system uses are defined here. + */ + + #ifndef H_OS_TYPES #define H_OS_TYPES //--------------Includes----------------- #include - -#include "ossettings.h" +#include"ossettings.h" //--------------Scheduler---------------- @@ -52,7 +59,11 @@ typedef enum E_HEAP_OVERLFOW, E_MAX_LEVEL_INT_NESTING, E_BUFFER_OVERFLOW, - E_NULL_FORBIDDEN + E_NULL_FORBIDDEN, + E_WRONG_USAGE_OF_PRINTF, + E_USART_RX_BUFFER_OVERLOW, + E_USART_TX_BUFFER_OVERLOW, + E_PRINTF_WENT_WRONG } osError_t; /** Enum to hold all possible warning codes. @@ -79,9 +90,30 @@ typedef struct { uint8_t write_p; uint8_t read_p; + size_t varsize; + uint16_t qsize; /* Gives you the possibility to use the q with every data type. */ void* start; - size_t varsize; } osQUEUE_t; +//--------------Semaphores--------------- + +typedef enum +{ + AVAILABLE, + TAKEN +} osSemaphoreBinary_t; + +typedef enum +{ + BINARY +} osSemaphoreType_t; + + +typedef struct +{ + osSemaphoreType_t type; + uint8_t data; +} osSemaphoreHandle_t; + #endif diff --git a/software/os/printf.c b/software/os/printf.c index 81c3238..20031f1 100644 --- a/software/os/printf.c +++ b/software/os/printf.c @@ -5,6 +5,7 @@ * Author: maximilian */ +//--------------Includes----------------- #include #include #include @@ -13,6 +14,7 @@ #include "printf.h" #include "../platform/usart.h" #include "ossettings.h" +#include "error.h" /** Increment index for a char buffer savely, preventing overflows. * @@ -25,7 +27,10 @@ static inline uint8_t osPreventBuffOv(uint* ioindex, size_t ibuffsize) if(*ioindex < ibuffsize) (*ioindex)++; else + { + THROW_ERROR(E_BUFFER_OVERFLOW); return 0; + } return 1; } @@ -39,7 +44,7 @@ static inline uint8_t osPreventBuffOv(uint* ioindex, size_t ibuffsize) * @param iflag Indicator if the user wants a certain amount of decimals. * @retval Characters printed (SUCCESS) or -1 (FAILURE). */ -static void osParseFloat(char* iobuffer, size_t ibuffsize, const char** iformat, uint* i, double ifloat, uint8_t iflag) +static uint8_t osParseFloat(char* iobuffer, size_t ibuffsize, const char** iformat, uint* i, double ifloat, uint8_t iflag) { int temp_int; size_t temp_buffsize; @@ -49,14 +54,13 @@ static void osParseFloat(char* iobuffer, size_t ibuffsize, const char** iformat, /* Get the pre-decimal positions through implicit casting. */ temp_int = ifloat; if(!osItoa(temp_int, temp_string, sizeof(temp_string)/sizeof(char), &temp_buffsize)) - { - // TODO: Throw error. - } + return 0; /* Concatenate. */ for(uint j=0; j < temp_buffsize; j++) { iobuffer[*i] = temp_string[j]; - osPreventBuffOv(i, ibuffsize); + if(!osPreventBuffOv(i, ibuffsize)) + return 0; } if(!iflag) float_decimals = 4; @@ -77,21 +81,29 @@ static void osParseFloat(char* iobuffer, size_t ibuffsize, const char** iformat, /* Get rid of everything before the comma. */ temp_int %= osPowInt(10, float_decimals); if(!osItoa(temp_int, temp_string, sizeof(temp_string)/sizeof(char), &temp_buffsize)) - { - // TODO: Throw error. - } + return 0; /* Concatenate. */ for(uint j=0; j < temp_buffsize; j++) { iobuffer[*i] = temp_string[j]; - osPreventBuffOv(i, ibuffsize); + if(!osPreventBuffOv(i, ibuffsize)) + return 0; } /* Get rid of the f. */ if(iflag) (*iformat)++; + return 1; } -int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* iformat) +/** printf implementation where the magic happens. + * + * @param iarguments Variable arguments list. + * @param iobuffer Buffer where the formated string ends up. + * @param ibuffsize Size of the iobuffer for security reasons. + * @param iformat Format string from the user. + * @retval Characters printed (SUCCESS) or -1 (FAILURE). + */ +static int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* iformat) { uint i = 0; int temp_int; @@ -113,44 +125,71 @@ int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* /* Get int and convert it.*/ temp_int = va_arg(iarguments, int); if(!osItoa(temp_int, temp_string, sizeof(temp_string)/sizeof(char), &temp_buffsize)) - { - // TODO: Throw error. - } + return -1; /* Concatenate. */ for(uint j=0; j < temp_buffsize; j++) { iobuffer[i] = temp_string[j]; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; } break; case 's': temp_charptr = va_arg(iarguments, char*); while(*temp_charptr != '\0') { + /* If you are too lazy to always type \r\n */ + #ifdef CONVERT_NEWLINE + if( (*temp_charptr) == '\n' ) + { + /* Copy \n */ + iobuffer[i] = *temp_charptr; + temp_charptr++; + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; + /* Add \r */ + iobuffer[i] = '\r'; + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; + } + else + { + iobuffer[i] = *temp_charptr; + temp_charptr++; + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; + } + #else iobuffer[i] = *temp_charptr; temp_charptr++; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; + #endif } break; case 'c': /* Get char and convert it.*/ temp_char = va_arg(iarguments, int); iobuffer[i] = temp_char; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; break; case '%': /* Enable possibility to write %% to write a single %.*/ iobuffer[i] = '%'; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; break; case '.': - osParseFloat(iobuffer, ibuffsize, &iformat, &i, va_arg(iarguments, double), 1); + if(!osParseFloat(iobuffer, ibuffsize, &iformat, &i, va_arg(iarguments, double), 1)) + return -1; break; case 'f': - osParseFloat(iobuffer, ibuffsize, &iformat, &i, va_arg(iarguments, double), 0); + if(!osParseFloat(iobuffer, ibuffsize, &iformat, &i, va_arg(iarguments, double), 0)) + return -1; break; default: - // TODO: Throw error in case a wrong formatting cmd is used. + THROW_ERROR(E_WRONG_USAGE_OF_PRINTF); return 0; } /* Skip control specifier. */ @@ -165,16 +204,19 @@ int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* /* Copy \n */ iobuffer[i] = *iformat; iformat++; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; /* Add \r */ iobuffer[i] = '\r'; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; } #endif /* Copy characters into buffer. */ iobuffer[i] = *iformat; iformat++; - osPreventBuffOv(&i, ibuffsize); + if(!osPreventBuffOv(&i, ibuffsize)) + return -1; } } iobuffer[i] = '\0'; @@ -185,7 +227,7 @@ int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* int osPrintf(const char* iformat, ...) { va_list arguments; - char buffer[128]; + char buffer[STD_STRING_BUFFER_SIZE]; int return_val; va_start(arguments, iformat); @@ -197,7 +239,7 @@ int osPrintf(const char* iformat, ...) } else { - // TODO: Throw error if sth. goes wrong. + THROW_ERROR(E_PRINTF_WENT_WRONG); return -1; } va_end(arguments); diff --git a/software/os/printf.h b/software/os/printf.h index 36cb929..84ce382 100644 --- a/software/os/printf.h +++ b/software/os/printf.h @@ -1,10 +1,11 @@ -/* - * printf.h - * - * Created on: Dec 7, 2017 - * Author: maximilian +/** + * @file printf.h + * @author Maximilian Stiefel + * @date 8 Jan 2018 + * @brief Lightweight version of GNU printf. */ + #ifndef OS_PRINTF_H_ #define OS_PRINTF_H_ @@ -28,14 +29,4 @@ */ int osPrintf(const char* iformat, ...); -/** printf implementation where the magic happens. - * - * @param iarguments Variable arguments list. - * @param iobuffer Buffer where the formated string ends up. - * @param ibuffsize Size of the iobuffer for security reasons. - * @param iformat Format string from the user. - * @retval Characters printed (SUCCESS) or -1 (FAILURE). - */ -int osVPrintf(va_list iarguments, char* iobuffer, size_t ibuffsize, const char* iformat); - #endif /* OS_PRINTF_H_ */ diff --git a/software/os/queues.c b/software/os/queues.c index cb2d231..201998c 100644 --- a/software/os/queues.c +++ b/software/os/queues.c @@ -11,17 +11,32 @@ #include #include -static inline uint8_t osQFull(osQUEUE_t* q); +static inline void osWrapArroundInc(osQUEUE_t* q, uint8_t* i) +{ + if( (*i) < q->qsize ) + (*i)++; + else + (*i) = 0; +} -static inline uint8_t osQEmpty(osQUEUE_t* q); +static inline uint8_t osQFull(osQUEUE_t* q) +{ + uint8_t next = q->write_p; + osWrapArroundInc(q, &next); + return(next == q->read_p); +} -static inline void osWrapArroundInc(uint8_t* i); +static inline uint8_t osQEmpty(osQUEUE_t* q) +{ + return(q->write_p == q->read_p); +} -void osQInit(osQUEUE_t* q, size_t ivarsize, void* istart) +void osQInit(osQUEUE_t* q, size_t ivarsize, uint16_t iqsize, void* istart) { q->read_p = 0; q->write_p = 0; q->varsize = ivarsize; + q->qsize = iqsize; q->start = istart; } @@ -33,7 +48,7 @@ uint8_t osEnqueue(osQUEUE_t* q, void* data) { /* Copy queue element to where it belongs. */ memcpy( ( q->start + (q->write_p)*(q->varsize) ), data, q->varsize); - osWrapArroundInc( &(q->write_p) ); + osWrapArroundInc(q, &(q->write_p) ); } return 1; } @@ -46,27 +61,7 @@ uint8_t osDequeue(osQUEUE_t* q, void* data) else { memcpy(data, ( q->start + (q->read_p)*(q->varsize) ), q->varsize); - osWrapArroundInc( &(q->read_p) ); + osWrapArroundInc(q, &(q->read_p) ); } return 1; } - -static inline uint8_t osQFull(osQUEUE_t* q) -{ - uint8_t next = q->write_p; - osWrapArroundInc(&next); - return(next == q->read_p); -} - -static inline uint8_t osQEmpty(osQUEUE_t* q) -{ - return(q->write_p == q->read_p); -} - -static inline void osWrapArroundInc(uint8_t* i) -{ - if( (*i) < MAX_QUEUE_SIZE ) - (*i)++; - else - (*i) = 0; -} diff --git a/software/os/queues.h b/software/os/queues.h index f50a84f..27990fc 100644 --- a/software/os/queues.h +++ b/software/os/queues.h @@ -1,8 +1,8 @@ -/* - * queues.h - * - * Created on: Dec 6, 2017 - * Author: maximilian +/** + * @file queues.h + * @author Maximilian Stiefel + * @date 8 Jan 2018 + * @brief Implementation for queues. */ #ifndef OS_QUEUES_H_ @@ -14,14 +14,31 @@ #include"ostypes.h" #include -#define MAX_QUEUE_SIZE 64 - //--------------Functions---------------- -void osQInit(osQUEUE_t* q, size_t ivarsize, void* istart); +/** Function to initialize a queue properly. + * + * @param q Pointer to the memory where the q is stored. + * @param ivarsize Size of the variable type stored in the q in bytes. + * @param iqsize Number of slots of the q. + * @param istart Pointer to the array where the actual data of the q is stored. + */ +void osQInit(osQUEUE_t* q, size_t ivarsize, uint16_t iqsize, void* istart); -uint8_t osEnqueue(osQUEUE_t* rx_q, void* data); +/** Copy data to the q. + * + * @param q Q we are talking about. + * @param data Pointer to a local variable where data is stored. + * @retval 1 (data successfully copied) or 0 (q is full). + */ +uint8_t osEnqueue(osQUEUE_t* q, void* data); -uint8_t osDequeue(osQUEUE_t* tx_q, void* data); +/** Copy data from the q. + * + * @param q Q we are talking about. + * @param data Pointer to a local variable where the data from the q shall end up. + * @retval 1 (data successfully copied) or 0 (q is empty). + */ +uint8_t osDequeue(osQUEUE_t* q, void* data); #endif /* OS_QUEUES_H_ */ diff --git a/software/os/scheduler.c b/software/os/scheduler.c index 1446675..58f60b4 100644 --- a/software/os/scheduler.c +++ b/software/os/scheduler.c @@ -26,6 +26,11 @@ static uint32_t sys_clk = 0; /* Priority queues */ static osHeapNode_t ready_q[HEAP_SIZE]; +uint32_t osSchedulerGetSysT(void) +{ + return sys_clk; +} + /** Get the task which is running. * * @retval Pointer to TCB of the running task. @@ -45,13 +50,134 @@ static inline osTCB_t* osSchedulerGetRunningT(void) */ static void osSchedulerInit(void) { - /* A slot is defined empty when the fnc. pointer - points to the NULL pointer. */ - for(int i=0; i0; i--) + if( tasks[i].state == BLOCKED) { - if( tasks[i].state == BLOCKED) + if(tasks[i].wake_up <= sys_clk) { - if(tasks[i].wake_up <= sys_clk) - { - /* Wake up task and put - it into ready queue. */ - tasks[i].state = READY; - osHeapInsert(ready_q, &tasks[i]); - } + /* Wake up task and put + it into ready queue. */ + tasks[i].state = READY; + osHeapInsert(ready_q, &tasks[i]); } } } - flag ^= 1; + /* State machine of the scheduler. */ switch(state) { case S_INIT: - osPrintf("S_INIT\n"); + DEBUG_MSG("S_INIT\n"); state = S_EXECUTING_NO_TASK; break; case S_EXECUTING_TASK: - osPrintf("S_EXECUTING_TASK\n"); + DEBUG_MSG("S_EXECUTING_TASK\n"); break; case S_EXECUTING_NO_TASK: - osPrintf("S_EXECUTING_NO_TASK\n"); + DEBUG_MSG("S_EXECUTING_NO_TASK\n"); /* Check if queue is empty. */ if(osHeapIsEmpty(ready_q)) { @@ -193,7 +296,7 @@ void osRunScheduler(void) state = S_EXECUTING_NO_TASK; break; case S_IDELING: - osPrintf("S_IDELING\n"); + DEBUG_MSG("S_IDELING\n"); if(!osHeapIsEmpty(ready_q)) state = S_EXECUTING_NO_TASK; break; @@ -202,12 +305,12 @@ void osRunScheduler(void) void osPrintTask(uint8_t iindex) { - //osPrintf("Function Pointer:\t%d\n", tasks[iindex].fnc_ptr); - osPrintf("Name:\t\t\t%s\n", tasks[iindex].name); - //osPrintf("Arguments Pointer:\t%d\n", tasks[iindex].fnc_ptr); - //osPrintf("Priority:\t\t%d\n", tasks[iindex].priority); - //osPrintf("State:\t\t\t%d\n", tasks[iindex].state); - //osPrintf("Wake up:\t\t%d\n", tasks[iindex].wake_up); + //DEBUG_MSG("Function Pointer:\t%d\n", tasks[iindex].fnc_ptr); + DEBUG_MSG("Name:\t\t\t%s\n", tasks[iindex].name); + //DEBUG_MSG("Arguments Pointer:\t%d\n", tasks[iindex].fnc_ptr); + //DEBUG_MSG("Priority:\t\t%d\n", tasks[iindex].priority); + //DEBUG_MSG("State:\t\t\t%d\n", tasks[iindex].state); + DEBUG_MSG("Wake up:\t\t%d\n", tasks[iindex].wake_up); } void osPrintAllTasks(void) @@ -215,6 +318,6 @@ void osPrintAllTasks(void) for(int i=0; i 1) - asm("NOP"); - // TODO: Throw send buffer overflow error here - } + while(!usart2PutChar(word[i])){} + /* Did a overflow occur? */ + if(tx_overflow) + { + THROW_ERROR(E_USART_RX_BUFFER_OVERLOW); + } return 1; } @@ -133,8 +137,10 @@ uint8_t usart2GetString(uint8_t* word, size_t buff_size, size_t *string_size) if( *string_size < (buff_size-1) ) word[*string_size] = data; else + { + THROW_ERROR(E_BUFFER_OVERFLOW); return 0; - // TODO: Throw buffer overflow error. + } (*string_size)++; } while( (data != '\r') && (data != '\n') ); /* Append string termination. */ diff --git a/software/platform/usart.h b/software/platform/usart.h index 5174b14..71f677c 100644 --- a/software/platform/usart.h +++ b/software/platform/usart.h @@ -11,6 +11,8 @@ #include "stm32f10x.h" #include +#define USART_QUEUE_SIZE 1024 + void usart2Init(void); uint8_t usart2PutString(uint8_t* word, size_t size); uint8_t usart2GetString(uint8_t* word, size_t buff_size, size_t *string_size);

+ +
+
+ + +
+ +
+ +
+ +
+
error.h File Reference
+
+
+ +

Error logging functionalities of the operating system. +More...

+
#include "ostypes.h"
+#include "ossettings.h"
+
+Include dependency graph for error.h:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Macros

#define DEBUG_MSG(MSG, ...)
 
#define THROW_ERROR(ERROR_TYPE)   osPrintError(__FILE__, __LINE__, ERROR_TYPE)
 
#define THROW_WARNING(WARNING_TYPE)   osPrintWarning(__FILE__, __LINE__, WARNING_TYPE)
 
+ + + + + + + + + +

+Functions

uint8_t osExplainError (const char *ifile, const uint8_t iline, const osError_t ierror, char *iomessage)
 
uint8_t osPrintError (const char *ifile, const int iline, const osError_t ierror)
 
uint8_t osExplainWarning (const char *ifile, const uint8_t iline, const osWarning_t ierror, char *iomessage)
 
uint8_t osPrintWarning (const char *ifile, const int iline, const osWarning_t ierror)
 
+

Detailed Description

+

Error logging functionalities of the operating system.

+
Author
Maximilian Stiefel
+
Date
8 Jan 2018
+

Macro Definition Documentation

+ +

◆ DEBUG_MSG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DEBUG_MSG( MSG,
 ... 
)
+
+

Create smart debug messages, which are disable if DEBUG is not defined.

+ +
+
+ +

◆ THROW_ERROR

+ +
+
+ + + + + + + + +
#define THROW_ERROR( ERROR_TYPE)   osPrintError(__FILE__, __LINE__, ERROR_TYPE)
+
+

Throws an error given an error type.

+ +
+
+ +

◆ THROW_WARNING

+ +
+
+ + + + + + + + +
#define THROW_WARNING( WARNING_TYPE)   osPrintWarning(__FILE__, __LINE__, WARNING_TYPE)
+
+

Throws a warning given a warning type.

+ +
+
+

Function Documentation

+ +

◆ osExplainError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osExplainError (const char * ifile,
const uint8_t iline,
const osError_t ierror,
char * iomessage 
)
+
+

Creating a error message string from inter alia an error code.

+
Parameters
+ + + + + +
ifileFilename where error occurs.
ilineLine where error occurs.
ierrorError code.
messageMessage related to the error.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osExplainWarning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osExplainWarning (const char * ifile,
const uint8_t iline,
const osWarning_t ierror,
char * iomessage 
)
+
+

Creating a warning message string from inter alia a warning code.

+
Parameters
+ + + + + +
ifileFilename where warning occurs.
ilineLine where warning occurs.
ierrorWarning code.
messageMessage related to the warning.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osPrintError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osPrintError (const char * ifile,
const int iline,
const osError_t ierror 
)
+
+

Print error. This is where the error output can be redirected (later).

+
Parameters
+ + + + +
ifileFilename where error occurs.
ilineLine where error occurs.
ierrorError code.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+ +

◆ osPrintWarning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t osPrintWarning (const char * ifile,
const int iline,
const osWarning_t ierror 
)
+
+

Print warning. This is where the warning output can be redirected (later).

+
Parameters
+ + + + +
ifileFilename where warning occurs.
ilineLine where warning occurs.
ierrorWarning code.
+
+
+
Return values
+ + +
1(SUCCESS) or 0 (FAILURE).
+
+
+ +
+
+
+